pythonccxt

ccxt OKEx placing orders


I placed DEMO order on OKEx with amount 246 and price 0.46. When I looked on site, order amount was more than 11k:enter image description here

I fetched info about order:

{'info': {'accFillSz': '0', 'avgPx': '', 'cTime': '1652262833825', 'category': 'normal', 'ccy': '', 'clOrdId': 'e847386590ce4dBCc812b22b16d7807c', 'fee': '0', 'feeCcy': 'USDT', 'fillPx': '', 'fillSz': '0', 'fillTime': '', 'instId': 'XRP-USDT-SWAP', 'instType': 'SWAP', 'lever': '1', 'ordId': '444557778278035458', 'ordType': 'limit', 'pnl': '0', 'posSide': 'long', 'px': '0.45693', 'rebate': '0', 'rebateCcy': 'USDT', 'side': 'buy', 'slOrdPx': '-1', 'slTriggerPx': '0.44779', 'slTriggerPxType': 'mark', 'source': '', 'state': 'live', 'sz': '246', 'tag': '', 'tdMode': 'isolated', 'tgtCcy': '', 'tpOrdPx': '-1', 'tpTriggerPx': '0.46606', 'tpTriggerPxType': 'mark', 'tradeId': '', 'uTime': '1652262833825'}, 'id': '444557778278035458', 'clientOrderId': 'e847386590ce4dBCc812b22b16d7807c', 'timestamp': 1652262833825, 'datetime': '2022-05-11T09:53:53.825Z', 'lastTradeTimestamp': None, 'symbol': 'XRP/USDT:USDT', 'type': 'limit', 'timeInForce': None, 'postOnly': None, 'side': 'buy', 'price': 0.45693, 'stopPrice': 0.44779, 'average': None, 'cost': 0.0, 'amount': 246.0, 'filled': 0.0, 'remaining': 246.0, 'status': 'open', 'fee': {'cost': 0.0, 'currency': 'USDT'}, 'trades': [], 'fees': [{'cost': 0.0, 'currency': 'USDT'}]}

and amount is 246.

Here is my code:

exchange = ccxt.okx(
    {
        'apiKey': API_KEY,
        'secret': API_SECRET,
        'password': API_PASSPHRASE,
        'options': {
            'defaultType': 'swap'
        },
        'headers': {
            'x-simulated-trading': '1'
        }
}

exchange.load_markets()
market = exchange.market(PAIR)
params = {
    'tdMode': 'isolated',
    'posSide': 'long',
    'instId': market['id'],
    'side': 'buy',
    'sz': 246,
    'tpOrdPx': '-1',
    'slOrdPx': '-1',
    'tpTriggerPx': str(take_profit),
    'slTriggerPx': str(stop_loss),
    'tpTriggerPxType': 'mark',
    'slTriggerPxType': 'mark',
}
order = exchange.create_order(
    f"{PAIR}", ORDER_TYPE, 'buy', summa, price, params=params)
info = exchange.fetch_order(order['id'], PAIR)
print(info)

What I'm doing wrong?


Solution

  • For starters you can only buy multiples of 100 of XRP as you can see in the screenshot below so you can only buy 200 or 300 and not 246.

    enter image description here

    Secondly, it looks like there's a multiplier of 100 being applied in the api where 1 = 100 XRP. I was able to deduce this by entering 24,600 XRP which gives you around $11k that you mentioned.

    In your case, if you were to buy 200 or 300 XRP, you would need to enter 2 or 3 as an amount in the api request.

    enter image description here