KeithNolo
KeithNolo

Reputation: 155

Wrong "symbol" Binance Api

I am trying to make a simple Trading bot to trade on Binance.

When the bot trys to place an order it doesn't go through and I get the following error: "BinanceAPIException: APIError(code=-1121): Invalid symbol."

As far as I can tell I have the correct ticker for Ethereum and USDT. I have been trying to find an answer for hours, but can't find anything that helps.

Thanks for your help in advance,

Please see the code below.

import websocket, json, pprint, talib, numpy
import config
import smtplib, ssl
from binance.client import Client
from binance.enums import *


# pip uninstall numpy

#comparing chosen coin with tether
SOCKET = "wss://stream.binance.com:9443/ws/ethusdt@kline_1m"
#RSI candle period
RSI_PERIOD = 14
#Overbought indicator
RSI_OVERBOUGHT = 70
#Oversold indicator
RSI_OVERSOLD = 30
#Trade symbol
TRADE_SYMBOL = 'ETHUSD'
#Amount to buy 
TRADE_QUANTITY = 0.00813
#Closes will be collected in a list
closes = []
#Don't own currency
in_position = False
#Client data
client = Client(config.API_KEY, config.API_SECRET, tld='us')
#Make an order
def order(side, quantity, symbol,order_type=ORDER_TYPE_MARKET):
    try:
        #Sending order to binance
        print("Sending order....")
        #order data
        order = client.create_order(symbol=symbol, side=side, type=order_type, quantity=quantity)
        #print order made
        print("Order completed!!!!")
        print(order)
    #Failed payment
    except Exception as e:
        print("an exception has occured - {}".format(e))
        return False

    return True

#Connection opened   
def on_open(ws):
    print('Opened connection')
#Connection closed   
def on_close(ws):
    print('Closed connection')
    
#Message recieved
def on_message(ws, message):
    global closes, in_position
    
    print('Incoming Message')
    json_message = json.loads(message)
    #Print in readable format
    pprint.pprint(json_message)

    candle = json_message['k']
    #Candle closed
    is_candle_closed = candle['x']
    close = candle['c']

    if is_candle_closed:
        #Print out candle closing data
        print("Candle closed at {}".format(close))
        closes.append(float(close))
        print("Closes: ")
        print(closes)
        #if number of closes is greater than the RSI period
        if len(closes) > RSI_PERIOD:
            #Get array of 14 closes
            np_closes = numpy.array(closes)
            rsi = talib.RSI(np_closes, RSI_PERIOD)
            print("RSI'S calculted so far: ")
            print(rsi)
            #Get the previous RSI DATA
            last_rsi = rsi[-1]
            print("The current RSI: {}".format(last_rsi))
            #if the previous RSI is greater than the overbought limit
            if last_rsi > RSI_OVERBOUGHT:
                if in_position:
                    print("{TRADE_SYMBOL} is OVERBOUGHT, SELLING!!!!!!!")
                    # TRIGGER SELL ORDER
                    order_succeeded = order(SIDE_SELL, TRADE_QUANTITY, TRADE_SYMBOL)
                    #IF SUCCESFULL
                    if order_succeeded:
                        in_position = False
                else:
                    print("NO {TRADE_SYMBOL} owned. DOING NOTHING!!!! ")
             #if the previous RSI is LESS than the oversold limit
            if last_rsi < RSI_OVERSOLD:
                if in_position:
                    print("{TRADE_SYMBOL} is OVERSOLD, but you already own this curreny. DOING NOTHING!!!!!.")
                else:
                    print("{TRADE_SYMBOL} is OVERSOLD, BUYING {TRADE_SYMBOL} !!!!!!!!!")
                    # buy logic
                    order_succeeded = order(SIDE_BUY, TRADE_QUANTITY, TRADE_SYMBOL)
                    #if buy successful
                    if order_succeeded:
                        in_position = True

#Web socket
ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
#KEEP RUNNING
ws.run_forever()

Upvotes: 4

Views: 8710

Answers (1)

Mike Malyi
Mike Malyi

Reputation: 1101

The error is on this line TRADE_SYMBOL = 'ETHUSD'. You need to change it to ETHUSDT

Upvotes: 3

Related Questions