Bitmex | Jak składać zlecenia
Bitmex REST API oferuje publiczne i prywatne punkty końcowe. Prywatne punkty końcowe wymagają podpisywania wiadomości w celu zwiększenia bezpieczeństwa transakcji.
Najpierw należy zalogować się na konto Bitmex i utworzyć nowe API, po czym zostaną udostępnione następujące wartości:
Pola te należy skonfigurować we właściwości Bitmex komponentu klienta API Bitmex. Po skonfigurowaniu można rozpocząć wysyłanie prywatnych żądań do REST API Bitmex.
Typy zleceń
Wszystkie zlecenia wymagają symbolu. Wszystkie pozostałe pola są opcjonalne, chyba że zaznaczono inaczej.
Poniżej podano prawidłowe wartości ordType:
- Limit: Domyślny typ zlecenia. Należy podać orderQty i cenę.
- Market: Tradycyjne zlecenie rynkowe. Zlecenie rynkowe jest realizowane do momentu wypełnienia lub osiągnięcia ceny bankructwa, po czym zostaje anulowane.
- Stop: Zlecenie Stop Market. Należy podać wartości orderQty i stopPx. Po osiągnięciu stopPx zlecenie zostanie wpisane do arkusza.
- W zleceniach sprzedaży zlecenie wyzwala się, gdy cena wyzwalająca jest niższa niż stopPx. W zleceniach kupna — gdy jest wyższa.
- Uwaga: zlecenia Stop nie zajmują marży do momentu wyzwolenia. Należy upewnić się, że wymagana marża jest dostępna na koncie, aby zlecenie mogło zostać w pełni zrealizowane.
- Zlecenia Close Stop nie wymagają podania orderQty. Więcej informacji w sekcji Instrukcje realizacji poniżej.
- StopLimit: podobne do Stop Market, lecz zamiast zlecenia rynkowego składa zlecenie Limit. Należy podać orderQty, stopPx i price.
- MarketIfTouched: Podobne do zlecenia Stop, ale wyzwalacze działają w przeciwnym kierunku. Przydatne dla zleceń Take Profit.
- LimitIfTouched: Jak powyżej; stosowane dla zleceń Take Profit Limit.
- Pegged: Zlecenia powiązane umożliwiają użytkownikom składanie zlecenia z limitem ceny względem bieżącej ceny rynkowej. Należy określić pegPriceType i pegOffsetValue.
- Zlecenia powiązane muszą mieć execInst ustawione na Fixed. Oznacza to, że cena limitu jest ustalana w momencie przyjęcia zlecenia i nie zmienia się wraz ze zmianą ceny referencyjnej.
- PrimaryPeg: Cena jest ustawiana względem ceny bliskiej strony rynku.
- MarketPeg: Cena jest ustawiana względem ceny dalekiej strony rynku.
- Wartość pegPriceType przesłana bez ordType jest traktowana jako zlecenie powiązane.
Instrukcje wykonania
Obsługiwane są następujące instrukcje execInst. W przypadku podania kilku wartości należy oddzielić je przecinkiem (np. LastPrice,Close).
- ParticipateDoNotInitiate: Znane również jako zlecenie Post-Only. Jeśli zlecenie zostałoby wykonane w momencie złożenia, zostanie anulowane. Ma to na celu ochronę przed sytuacją, gdy cena rynkowa przesunie się w stronę zlecenia podczas jego transmisji. Nie jest to przeznaczone do spekulowania na oddaleniu się ceny po złożeniu zlecenia — takie zachowanie jest uznawane za nadużycie i podlega monitorowaniu.
- MarkPrice, LastPrice, IndexPrice: Używane przez zlecenia stop i if-touched do określenia ceny wyzwalającej. Należy użyć tylko jednej. Domyślnie używana jest MarkPrice. Używane również dla zleceń Pegged do zdefiniowania wartości LastPeg.
- ReduceOnly: Zlecenie ReduceOnly może jedynie zmniejszyć pozycję, a nie ją zwiększyć. Jeśli w księdze zleceń znajduje się oczekujące zlecenie ReduceOnly z limitem, a pozycja zostanie zmniejszona przez inne zlecenia, ilość tego zlecenia zostanie odpowiednio zmniejszona lub anulowana. W przypadku wielu zleceń ReduceOnly jako pierwsze zostanie zmienione najmniej agresywne.
- Close: Zamknięcie implikuje ReduceOnly. Zlecenie Close anuluje inne aktywne zlecenia z limitem ceny po tej samej stronie i instrumencie, jeśli otwarta ilość przekracza bieżącą pozycję. Jest to przydatne w przypadku zleceń stop: anulując te zlecenia, zlecenie Close Stop ma zapewniony wymagany depozyt zabezpieczający do realizacji i może zostać zrealizowane maksymalnie do pełnej wartości pozycji. Jeśli orderQty nie jest podana, zlecenie Close ma orderQty równe bieżącej wielkości pozycji.
- Należy pamiętać, że zlecenie Close bez orderQty wymaga podania strony, aby BitMEX wiedział, czy powinno być wyzwolone powyżej, czy poniżej stopPx.
- LastWithinMark: Używany przez zlecenia stop z LastPrice, aby umożliwić wyzwalanie stop tylko gdy:
- Dla Sell Stop Market / Stop Limit Order
- Last Price <= Stop Price
- Last Price >= Mark Price × (1 - 5%)
- Dla Buy Stop Market / Stop Limit Order:
- Last Price >= Stop Price
- Last Price <= Mark Price × (1 + 5%)
- Fixed: Zlecenia zakotwiczone muszą mieć wartość execInst równą Fixed. Oznacza to, że cena limit jest ustawiana w momencie przyjęcia zlecenia i nie zmienia się wraz ze zmianą ceny referencyjnej.
Zlecenia pegged
Zlecenia pegged umożliwiają użytkownikom składanie zlecenia z limitem ceny względnym wobec bieżącej ceny rynkowej. Cena graniczna jest ustalana jednorazowo w momencie składania zlecenia i nie zmienia się wraz ze zmianą ceny referencyjnej. Ten typ zlecenia nie jest przeznaczony do spekulacji na oddaleniu się ceny po złożeniu — takie zachowanie jest traktowane jako nadużycie i podlega monitorowaniu.
Zlecenia Pegged mają ordType równy Pegged i execInst równy Fixed.
Należy również podać pegPriceType i pegOffsetValue:
- PrimaryPeg — cena jest ustawiana względem ceny najbliższego dotyku
- MarketPeg — cena jest ustalana względem ceny far touch
Zlecenia trailing stop z powiązaniem ceny
Użyj pegPriceType o wartości TrailingStopPeg, aby tworzyć zlecenia Trailing Stop.
Cena jest ustalana w momencie złożenia zlecenia i aktualizowana raz na sekundę, jeśli cena bazowa (ostatnia/mark/indeks) zmieniła się o więcej niż 0,1%. Wartość stopPx przesuwa się wraz z ruchem rynku od punktu peg i zamraża, gdy rynek zbliża się ku niemu.
Należy użyć pegOffsetValue do ustawienia stopPx zlecenia. Peg jest ustawiany na cenę wyzwalającą określoną w execInst (domyślnie MarkPrice). Należy użyć ujemnego offsetu dla zleceń stop-sell i buy-if-touched.
Wymaga parametru ordType: Stop, StopLimit, MarketIfTouched, LimitIfTouched.
Trailing Stops
Można użyć pegPriceType o wartości „TrailingStopPeg", aby tworzyć zlecenia Trailing Stop. Zakotwiczony stopPx przesuwa się zgodnie z ruchem rynku od punktu zakotwiczenia i zatrzymuje się, gdy rynek porusza się w jego kierunku.
Aby używać tej opcji, należy połączyć ją z wartością pegOffsetValue w celu ustawienia stopPx zlecenia. Kołek jest ustawiany na cenę wyzwalacza określoną w execInst (domyślnie 'MarkPrice'). Dla zleceń stop-sell i buy-if-touched należy użyć ujemnego przesunięcia.
Wymaga ordType: 'Stop', 'StopLimit', 'MarketIfTouched', 'LimitIfTouched'.
Śledzenie zleceń
Jeśli chcesz samodzielnie śledzić identyfikatory zleceń, ustaw unikalny clOrdID dla każdego zlecenia. clOrdID ten będzie zwracany jako właściwość zlecenia oraz powiązanych wykonań (w tym przez WebSocket) i może być używany do pobrania lub anulowania zlecenia. Maksymalna długość wynosi 36 znaków.
Przykłady:
// 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);