V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ccclo
V2EX  ›  问与答

有没有大佬写币安机器人开源的

  •  
  •   ccclo · 237 天前 · 1928 次点击
    这是一个创建于 237 天前的主题,其中的信息可能已经有所发展或是发生改变。
    22 条回复    2023-09-15 14:30:36 +08:00
    worldquant
        1
    worldquant  
       237 天前
    为啥要自己造轮子呢。https://github.com/freqtrade/freqtrade
    zictos
        2
    zictos  
       237 天前
    别人的用起来感觉更复杂,自己写更简单。
    就是看一下币安的 api 文档,发送下 http 请求,需要用到什么 api 就使用具体的 api 就行,尽量做到代码非常简单。获取价格和 k 线,针对 k 线进行一些计算以及一些指标的计算,循环更新 k 线,然后满足交易条件了就通过 api 开仓,满足平仓条件了就通过 api 平仓。
    反正我总觉得看到别人的开源项目更复杂,压根不愿意去熟悉别人的项目,自己写的话需要什么就直接立刻上手了,每种需求的代码量都不多。
    ccclo
        3
    ccclo  
    OP
       237 天前
    @zictos 你有没有代码呀
    zictos
        4
    zictos  
       237 天前
    @ccclo #3 我的代码只适合我的具体策略的需求,所以可以很简单,开源项目才需要考虑通用性。
    而且我是做突破的,必须要先挂单(到达指定价格后市价触发开仓,非低买高卖的挂单),不然临时下市价单的话滑点会非常大,根本来不及。所以重点逻辑就是要处理好这种实时监控,成交后立刻设置止损并记录开仓信息,之后会每隔一段时间监控是否满足平仓条件。
    ccclo
        5
    ccclo  
    OP
       237 天前
    @zictos 可以给个联系方式吗
    zictos
        6
    zictos  
       237 天前
    @ccclo #5 这个不太方便,我一般都不在网上提供联系方式的,有什么问题你可以在帖子中问的
    ccclo
        7
    ccclo  
    OP
       237 天前
    那你帮我写一个 u 本位合约市价的 python 代码 和平仓 代码吗 我是用 chatgpt 写出来 下单不了,我只想要这两个代码 我在这两个代码中 在更改
    @zictos
    ccclo
        8
    ccclo  
    OP
       237 天前
    @zictos 我在币安的 api 上面看了一圈 不知道怎样下手写
    zictos
        9
    zictos  
       237 天前
    @ccclo #7 把****替换成四空格,或者让 chatgpt 帮你改。
    import time
    import requests
    import hmac
    import hashlib
    from urllib.parse import urljoin, urlencode


    def market_order(symbol, quantity, side, reduceOnly='false', loop=True):
    ****API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' #替换成自己的 API_KEY
    ****SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' #替换成自己的 SECRET_KEY
    ****BASE_URL = 'https://fapi.binance.com'
    ****headers = {'X-MBX-APIKEY': API_KEY}
    ****PATH = '/fapi/v1/order'
    ****url = urljoin(BASE_URL, PATH)
    ****params = {'symbol': symbol,
    ************ 'quantity': quantity,
    ************ 'side': side,
    ************ 'type': 'MARKET',
    ************ 'reduceOnly': reduceOnly}

    ****while True:
    ********try:
    ************if 'signature' in params:
    ****************del params['signature']
    ************params['timestamp'] = int(time.time()) * 1000
    ************query_string = urlencode(params)
    ************params['signature'] = hmac.new(SECRET_KEY.encode('utf-8'), query_string.encode('utf-8'), hashlib.sha256).hexdigest()
    ************r = requests.post(url, headers=headers, params=params, timeout=4)
    ************# print(r.text) # 查看响应文本
    ************if r.status_code == 200:
    ****************r = r.json()
    ****************return r['orderId']
    ************if not loop:
    ****************return None
    ********except BaseException as e:
    ************print(e)
    ************if not loop:
    ****************return None
    ********time.sleep(0.1)

    symbol = 'BNBUSDT' # 交易对
    quantity = 0.03 # 下单的数量
    side = 'BUY' # 下单的方向,BUY 或者 SELL
    order = market_order(symbol, quantity, side)
    ccclo
        10
    ccclo  
    OP
       237 天前
    @zictos 有没有平仓的代码 也给我发一份
    zictos
        11
    zictos  
       237 天前
    @ccclo #10 你在币安里面是设置了单向交易吧,默认就是单向交易,只要你没改过就行。

    如果你现在是有多单的持仓,你平仓只需要把方向 side 参数改为 SELL 就行了,如果数量一样的话默认就是平仓。你也可以将函数的 reduceOnly 参数设为'true',保险一点,这样就无论如何都不会增加仓位,当然你不设也可以。

    币安默认平仓都是要指定数量的,不过你可以设一个更大的数量,只要将 reduceOnly 设为 true 就不会增加仓位。比如你现在有 0.03 的多单,你下一个 0.3 的市价 SELL 单,并且 reduceOnly 设为 true ,也是会直接平仓的,并且不会增加仓位。
    ccclo
        12
    ccclo  
    OP
       237 天前
    好的谢谢
    @zictos
    Her0
        13
    Her0  
       237 天前
    不难的,就是调 API ,接入钉钉之后,听着赚钱的声音“叮叮叮”,你会敢到格外清脆。😄


    来源: https://heiyetouzi.xyz/biquanzhuanqian/
    ccclo
        14
    ccclo  
    OP
       236 天前
    @zictos 能在问个问题就是怎样把 tradingview 上面策略生成的信号发送到服务器
    zictos
        15
    zictos  
       236 天前
    @ccclo #14 这个我也没弄过,好像是要配置什么 Webhook ,tradingview 我只是用来看行情的,tradingview 上的策略大部分也是通过各种指标计算的,python 的 pandas_ta 库基本可以计算各种指标,如果策略比较复杂的话,那你要分析 tradingview 策略的代码,然后改写成 python 。我自己基本各种复杂的策略都可以直接通过 python 实现,关键是自己要弄清楚信号原理,别人的策略要是代码太复杂的话,我也没什么功夫去研究别人的策略的代码。

    使用 tradingview 通知的话,tradingview 上面有一个“警报”按钮,点击后可以选择你正在使用的策略,然后在通知里可以配置 Webhook URL ,这个要付费才行,其实应该也可以选择发送邮件,再 python 循环检测邮箱看有没有新邮件就行。不过具体我也没测试过,不知道具体有哪些坑。
    ccclo
        16
    ccclo  
    OP
       226 天前
    @zictos 你好我在想问下 这个下单数量 怎样改,我想把我余额全部下单,我试了好久 这个怎样改
    ccclo
        17
    ccclo  
    OP
       226 天前
    @Her0 你的代码可以分享吗
    zictos
        18
    zictos  
       226 天前 via Android
    quantity = 0.03
    之前的代码是上面这样的,这就是下单数量,bnb 是最低 0.03 ,也可以是 0.04 或 0.05 ,最多两位小数。btcusdt 是最少 0.001 ,最多三位小数,btc 现在价格 26500 左右,开 0.001 就大约是开仓了 26.5u 。你也可以把我所有说过的话发给 chatgpt 让它根据实际情况给出代码
    ccclo
        19
    ccclo  
    OP
       225 天前
    @zictos 有没有这个代码可以分享一下
    zictos
        20
    zictos  
       225 天前 via Android
    @ccclo 就是把上次的代码的数量改一下,都一样啊!
    ccclo
        21
    ccclo  
    OP
       225 天前
    @zictos 这个数量是要计算的吗,还是用 api 获取的
    zictos
        22
    zictos  
       225 天前 via Android
    @ccclo 看你自己想开多少啊,你想买一个比特币,数量自然是填 1 。
    你可以根据止损计算仓位,公式是最大亏损除以止损点数等于仓位大小。
    比如现在比特币价格 26500 美金,你止损放在 26000 美金的位置,你的止损就是 500 点,假设你最大只能亏 100 美金,那就是 100 美金/500=0.2 。数量填 0.2 ,这样一旦被止损就是亏 100 美金,如果有很多小数位数,要用 round 函数保留最多 3 位小数。
    具体怎么开,完全取决于你自己,你也可以每次都开固定数量。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1315 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:57 · PVG 07:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.