Торгівля
Ставте й скасовуйте заявки, закривайте позиції, задавайте стоп-лос і тейк-профіт, змінюйте плече.
Викликам на цій сторінці потрібне право trading:write. Ціни й суми —
десяткові рядки.
Реальні гроші. Ці виклики надсилають на біржу реальні заявки через термінал, і підтвердження немає. Щоб негайно зупинити програму, вимкніть Local API в терміналі.
Поставити заявку
accepted = terminal.place_order(
12,
"binance:futures:BTCUSDT",
side="buy",
order_type="limit",
price="60000",
size="0.001",
client_key="bot-42",
)
print(accepted.key)| Аргумент | Значення |
|---|---|
order_type | limit із price або market без неї. У TypeScript — type. |
size або notional | Рівно одне з двох: сума в базовій монеті або у валюті котирування. |
reduce_only, post_only | Необов’язкові, типово false. |
time_in_force | Необов’язковий: gtc, ioc, fok або post_only. |
Завжди передавайте client_key. Повтор із тим самим ключем повертає першу
відповідь і нічого не ставить, тож повторна спроба ніколи не поставить
заявку двічі. Термінал пам’ятає останні 1000 ключів.
Передавайте ціни й обсяги рядками. Python відхиляє float.
Перевірити результат
# accepted is the answer of place_order
orders = terminal.account_orders(12)
order = next((o for o in orders.data if o.key == accepted.key), None)
if order:
print(order.status, order.exchange_id, order.filled)Відповідь accepted означає, що термінал прийняв команду. Вона не
означає, що біржа прийняла заявку або виконала її. Результат читайте з
рахунку: заявка з’являється там під своїм key.
Щоб обійтися без опитування, підпишіться на account.orders до того, як
ставити заявку. Див. Рахунок.
Скасувати заявку
terminal.cancel_order(12, "binance:futures:BTCUSDT", "t-173029440000000001")
terminal.cancel_all(12, "binance:futures:BTCUSDT")Перший виклик приймає ключ заявки в терміналі або її id на біржі.
Надсилайте його після того, як заявка покаже exchange_id у рахунку.
Скасування заявки в стані pending нічого не знаходить на біржі, і заявка
залишається.
Другий виклик скасовує всі заявки інструмента. Тригерні заявки залишаються.
Закрити позицію
terminal.close_position(12, "binance:futures:BTCUSDT")На ф’ючерсах термінал надсилає ринкову заявку на обсяг позиції. На споті він скасовує всі заявки інструмента й закриває позицію однією командою.
Поставити стоп-лос або тейк-профіт
stop_loss = terminal.place_trigger(
12, "binance:futures:BTCUSDT", kind="stop_loss", trigger_price="59000", client_key="sl-42"
)
print(stop_loss.key)kind — це stop_loss або take_profit. Обидва ставляться на відкриту
позицію: термінал бере з неї сторону й обсяг.
Поставити стоп
stop = terminal.place_trigger(
12,
"binance:futures:BTCUSDT",
kind="stop",
side="sell",
notional="800",
trigger_price="59000",
rule="price_below_or_equal",
)
print(stop.key)Стоп — це окрема заявка. Йому потрібні власні side і notional, сума у
валюті котирування. rule необов’язковий: типово стоп стоїть вище ринку
для купівлі й нижче для продажу.
Перенести тригер
for trigger in terminal.account_orders(12).triggers:
print(trigger.id, trigger.client_id, trigger.trigger_price)
terminal.amend_trigger(12, "binance:futures:BTCUSDT", 42, kind="stop_loss", trigger_price="58500")Тригер переносять і скасовують за його числовим id з рахунку, а не за
ключем. Його client_id там — це key, який ви отримали, коли ставили
тригер.
Термінал замінює тригер новим. Передайте kind ще раз, а для стопа — і
side.
Скасувати тригер
terminal.cancel_trigger(12, "binance:futures:BTCUSDT", 42)
terminal.cancel_all_triggers(12, "binance:futures:BTCUSDT")Другий виклик скасовує всі тригери інструмента. Звичайні заявки залишаються.
Змінити плече
terminal.set_leverage(12, "binance:futures:BTCUSDT", leverage=20)
terminal.set_leverage(12, "binance:futures:BTCUSDT", mode="max")Плече є лише на ф’ючерсах. Передайте або leverage, ціле число від 1,
або mode, тобто max чи smart.
Прочитати плече
leverage = terminal.leverage(12, "binance:futures:BTCUSDT")
print(leverage.leverage, leverage.max_leverage, leverage.mode, leverage.margin_mode)Цьому виклику потрібне право account:read. Він відповідає
409 not_active, поки інструмент не відкривали в терміналі або не
задавали його плече.
Змінити режим маржі
terminal.set_margin_mode(12, "binance:futures:BTCUSDT", "isolated")Режим — cross або isolated. Біржа відхиляє зміну, поки відкрито
позицію, і відповідь accepted цього не показує.
Коли виклик не вдається
| Що відбувається | Що ви отримаєте | Що робити |
|---|---|---|
| Підключення вимкнене, лише для читання або не має ключів | 409 not_tradable | Використати торгове підключення |
| Неправильний аргумент або заявка, менша за мінімум біржі | 400 invalid_request | Виправити запит |
| Немає відкритої позиції, яку можна закрити або захистити | 400 invalid_request | Спершу прочитати позиції |
| Понад 10 торгових команд за секунду на весь термінал | 429 rate_limited | Сповільнитися, див. Ліміти |
| Термінал надто зайнятий, щоб прийняти команду | 503 unavailable | Її не надіслано. Надіслати ще раз |
| Термінал не має тригерних заявок для цієї біржі | 501 unsupported | Повторювати немає сенсу |
Що недоступно
Торгівля на Московській біржі (MOEX) недоступна: кожен виклик для
інструмента moex: відповідає 501 unsupported.