본문으로 건너뛰기

거래

주문을 넣고 취소하고, 포지션을 청산하고, 스톱로스와 테이크프로핏을 설정하고, 레버리지를 변경합니다.

이 페이지의 호출에는 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_typeprice가 있으면 limit, 없으면 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")

레버리지는 선물 전용입니다. 1 이상의 정수인 leverage, 또는 max나 smart인 mode 중 하나를 전달합니다.

레버리지 읽기

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로 응답합니다.

이 페이지의 내용