A Binance Futures bot doesn’t need more signals first.
It needs state recovery.
Tested this on my VPS after a 30 second websocket disconnect. The signal layer came back fine, but the local position state was wrong. Binance showed exposure. The bot cache showed flat.
That’s how a “good” signal becomes duplicate risk.
What breaks:
• partial fill before disconnect
• websocket reconnect
• old local cache loads
• bot thinks position is closed
• next signal adds size again
Binance application:
For Futures bots, I don’t let the bot trade after reconnect until it pulls fresh position data from Binance and matches it against local order state.
Hard rule:
No new entry if exchange_position != local_position.
Kill-switch:
Pause the bot after 2 reconnect failures, 1 position mismatch, or any unknown order state.
Risk condition:
If the bot can’t rebuild state from Binance after reconnect, it has no business touching real size.
I added this to my pre-live checklist because screenshots never show this bug. Logs do. Ugly, but useful.
Most builders optimize entries. I’d start with exits and state recovery.
Do you log position mismatches, or only filled trades?