有没有大佬写币安机器人开源的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ccclo
V2EX    问与答

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

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

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

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


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

    使用 tradingview 通知的话,tradingview 上面有一个“警报”按钮,点击后可以选择你正在使用的策略,然后在通知里可以配置 Webhook URL ,这个要付费才行,其实应该也可以选择发送邮件,再 python 循环检测邮箱看有没有新邮件就行。不过具体我也没测试过,不知道具体有哪些坑。
    ccclo
        16
    ccclo  
    OP
       2023-09-14 19:16:56 +08:00
    @zictos 你好我在想问下 这个下单数量 怎样改,我想把我余额全部下单,我试了好久 这个怎样改
    ccclo
        17
    ccclo  
    OP
       2023-09-14 19:17:27 +08:00
    @Her0 你的代码可以分享吗
    zictos
        18
    zictos  
       2023-09-14 21:21:21 +08:00 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
       2023-09-15 08:34:00 +08:00
    @zictos 有没有这个代码可以分享一下
    zictos
        20
    zictos  
       2023-09-15 12:41:34 +08:00 via Android
    @ccclo 就是把上次的代码的数量改一下,都一样啊!
    ccclo
        21
    ccclo  
    OP
       2023-09-15 14:02:18 +08:00
    @zictos 这个数量是要计算的吗,还是用 api 获取的
    zictos
        22
    zictos  
       2023-09-15 14:30:36 +08:00 via Android
    @ccclo 看你自己想开多少啊,你想买一个比特币,数量自然是填 1 。
    你可以根据止损计算仓位,公式是最大亏损除以止损点数等于仓位大小。
    比如现在比特币价格 26500 美金,你止损放在 26000 美金的位置,你的止损就是 500 点,假设你最大只能亏 100 美金,那就是 100 美金/500=0.2 。数量填 0.2 ,这样一旦被止损就是亏 100 美金,如果有很多小数位数,要用 round 函数保留最多 3 位小数。
    具体怎么开,完全取决于你自己,你也可以每次都开固定数量。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2271 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:10 PVG 12:10 LAX 20:10 JFK 23:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86