Я использую библиотеку Python-binance для размещения ордера STOP_MARKET на Binance Futures. Вызов API успешен и возвращает действительный ответ заказа с algoId. Однако заказ появляется на вкладке «Условно» пользовательского интерфейса всего на 1–2 секунды, а затем полностью исчезает. Он не заполнен и не отменяется моим собственным кодом.
Вот код, демонстрирующий проблему:
import time
from binance.client import Client
# --- Prerequisites ---
# 1. pip install python-binance
# 2. Have an open LONG position in your Futures account for the symbol below.
# 3. Replace with your actual API keys.
API_KEY = "xxxxxxxxxxxxxxxxx"
API_SECRET = "xxxxxxxxxxxxxxxxxx"
client = Client(API_KEY, API_SECRET)
symbol = 'BTCUSDT'
position_side = 'LONG'
order_side = 'SELL'
quantity = 0.001
try:
ticker = client.futures_symbol_ticker(symbol=symbol)
last_price = float(ticker['price'])
stop_price = round(last_price * 0.90, 2) # Set stop 10% below current price
print(f"Current Last Price: {last_price}")
print(f"Placing STOP_MARKET order with stopPrice: {stop_price}")
params = {
'symbol': symbol,
'side': order_side,
'positionSide': position_side,
'type': 'STOP_MARKET',
'quantity': str(quantity),
'stopPrice': str(stop_price),
'workingType': 'CONTRACT_PRICE'
}
order_response = client.futures_create_order(**params)
print("\n--- SUCCESS: Order was accepted by Binance ---")
print(order_response)
algo_id = order_response.get('algoId')
print("\nWaiting 10 seconds to check if order persists...")
time.sleep(10)
open_orders = client.futures_get_all_algo_orders(symbol=symbol)
found_order = False
for order in open_orders:
if order.get('algoId') == algo_id:
print("\n--- GOOD: Order is still active! ---")
print(order)
found_order = True
break
if not found_order:
print("\n--- PROBLEM: The order has disappeared! ---")
print("`futures_get_all_algo_orders` no longer shows the order.")
except Exception as e:
print(f"An API error occurred: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Как вы можете видеть, он создает порядок, я не уверен, действителен он или нет, но он исчезает и появляется снова примерно через час.
Что я исключил:
Я потратил значительное количество времени на отладку этого и исключил наиболее распространенные причины:
Немедленный триггер: проблема сохраняется даже при установке stopPrice очень далеко от текущих markPrice и LastPrice. Это не проблема «Заказ сработает немедленно».
Цикл отмены бота: заказ исчезает, даже если сценарий завершается сразу после успешного вызова API. Мой код не отменяет его.
Опечатки параметров: я подтвердил, что все имена параметров (например, stopPrice) имеют верблюжий регистр и соответствуют документации API.
Я использую библиотеку Python-binance для размещения ордера STOP_MARKET на Binance Futures. Вызов API успешен и возвращает действительный ответ заказа с algoId. Однако заказ появляется на вкладке «Условно» пользовательского интерфейса всего на 1–2 секунды, а затем полностью исчезает. Он не заполнен и не отменяется моим собственным кодом. Вот код, демонстрирующий проблему: [code]import time from binance.client import Client
# --- Prerequisites --- # 1. pip install python-binance # 2. Have an open LONG position in your Futures account for the symbol below. # 3. Replace with your actual API keys.
found_order = False for order in open_orders: if order.get('algoId') == algo_id: print("\n--- GOOD: Order is still active! ---") print(order) found_order = True break
if not found_order: print("\n--- PROBLEM: The order has disappeared! ---") print("`futures_get_all_algo_orders` no longer shows the order.")
except Exception as e: print(f"An API error occurred: {e}") except Exception as e: print(f"An unexpected error occurred: {e}") [/code] фактический результат: [code]{'algoId': 3000000037772404, 'clientAlgoId': 'x-Cb7ytekJ5c703583f0b0aa50586a22', 'algoType': 'CONDITIONAL', 'orderType': 'STOP_MARKET', 'symbol': 'BTCUSDT', 'side': 'SELL', 'positionSide': 'LONG', 'timeInForce': 'GTC', 'quantity': '0.001', 'algoStatus': 'NEW', 'triggerPrice': '81161.19', 'price': '0.00', 'icebergQuantity': None, 'selfTradePreventionMode': 'EXPIRE_MAKER', 'workingType': 'CONTRACT_PRICE', 'priceMatch': 'NONE', 'closePosition': False, 'priceProtect': False, 'reduceOnly': True, 'createTime': 1765569260163, 'updateTime': 1765569260163, 'triggerTime': 0, 'goodTillDate': 0} [/code] Как вы можете видеть, он создает порядок, я не уверен, действителен он или нет, но он исчезает и появляется снова примерно через час. Что я исключил: Я потратил значительное количество времени на отладку этого и исключил наиболее распространенные причины: [list] [*]Немедленный триггер: проблема сохраняется даже при установке stopPrice очень далеко от текущих markPrice и LastPrice. Это не проблема «Заказ сработает немедленно».
[*]Цикл отмены бота: заказ исчезает, даже если сценарий завершается сразу после успешного вызова API. Мой код не отменяет его.
[*]Опечатки параметров: я подтвердил, что все имена параметров (например, stopPrice) имеют верблюжий регистр и соответствуют документации API.