Help plz. Code 2022 ReduceOnly Order (FULL INFORMATION)

Part of my code.
Hedge mode.

let orders = [{
symbol: ${pair.pair},
positionSide: ‘LONG’,
side: ‘SELL’,
type: ‘MARKET’,
quantity: ${pair.amount}
},
{
symbol: ${pair.pair},
positionSide: ‘SHORT’,
side: ‘BUY’,
type: ‘MARKET’,
quantity: ${pair.amount}
}
]
console.info(await binance.futuresMultipleOrders(orders))

Let’s start. Opened two positions. All fine

     Pair: GTCUSDT

step 1 - LONG POSITION - CLOSE. All fine

[3:47: LONG STOPLOSS IS ACTIVATED.
------------------- CLOSE LONG -------------------
[
[Object: null prototype] {
orderId: 356839251,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘mx0n7ikwrUMLPMq8vxN6QA0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: true,
closePosition: false,
side: ‘SELL’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634690835506
}
]
------------------- COMPLETE -------------------

step 1-1 (WTF???) why is it trying to close position long again ??? This is an extra step, it is not in the code.

But the most surprising thing is that this error has no effect, because it is associated with the closure of a long position. Therefore, you can ignore it.

Nothing happens in binance either.

Move on.

[3:47: LONG STOPLOSS IS ACTIVATED.
------------------- CLOSE LONG -------------------
[
[Object: null prototype] {
code: -2022,
msg: ‘ReduceOnly Order is rejected.’
}
]
------------------- COMPLETE -------------------
(node: 8064) UnhandledPromiseRejectionWarning: Error: ESOCKETTIMEDOUT
at ClientRequest. (C: \ Users \ Administrator \ Desktop \ new Botk \ node_modules \ request \ request.js: 816: 19)
at Object.onceWrapper (events.js: 519: 28)
at ClientRequest.emit (events.js: 400: 28)
at TLSSocket.emitRequestTimeout (_http_client.js: 790: 9)
at Object.onceWrapper (events.js: 519: 28)
at TLSSocket.emit (events.js: 412: 35)
at TLSSocket.Socket._onTimeout (net.js: 495: 8)
at listOnTimeout (internal / timers.js: 557: 17)
at processTimers (internal / timers.js: 500: 7)
(node: 8064) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch (). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections = strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 168)

step 3 - all fine. We closing last opened position SHORT and re-open orders short + long

------------------- CLOSE SHORT -------------------
[
[Object: null prototype] {
orderId: 356846054,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘tEGpn16ZLUMMRvqQ4Cgvke0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: true,
closePosition: false,
side: ‘BUY’,
positionSide: ‘SHORT’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634690866860
}
]

First step CLOSE SHORT. All fine. Next Step opening new orders long + short. As well good.

[
[Object: null prototype] {
orderId: 356846195,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘z2EU16r78TWMmlebGRFgeS0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘BUY’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634690867648
},
[Object: null prototype] {
orderId: 356846196,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘xYlmrceAGHb2pbe7l00uLI1’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘SELL’,
positionSide: ‘SHORT’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634690867648
}
]

step 4 - If you forget about step 1-1, everything is still working.

[4:19: SHORT STOPLOSS IS ACTIVATED.
------------------- CLOSE SHORT -------------------
StopLossLong GTCUSDT OLD: 10.920364
StopLossLong GTCUSDT NEW: 10.920364
[
[Object: null prototype] {
orderId: 357138829,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘3NwwIA1jDEod5QPLogozWg0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: true,
closePosition: false,
side: ‘BUY’,
positionSide: ‘SHORT’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692792725
}
]

step 4-1 - as in the previous error, the script tries to close the position once again and we get 2022. But now the bot closes the short position and everything will not go on so sweetly.

[4:20: SHORT STOPLOSS IS ACTIVATED.
------------------- CLOSE SHORT -------------------
StopLossLong GTCUSDT OLD: 10.920364
StopLossLong GTCUSDT NEW: 10.920364
[
[Object: null prototype] {
code: -2022,
msg: ‘ReduceOnly Order is rejected.’
}
]

step 5 - let’s begin

[4:21: LONG STOPLOSS IS ACTIVATED.
------------------- GTCUSDT CLOSE LONG -------------------

step 5-1 - every step same on binance. Was check every orderID.
ALL FINE

[
[Object: null prototype] {
orderId: 357149834,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘jipgN97TiAyS8jaVQ11i3c0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: true,
closePosition: false,
side: ‘SELL’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692861874
}
]

step 5-2 - there is one and it works correctly.
ALL FINE

[
[Object: null prototype] {
orderId: 357150011,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘bsnZaq41mZijGSREARACfl0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘BUY’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692862556
},

step 5-3 - there is such and it works correctly.
ALLFINE

[Object: null prototype] {
orderId: 357150014,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘CxutW8GyscQVSkTo2gHYyF1’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘SELL’,
positionSide: ‘SHORT’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692862557
}
]

step 6 - The script step 5 starts same time again, but why ??? Just because we got error step 4-1. So, we repeat the scenario for closing a long position and opening new orders.

And the funny thing is that the same error step 1-1 had no consequences.

Let’s see what happened.

  1. The script closes the newly opened position long. Closes just for fun. Okay, now on Binance I got only 1 work position short

[4:21: LONG STOPLOSS IS ACTIVATED.
------------------- GTCUSDT CLOSE LONG -------------------
[
[Object: null prototype] {
orderId: 357152067,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘Z22qKoYVibgSER71vJbDPY0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: true,
closePosition: false,
side: ‘SELL’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692875260
}
]

step 6-1 - Okay, we just closed the long position and are now entering the long position again.

[
[Object: null prototype] {
orderId: 357152130,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘sCu4TbNFR4yIf79kSLRqHu0’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘BUY’,
positionSide: ‘LONG’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692875955
},

step 6-2 - And now about the bad. Another short position opens, but I still have a working short position and now there will be two.

[Object: null prototype] {
orderId: 357152129,
symbol: ‘GTCUSDT’,
status: ‘NEW’,
clientOrderId: ‘Na6dfiJl9T8Rya9oRyrH5e1’,
price: ‘0’,
avgPrice: ‘0.0000’,
origQty: ‘1’,
executedQty: ‘0’,
cumQty: ‘0’,
cumQuote: ‘0’,
timeInForce: ‘GTC’,
type: ‘MARKET’,
reduceOnly: false,
closePosition: false,
side: ‘SELL’,
positionSide: ‘SHORT’,
stopPrice: ‘0’,
workingType: ‘CONTRACT_PRICE’,
priceProtect: false,
origType: ‘MARKET’,
updateTime: 1634692875955
}
]

Then the script forgets about orderId: 357150014 and only works with orderId: 357152129.

Thanks to all, I’ll get liquidation for orderId: 357150014

Hi,

Unfortunately I do not understand what the question is.

Could you provide what you intend on doing, what the expected outcome is, what the actual outcome is and the steps taken to achieve the actual outcome?

Also, including the endpoints used along with the parameters passed can help us diagnose the issue further.

Goal 1
Open long
Open short

Goal 2
Close unprofitable position

Goal 3
If the second position is not profitable, close

Goal 4
Open long
Open short

Example:

Step 1
Open long 10000
Open short 10100

Step 2
Current price 10200
Close short

Step 3
Current price 9900
Close long

Step 4
No open positions
Open long 9899
Open short 9900

Example trouble:

Step 1
Open long
Open short

Step 2*
Close short
Close short AGAIN!!! [Getting code 2022]

Step 3
Close long

Step 4
Open long
Open short
Close long AGAIN!!! [Bcoz already code 2022]
Open long AGAIN!!! [After close short pos]
Open short AGAIN!!! [At step 2]

as a result, we have one extra short position and the script does not work with prelast opened short position

I added msleep 5000 after every trading action. Now I get errors on the command line very rarely and there are no errors in binance at all.
2 hours
35 coins
3 code 2022 terminal
0 wrong actions in Binance app

The issue seems to stem from the implementation rather than the API.

Are you using a specific library?

I suggest going through the code and making sure it is written correctly.

I removed your previous comment for security concerns since you attached an unknown script.

As stated previously, there is no issue with the API itself and we cannot help with client’s code implementation as it requires too much resources to understand the design.

I suggest adding unit tests to your solution or debug the application step by step until you find the cause.

So? What i can do? My skill scripts very low aswell as english. But i wanna “find the cause”…