BitMEX, vadeli işlemlerin ve sürekli sözleşmelerin kaldıraçlı alım satımında uzmanlaşmış lider bir kripto para türev borsasıdır. TsgcWSAPI_Bitmex bileşeni, Delphi geliştiricilerine hem WebSocket hem de REST API erişimi sağlar ve tek bir bileşenden gerçek zamanlı piyasa verisi akışına, emir yürütmeye, pozisyon yönetimine ve kapsamlı hesap işlemlerine olanak tanır.
İçindekiler
- Genel Bakış
- Başlarken
- WebSocket API
- REST API: Piyasa Verisi
- REST API: Alım Satım
- REST API: Pozisyonlar
- Kod Örneği
- Yapılandırma ve Notlar
Genel Bakış
Yalnızca WebSocket'i destekleyen birçok borsa bileşeninin aksine, TsgcWSAPI_Bitmex bileşeni ikili arayüz yaklaşımı sunar. WebSocket API'si, konu tabanlı abonelikler aracılığıyla alım satımların, emir defteri güncellemelerinin, tekliflerin ve hesap verilerinin gerçek zamanlı akışını sağlar. REST API'si (REST_API özelliği aracılığıyla erişilir), emir verme, pozisyon yönetme ve piyasa verisi sorgulama için senkron istek-yanıt metotları sağlar. Bu kombinasyon, hem canlı veri akışlarına hem de hassas emir yürütmeye ihtiyaç duyan eksiksiz alım satım uygulamaları oluşturmak için idealdir.
Başlarken
Bir TsgcWebSocketClient ve bir TsgcWSAPI_Bitmex bileşeni oluşturun, bunları bağlayın ve kimlik bilgilerinizi yapılandırın. WebSocket bağlantısı istemci aracılığıyla etkinleştirilirken, REST API'sine REST_API özelliği aracılığıyla erişilir.
oClient := TsgcWebSocketClient.Create(nil);
oBitmex := TsgcWSAPI_Bitmex.Create(nil);
oBitmex.Client := oClient;
oBitmex.Bitmex.ApiKey := 'your_api_key';
oBitmex.Bitmex.ApiSecret := 'your_api_secret';
oClient.Active := True;
Not: Genel WebSocket abonelikleri ve genel REST uç noktaları API kimlik bilgileri gerektirmez. Kimlik doğrulaması yalnızca özel konular (execution, margin, order, position) ve alım satım/pozisyon REST metotları için gereklidir.
WebSocket API
BitMEX WebSocket API'si, konu tabanlı bir abonelik modeli kullanır. Bir konuya abone olursunuz (isteğe bağlı olarak enstrümana göre filtrelenmiş) ve sürekli bir güncelleme akışı alırsınız. Bileşen, üç temel WebSocket metodu sağlar.
| Metot | Açıklama |
|---|---|
Subscribe |
İsteğe bağlı olarak enstrüman sembolüne göre filtrelenmiş bir konu akışına abone olur. |
Unsubscribe |
Daha önce abone olunan bir konu akışından aboneliği iptal eder. |
Authenticate |
Özel konu erişimi için WebSocket oturumunun kimliğini doğrular. |
Mevcut Konular
Konular, aldığınız verilerin türünü tanımlar. Aynı anda birden fazla konuya abone olabilirsiniz. Abonelik biçimi, sembol filtresinin isteğe bağlı olduğu topic:symbol şeklindedir.
| Konu | Kimlik Doğrulama Gerekli | Açıklama |
|---|---|---|
trade |
Hayır | Borsadaki canlı alım satım yürütmeleri. |
instrument |
Hayır | Fonlama oranları ve mutabakat bilgileri dahil enstrüman verileri. |
orderBookL2 |
Hayır | Artımlı güncellemelerle tam Level 2 emir defteri. |
quote |
Hayır | Defterin en üstündeki en iyi alış ve satış teklifleri. |
execution |
Evet | Hesabınızın alım satım yürütmeleri ve gerçekleşmeleri. |
margin |
Evet | Hesap margin bakiyesi ve kullanılabilir bakiye güncellemeleri. |
order |
Evet | Açık emirleriniz ve emir durumu güncellemeleri. |
position |
Evet | Açık pozisyonlarınız ve gerçekleşmemiş K&Z güncellemeleri. |
WebSocket Abonelik Örnekleri
// Subscribe to XBTUSD trades
oBitmex.Subscribe('trade:XBTUSD');
// Subscribe to the Level 2 order book
oBitmex.Subscribe('orderBookL2:XBTUSD');
// Subscribe to best bid/ask quotes
oBitmex.Subscribe('quote:XBTUSD');
// Authenticate for private topics
oBitmex.Authenticate;
// Subscribe to your order updates (requires auth)
oBitmex.Subscribe('order');
// Subscribe to your position updates (requires auth)
oBitmex.Subscribe('position');
// Unsubscribe from trades
oBitmex.Unsubscribe('trade:XBTUSD');
REST API: Piyasa Verisi
REST API'sine bileşenin REST_API özelliği aracılığıyla erişilir. Piyasa verisi metotları, uygulamanızda ayrıştırabileceğiniz JSON dizeleri döndürür. Bunlar, istenen verilerle hemen geri dönen senkron çağrılardır.
| Metot | Açıklama |
|---|---|
GetInstruments |
Borsada mevcut tüm enstrümanların listesini alır. |
GetInstrumentsActive |
Yalnızca aktif olarak işlem gören enstrümanları alır. |
GetOrderBook |
Bir enstrüman için güncel emir defteri anlık görüntüsünü alır. |
GetQuotes |
Son teklif (bid/ask) verilerini alır. |
GetTrades |
Son genel alım satım verilerini alır. |
GetExecutions |
Hesabınızın ham yürütme verilerini alır. |
GetExecutionsTradeHistory |
Hesabınızın alım satım yürütme geçmişini alır. |
// Get the order book for XBTUSD
ShowMessage(oBitmex.REST_API.GetOrderBook('XBTUSD'));
// Get all active instruments
ShowMessage(oBitmex.REST_API.GetInstrumentsActive);
// Get recent trades
ShowMessage(oBitmex.REST_API.GetTrades('XBTUSD'));
// Get recent quotes
ShowMessage(oBitmex.REST_API.GetQuotes('XBTUSD'));
REST API: Alım Satım
Alım satım metotları, emir vermenize, değiştirmenize ve iptal etmenize olanak tanır. REST API'si; piyasa, limit, stop ve stop-limit emirleri dahil birden fazla emir türünü destekler. Tüm alım satım metotları kimlik doğrulaması gerektirir.
| Metot | Açıklama |
|---|---|
PlaceOrder |
Tam parametre kontrolüyle yeni bir emir verir. |
PlaceMarketOrder |
En iyi fiyattan hemen yürütülen bir piyasa emri verir. |
PlaceLimitOrder |
Belirtilen bir fiyattan bir limit emri verir. |
PlaceStopOrder |
Bir stop fiyatında tetiklenen bir stop (piyasa) emri verir. |
PlaceStopLimitOrder |
Hem tetik hem de limit fiyatlarıyla bir stop-limit emri verir. |
AmendOrder |
Mevcut bir emrin fiyatını, miktarını veya diğer parametrelerini değiştirir. |
CancelOrder |
Belirli bir emri tanımlayıcısına göre iptal eder. |
CancelAllOrders |
Tüm açık emirleri bir kerede iptal eder. |
CancelAllOrdersAfter |
Bir zaman aşımından sonra tüm emirleri iptal eden bir ölü adam anahtarı ayarlar. |
GetOrders |
İsteğe bağlı olarak duruma göre filtrelenmiş tüm emirleri alır. |
Emir Verme Örnekleri
// Place a limit order: Buy 100 contracts of XBTUSD at $30,000
ShowMessage(oBitmex.REST_API.PlaceLimitOrder(bmsBuy, 'XBTUSD', 100, 30000));
// Place a market order: Sell 50 contracts of XBTUSD
ShowMessage(oBitmex.REST_API.PlaceMarketOrder(bmsSell, 'XBTUSD', 50));
// Place a stop order: triggers when price reaches $28,000
ShowMessage(oBitmex.REST_API.PlaceStopOrder(bmsSell, 'XBTUSD', 100, 28000));
// Place a stop-limit order: triggers at $28,000, limit price $27,500
ShowMessage(oBitmex.REST_API.PlaceStopLimitOrder(bmsSell, 'XBTUSD', 100, 28000, 27500));
// Cancel a specific order
ShowMessage(oBitmex.REST_API.CancelOrder('order-id-here'));
// Cancel all open orders
ShowMessage(oBitmex.REST_API.CancelAllOrders);
Not: CancelAllOrdersAfter metodu bir ölü adam anahtarı gibi davranır. Belirtilen zaman aşımı içinde yenilenmezse tüm emirleri iptal eder. Bu, uygulamanız bağlantıyı kaybederse kontrolden çıkan emirleri önlemek için bir güvenlik mekanizması olarak yararlıdır.
REST API: Pozisyonlar
Pozisyon yönetimi metotları, kaldıraç ve margin ayarları dahil olmak üzere açık pozisyonlarınızı sorgulamanıza, kapatmanıza ve yapılandırmanıza olanak tanır.
| Metot | Açıklama |
|---|---|
GetPosition |
Bir enstrüman için güncel pozisyonu alır. |
ClosePosition |
Bir kapanış piyasa emri vererek açık bir pozisyonu kapatır. |
SetPositionIsolate |
Bir pozisyon için cross ve isolated margin modu arasında geçiş yapar. |
SetPositionLeverage |
Bir pozisyon için kaldıraç çarpanını ayarlar. |
SetPositionRiskLimit |
Bir pozisyon için risk limitini ayarlar. |
SetPositionTransferMargin |
Bir isolated pozisyona veya pozisyondan margin transfer eder. |
Pozisyon Yönetimi Örnekleri
// Get current position for XBTUSD
ShowMessage(oBitmex.REST_API.GetPosition('XBTUSD'));
// Set leverage to 10x
ShowMessage(oBitmex.REST_API.SetPositionLeverage('XBTUSD', 10));
// Switch to isolated margin mode
ShowMessage(oBitmex.REST_API.SetPositionIsolate('XBTUSD', True));
// Close the position at market price
ShowMessage(oBitmex.REST_API.ClosePosition('XBTUSD'));
Kod Örneği
Aşağıdaki örnek, hem WebSocket aboneliklerini hem de REST API çağrılarını birleştiren eksiksiz bir iş akışını gösterir: bağlanma, canlı alım satımlara abone olma, emir defterini sorgulama ve bir limit emri verme.
oClient := TsgcWebSocketClient.Create(nil);
oBitmex := TsgcWSAPI_Bitmex.Create(nil);
oBitmex.Client := oClient;
oBitmex.Bitmex.ApiKey := 'your_api_key';
oBitmex.Bitmex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Subscribe to trades
oBitmex.Subscribe('trade:XBTUSD');
// REST: Get order book
ShowMessage(oBitmex.REST_API.GetOrderBook('XBTUSD'));
// REST: Place a limit order
ShowMessage(oBitmex.REST_API.PlaceLimitOrder(bmsBuy, 'XBTUSD', 100, 30000));
Yapılandırma ve Notlar
API Kimlik Bilgileri
API anahtarınızı ve secret'ınızı BitMEX hesap ayarlarından oluşturun. Belirli izinlere (order, withdraw vb.) sahip anahtarlar oluşturabilirsiniz. Alım satım botları için yalnızca ihtiyacınız olan izinlere sahip bir anahtar oluşturun ve kesinlikle gerekli olmadıkça para çekme izinlerini etkinleştirmekten kaçının.
Testnet Desteği
BitMEX, geliştirme ve test için testnet.bitmex.com adresinde bir testnet ortamı sağlar. Canlıya geçmeden önce entegrasyonunuzu simüle edilmiş fonlarla test etmek için bileşeni testnet uç noktasını kullanacak şekilde yapılandırın. Bitmex özellik grubu, üretim ve testnet ortamları arasında seçim yapmak için ayarlar içerir.
Emir Yönü Enumerasyonu
Alım satım metotları, emir yönünü belirtmek için bmsBuy ve bmsSell enum değerlerini kullanır. Bunlar BitMEX bileşenine özeldir.
WebSocket ve REST Kullanımı
Düşük gecikmenin kritik olduğu gerçek zamanlı veri akışı için WebSocket aboneliklerini kullanın (canlı fiyat görüntüleri, emir defteri görselleştirmesi, yürütme izleme). Emir verme, pozisyon sorgulama ve geçmiş verileri getirme gibi talep üzerine işlemler için REST API'sini kullanın. İki arayüz birbirini tamamlar ve aynı anda kullanılabilir.
Rate Limitleri
BitMEX, REST API çağrılarında rate limitleri uygular. Limitler uç noktaya göre değişir ancak tipik olarak çoğu alım satım uç noktası için dakikada 60 istek ve emir değiştirme ile iptali için dakikada 30 istektir. Geçici olarak engellenmemek için yanıtlardaki rate limit başlıklarını izleyin. WebSocket abonelikleri REST rate limitlerine tabi değildir.
Enstrüman Sembolleri
BitMEX kendi enstrüman sembolü biçimini kullanır. Sürekli Bitcoin sözleşmesi XBTUSD iken, vadeli işlem sözleşmeleri bir son kullanma tarihi son eki içerir (örneğin, XBTM25). Şu anda işlem yapılabilen tüm enstrümanları ve sembollerini keşfetmek için GetInstrumentsActive'i kullanın.
CancelAllOrdersAfter metodunu uygulamanızdaki periyodik bir zamanlayıcıyla birleştirin. Uygulamanız çökerse veya bağlantıyı kaybederse, belirtilen zaman aşımından sonra tüm emirler otomatik olarak iptal edilir ve sizi beklenmedik piyasa hareketlerinden korur.
