Bitmex API Güncellemesi sgcWebSockets

· Özellikler
Delphi'de BitMEX WebSocket ve REST API Entegrasyonu

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ış

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.

Önemli: Üretime dağıtmadan önce alım satım mantığınızı her zaman BitMEX testnet'inde test edin. Testnet API anahtarları, testnet arayüzünden ayrı olarak oluşturulur ve üretim anahtarlarıyla birbirinin yerine kullanılamaz.

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.

İpucu: Bir güvenlik ağı olarak 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.