我目前正在使用 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")