Bitmex | 주문 넣는 방법
Bitmex REST API는 public 및 private 엔드포인트를 제공합니다. Private 엔드포인트는 거래의 보안을 강화하기 위해 메시지에 서명할 것을 요구합니다.
먼저 Bitmex 계정에 로그인하고 새 API를 생성해야 합니다. 다음 값을 얻게 됩니다:
이 필드는 Bitmex API 클라이언트 구성 요소의 Bitmex 속성에서 구성해야 합니다. 구성되면 Bitmex REST API에 비공개 요청을 시작할 수 있습니다.
Order Types
모든 주문에는 심볼이 필요합니다. 다른 모든 필드는 별도로 명시되지 않는 한 선택 사항입니다.
유효한 ordTypes는 다음과 같습니다:
- Limit: 기본 주문 유형입니다. orderQty와 price를 지정하십시오.
- Market: 전통적인 Market 주문입니다. Market 주문은 체결되거나 bankruptcy 가격에 도달할 때까지 실행되며, 그 시점에서 취소됩니다.
- Stop: Stop Market 주문입니다. orderQty와 stopPx를 지정하십시오. stopPx에 도달하면 주문이 호가창에 등록됩니다.
- 매도 주문의 경우, 트리거 가격이 stopPx보다 낮으면 주문이 트리거됩니다. 매수 주문의 경우 더 높을 때 트리거됩니다.
- 참고: Stop 주문은 트리거될 때까지 마진을 소비하지 않습니다. 주문이 완전히 트리거될 수 있도록 계정에 필요한 마진이 충분한지 확인하십시오.
- Close Stops는 orderQty가 필요하지 않습니다. 아래의 Execution Instructions를 참조하십시오.
- StopLimit: Stop Market와 같지만 Market 주문 대신 Limit 주문을 진입시킵니다. orderQty, stopPx 및 price를 지정하십시오.
- MarketIfTouched: Stop과 유사하지만 트리거가 반대 방향으로 수행됩니다. Take Profit 주문에 유용합니다.
- LimitIfTouched: 위와 동일합니다. Take Profit Limit 주문에 사용하십시오.
- Pegged: Pegged 주문을 사용하면 사용자가 현재 시장 가격에 상대적인 limit price를 제출할 수 있습니다. pegPriceType과 pegOffsetValue를 지정하십시오.
- Pegged 주문은 execInst가 Fixed여야 합니다. 이는 주문이 수락될 때 limit price가 설정되고 참조 가격이 변경되어도 변경되지 않음을 의미합니다.
- PrimaryPeg: 가격이 near touch 가격에 상대적으로 설정됩니다.
- MarketPeg: 가격이 far touch 가격에 상대적으로 설정됩니다.
- ordType 없이 제출된 pegPriceType은 Pegged 주문으로 처리됩니다.
Execution Instructions
다음 execInst가 지원됩니다. 여러 개를 사용하는 경우 쉼표로 구분하십시오(예: LastPrice,Close).
- ParticipateDoNotInitiate: Post-Only order라고도 합니다. 이 주문이 배치 시 실행될 경우 대신 취소됩니다. 이는 주문이 전송 중일 때 far touch가 사용자 쪽으로 이동하는 것으로부터 보호하기 위한 것입니다. 제출 후 far touch가 멀어지는 것에 대해 투기하기 위한 것이 아닙니다. 우리는 그러한 행동을 남용으로 간주하고 모니터링합니다.
- MarkPrice, LastPrice, IndexPrice: stop 및 if-touched 주문에서 트리거 가격을 결정하는 데 사용됩니다. 하나만 사용하십시오. 기본적으로 MarkPrice가 사용됩니다. Pegged 주문에서 LastPeg의 값을 정의하는 데도 사용됩니다.
- ReduceOnly: ReduceOnly 주문은 포지션을 늘리지 않고 줄일 수만 있습니다. 포지션이 다른 주문에 의해 줄어드는 동안 호가창에 남아 있는 ReduceOnly limit 주문이 있으면, 그 주문 수량은 하향 수정되거나 취소됩니다. 여러 ReduceOnly 주문이 있으면 가장 덜 공격적인 것이 먼저 수정됩니다.
- Close: Close는 ReduceOnly를 의미합니다. Close 주문은 미체결 수량이 현재 포지션을 초과하면 동일한 방향과 심볼을 가진 다른 활성 지정가 주문을 취소합니다. 이는 stop에 유용합니다. 이러한 주문을 취소함으로써 Close Stop이 실행에 필요한 증거금을 갖도록 보장되며, 포지션의 전체 크기까지만 실행될 수 있습니다. orderQty가 지정되지 않으면 Close 주문은 현재 포지션 크기와 동일한 orderQty를 갖습니다.
- orderQty가 없는 Close 주문에는 side가 필요하므로 BitMEX가 stopPx 위 또는 아래에서 트리거해야 하는지 알 수 있습니다.
- LastWithinMark: LastPrice를 사용하는 스탑 주문에서 다음의 경우에만 스탑 트리거를 허용하는 데 사용됩니다:
- Sell Stop Market / Stop Limit Order의 경우
- Last Price <= Stop Price
- Last Price >= Mark Price × (1 - 5%)
- Buy Stop Market / Stop Limit Order의 경우:
- Last Price >= Stop Price
- Last Price <= Mark Price × (1 + 5%)
- Fixed: Pegged 주문은 execInst가 Fixed여야 합니다. 이는 주문이 수락되는 시점에 limit 가격이 설정되며 참조 가격이 변경되어도 변하지 않음을 의미합니다.
Pegged Orders
Pegged 주문은 사용자가 현재 시장 가격에 상대적인 limit 가격을 제출할 수 있게 합니다. limit 가격은 주문이 제출될 때 한 번 설정되며 참조 가격에 따라 변하지 않습니다. 이 주문 유형은 제출 후 far touch가 멀어지는 것에 대한 투기를 위한 것이 아닙니다. 우리는 그러한 행동을 남용으로 간주하고 모니터링합니다.
Pegged 주문은 ordType이 Pegged이고 execInst가 Fixed입니다.
pegPriceType과 pegOffsetValue도 제출해야 합니다.
- PrimaryPeg - 가격이 니어 터치(near touch) 가격을 기준으로 설정됩니다.
- MarketPeg - 가격이 far touch 가격을 기준으로 설정됩니다
Trailing Stop Pegged Orders
Trailing Stop을 생성하려면 TrailingStopPeg의 pegPriceType을 사용하십시오.
가격은 제출 시 설정되며 기초 가격(last/mark/index)이 0.1% 이상 이동하면 초당 한 번 업데이트됩니다. 그러면 stopPx는 시장이 peg에서 멀어질 때 함께 이동하고 시장이 peg를 향해 이동할 때 고정됩니다.
주문의 stopPx를 설정하려면 pegOffsetValue를 사용하십시오. peg는 execInst에 지정된 트리거 가격(기본값 MarkPrice)으로 설정됩니다. stop-sell 및 buy-if-touched 주문에는 음수 오프셋을 사용하십시오.
ordType: Stop, StopLimit, MarketIfTouched, LimitIfTouched가 필요합니다.
Trailing Stops
Trailing Stops를 생성하려면 'TrailingStopPeg'의 pegPriceType을 사용할 수 있습니다. peg된 stopPx는 시장이 peg에서 멀어질수록 이동하고 시장이 peg를 향해 이동하면 고정됩니다.
사용하려면 pegOffsetValue와 결합하여 주문의 stopPx를 설정하십시오. peg는 execInst에 지정된 트리거 가격으로 설정됩니다(기본값 'MarkPrice'). stop-sell 및 buy-if-touched 주문에는 음수 오프셋을 사용하십시오.
ordType이 필요합니다: 'Stop', 'StopLimit', 'MarketIfTouched', 'LimitIfTouched'.
주문 추적
주문 ID를 직접 추적하려면 주문당 고유한 clOrdID를 설정하십시오. 이 clOrdID는 주문과 관련 실행(WebSocket 포함)에 속성으로 반환되며, 주문을 가져오거나 취소하는 데 사용할 수 있습니다. 최대 길이는 36자입니다.
예제:
// buy market order
BITMEX.REST_API.PlaceMarketOrder(bmosBuy, 'XBTUSD', 100);
// sell limit order at 45000
BITMEX.REST_API.PlaceLimitOrder(bmosSell, 'XBTUSD', 100, 45000.00);
// stop order at 48000
BITMEX.REST_API.PlaceStopOrder(bmosSell, 'XBTUSD', 100, 48000.00);