Количество торговых ботов Binance

#python #binance

Вопрос:

Я следил за учебником в Интернете и сумел запустить своего торгового бота на binance, на самом деле у меня есть 3 на ходу. Однако я знаю, что могу купить, но пока я еще не достиг позиции продажи. Так что я не вижу, чтобы это сработало. Я также пытался улучшить свой код. Мне интересно, есть ли лучший способ сделать то, что я пытаюсь сделать. Цель, очевидно, состоит в том, чтобы попытаться получить какую-то прибыль. То, что меня больше всего смущает, — это мои BUY_TRADE_QUANTITY и SELL_TRADE_QUANTITY. Конечно, это было бы то же самое, что и TRADE_QUANTITY? Если бы кто-нибудь мог помочь мне понять, как это должно работать, или предложить какие-либо настройки, над которыми я мог бы работать, это было бы здорово.

 SOCKET = "wss://stream.binance.com:9443/ws/rsrusdt@kline_1m"
RSI_PERIOD = 14
RSI_OVERBOUGHT = 70
RSI_OVERSOLD = 30
TRADE_SYMBOL = 'RSRUSDT'
TRADE_QUANTITY = 432.8
BUY_QUANTITY = 20.00
SELL_QUANTITY = 20.00

closes = []
in_position = False

client = Client(config.API_KEY, config.API_SECRET)

def order(side, quantity, symbol,order_type=ORDER_TYPE_MARKET):
    try:
        print("sending order")
        order = client.create_order(symbol=symbol, side=side, type=order_type, quantity=quantity)
        print(order)
    except Exception as e:
        print("an exception occured - {}".format(e))
        return False

    return True

    
def on_open(ws):
    print('opened connection')

def on_close(ws):
    print('closed connection')

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

    candle = json_message['k']

    is_candle_closed = candle['x']
    close = candle['c']

    if is_candle_closed:
        print("candle closed at {}".format(close))
        closes.append(float(close))
        print("closes")
        print(closes)

        if len(closes) > RSI_PERIOD:
            np_closes = numpy.array(closes)
            rsi = talib.RSI(np_closes, RSI_PERIOD)
            print("all rsis calculated so far")
            print(rsi)
            last_rsi = rsi[-1]
            print("the current rsi is {}".format(last_rsi))

            if last_rsi > RSI_OVERBOUGHT:
                if SELL_QUANTITY < BUY_QUANTITY and in_position:
                    print("Can execute buy trade. You will loose money")
                    in_position = False
                elif SELL_QUANTITY > BUY_QUANTITY and in_position:
                    print("Overbought and profit opportunity! Sell! Sell! Sell!")
                    # put binance sell logic here
                    order_succeeded = order(SIDE_SELL, TRADE_QUANTITY, TRADE_SYMBOL)
                    if order_succeeded:
                        in_position = False
                else:
                    print("It is overbought, but we don't own any. Nothing to do.")
            
            if last_rsi < RSI_OVERSOLD:
                if in_position:
                    print("It is oversold, but you already own it, nothing to do.")
                else:
                    print("Oversold! Buy! Buy! Buy!")
                    # put binance buy order logic here
                    order_succeeded = order(SIDE_BUY, TRADE_QUANTITY, TRADE_SYMBOL)
                    if order_succeeded:
                        in_position = True

                
ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
ws.run_forever()
 

Комментарии:

1. попробуйте сначала начать с рефакторинга on_message.

2. Не уверен, что это было то, чем я был после рефакторинга, вероятно, произойдет после того, как я узнаю, что бот работает так, как должен, и когда у меня будут правильные настройки. Это своего рода то, где я нахожусь после того, как все это сработает в первую очередь. Как упоминалось в моем резюме, я был сбит с толку и до сих пор не понимаю, как работают ПРОДАЖИ и ПОКУПКИ и какими должны быть эти переменные.