币安 API 下单

时间:2021-03-28 20:23:26

标签: bitcoin algorithmic-trading cryptocurrency binance backtrader

我目前正在使用 Binance API 开发交易机器人。我正在尝试实施 Golden Cross 策略(不确定这是否与我的问题相关),并且条件似乎已正确实施。我一次只下一个订单,所以我没有达到我账户的最大订单数量。我的问题是币安客户端的 order() 方法在达到触发信号时无法卖出。 有没有其他人有这样的问题?你知道什么会导致这样的问题吗?我要离开由网络套接字应用程序调用的 on_message() 方法。 我期待着富有成效的讨论。请告诉我是否有什么我可以在我的问题中更好地表述的内容。 提前致谢。

def on_message(ws,message):
global in_position
global closes
json_message = json.loads(message)
print("message received")

candle = json_message["k"]
is_candle_closed = candle["x"]
close = candle["c"]

if is_candle_closed :

    closes.append(float(close))
    print("length of closes : ",len(closes))

    # print("Closes : ", closes[-7:-1])

    if len(closes) > ema_short_period:

        np_closes = numpy.array(closes)
        ema_short = talib.EMA(np_closes, ema_short_period)

        print("length 5 EMA : ",len(ema_short))
        # print("the current {} periods EMAs :".format(ema_short_period),ema_short[-7:-1])

        if len(closes) > ema_long_period:

            ema_long = talib.EMA(np_closes, ema_long_period)

            print("length 10 EMA : ", len(ema_long))
            # print("the current {} periods EMAs :".format(ema_long_period), ema_long[-7:-1])

            if ema_long[-3] > ema_short[-3] and ema_long[-2] < ema_short[-2]:
                if ema_long[-1] < ema_short[-1]:
                    print("buy signal")
                    if in_position:
                        print("but already in position")
                    else:
                        order_succeeded = order(SIDE_BUY, TRADE_QUANTITY, TRADE_SYMBOL)
                        print("##################### BUY placed #####################")

                        if order_succeeded:
                            in_position = True
                            position_buy = closes[-1]
                            print("--------------------------------@",position_buy)

            if ema_long[-2] < ema_short[-2] and ema_long[-1] > ema_short[-1]:
                print("sell signal")
                if in_position:
                    print("##################### SELL placed #####################")
                    order_succeeded = order(SIDE_SELL, TRADE_QUANTITY, TRADE_SYMBOL)
                    print(order_succeeded)
                    if order_succeeded:
                        in_position = False
                else:
                    print("but no open position available to sell")

0 个答案:

没有答案