XTB API Güncellemesi sgcWebSockets

· Özellikler
Delphi'de XTB xStation5 Trading API Entegrasyonu

XTB, forex, endeksler, emtialar, hisse senetleri ve kripto paralara xStation5 platformu aracılığıyla erişim sunan, Avrupa'nın önde gelen çevrimiçi alım satım platformlarından biridir. TsgcWSAPI_XTB bileşeni, tek bir WebSocket bağlantısı üzerinden xStation5 API'siyle eksiksiz bir Delphi entegrasyonu sağlar — kimlik doğrulama, piyasa verisi alma, hesap yönetimi, işlem yürütme ve gerçek zamanlı akış aboneliklerini kapsar. Bu makale, kullanılabilir her metodu adım adım açıklar ve dakikalar içinde nasıl başlanacağını gösterir.

İçindekiler

Mimariye Genel Bakış

İşlevselliği REST uç noktaları ile WebSocket kanalları arasında bölen birçok kripto borsasının aksine, XTB xStation5 API'si tamamen tek bir WebSocket bağlantısı üzerinden çalışır. Her istek — bir sembol listesi çekmekten bir işlem yapmaya kadar — aynı soket üzerinde bir JSON mesajı olarak gönderilir ve alınır. Gerçek zamanlı abonelikler (bakiye, mumlar, tikler, işlemler ve daha fazlası) için ikinci bir akış soketi otomatik olarak yönetilir.

TsgcWSAPI_XTB bileşeni tüm bunları sizin için soyutlar. Yalnızca bir TsgcWebSocketClient atar, kimlik bilgilerinizi yapılandırır, istemciyi etkinleştirir ve GetAllSymbols veya SubscribeTickPrices gibi üst düzey metotları çağırırsınız.

Kimlik Doğrulama

WebSocket istemcisi bağlandığında, XTB özellik grubunda ayarladığınız kimlik bilgileri kullanılarak kimlik doğrulama otomatik olarak gerçekleştirilir. Gerekirse bu metotları açıkça da çağırabilirsiniz.

Metot Açıklama
Login UserId ve Password kullanarak xStation5 sunucusuyla kimlik doğrular. Bağlanırken otomatik olarak çağrılır.
Logout Kimliği doğrulanmış oturumu sonlandırır ve sunucudan bağlantıyı keser.

Piyasa Verisi Metotları

Bu metotlar, xStation5 sunucusundan enstrüman bilgilerini, fiyatlandırmayı, grafikleri, haberleri ve alım satım saatlerini alır. Tüm çağrılar WebSocket bağlantısı üzerinden istek/yanıt biçimindedir.

Metot Açıklama
GetAllSymbols Platformda kullanılabilir tüm enstrümanların bir listesini döndürür.
GetSymbol Belirli bir sembol için ayrıntılı bilgi döndürür.
GetTickPrices Belirtilen semboller için geçerli tik fiyatlarını (alış/satış) döndürür.
GetTradingHours Verilen enstrümanlar için alım satım saatlerini döndürür.
GetCalendar Yaklaşan olayların ekonomik takvimini döndürür.
GetChartLastRequest Verilen bir zaman damgasından günümüze kadar grafik mum verilerini döndürür.
GetChartRangeRequest Belirli bir tarih aralığı için grafik mum verilerini döndürür.
GetNews XTB alım satım platformundan haber konularını döndürür.
GetStepRules Hacim hesaplamaları için step kurallarını döndürür.
GetServerTime Geçerli sunucu saatini döndürür.
GetVersion API sürüm numarasını döndürür.

Hesap Metotları

Hesap metotları, WebSocket oturumundan ayrılmadan kullanıcı profilinizi, marj seviyelerinizi ve kâr hesaplamalarınızı incelemenize olanak tanır.

Metot Açıklama
GetCurrentUserData O anda oturum açmış kullanıcı hakkında bilgi döndürür (ad, para birimi, kaldıraç vb.).
GetMarginLevel Geçerli hesap marj seviyesini, özkaynağı ve bakiyeyi döndürür.
GetMarginTrade Verilen bir enstrüman ve hacim için beklenen marjı hesaplar.
GetIbsHistory Introducing Broker (IB) komisyon geçmişini döndürür.
GetProfitCalculation Verilen bir işlem senaryosu için tahmini kârı hesaplar.

Alım Satım Metotları

Bu metotlar, açık ve geçmiş pozisyonları okumaktan işlem hareketlerini gerçekleştirmeye ve izlemeye kadar her şeyi kapsar.

Metot Açıklama
GetTrades O anda açık olan işlemlerin bir listesini döndürür. Yalnızca açık pozisyonları dahil etmek için True iletin.
GetTradesHistory Belirtilen bir zaman aralığındaki kapalı işlemleri döndürür.
GetTradeRecords Belirtilen emir numaraları için işlem kayıtlarını döndürür.
TradeTransaction Bir işlem hareketi gerçekleştirir (bir emri açma, kapatma, değiştirme veya silme).
TradeTransactionStatus Daha önce gönderilmiş bir işlem hareketinin geçerli durumunu denetler.

Akış Abonelikleri

Akış metotları, özel bir akış bağlantısında gerçek zamanlı veri kanalları açar. Her aboneliğin, güncelleme almayı durdurmak için karşılık gelen bir abonelik iptal metodu vardır.

Abone Ol Aboneliği İptal Et Açıklama
SubscribeBalance UnSubscribeBalance Gerçek zamanlı bakiye ve özkaynak güncellemeleri.
SubscribeCandles UnSubscribeCandles Bir sembol için canlı mum/grafik güncellemeleri.
SubscribeKeepAlive UnSubscribeKeepAlive Periyodik keep-alive sinyal mesajları.
SubscribeNews UnSubscribeNews Platformdan gerçek zamanlı haber akışı.
SubscribeProfits UnSubscribeProfits Açık pozisyonlarda gerçek zamanlı kâr/zarar güncellemeleri.
SubscribeTickPrices UnSubscribeTickPrices Bir sembol için canlı alış/satış tik fiyatları.
SubscribeTrades UnSubscribeTrades İşlemler açıldığında, kapatıldığında veya değiştirildiğinde gerçek zamanlı güncellemeler.
SubscribeTradeStatus UnSubscribeTradeStatus Gerçek zamanlı işlem hareketi durum değişiklikleri.
SubscribePing Bağlantıyı canlı tutmak için akış ping'ine abone olur (abonelik iptali gerekmez).
Not: Akış abonelikleri önce başarılı bir oturum açma gerektirir. Akış oturumu kimliği, kimlik doğrulama sırasında otomatik olarak elde edilir.

Yardımcı Metotlar

Metot Açıklama
Ping Bağlantının canlı olduğunu doğrulamak ve zaman aşımlarını önlemek için sunucuya bir ping gönderir.

Başlarken — Kod Örneği

Aşağıdaki örnek, XTB demo sunucusuna bir bağlantı oluşturur, kimlik doğrular, sembolleri ve kullanıcı verilerini alır, canlı tik fiyatlarına ve bakiye güncellemelerine abone olur ve açık işlemleri getirir.

var
  oClient: TsgcWebSocketClient;
  oXTB: TsgcWSAPI_XTB;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  // Create the XTB API component
  oXTB := TsgcWSAPI_XTB.Create(nil);
  oXTB.Client := oClient;
  // Configure credentials
  oXTB.XTB.UserId := 'your_user_id';
  oXTB.XTB.Password := 'your_password';
  oXTB.XTB.Demo := True;
  // Connect and authenticate
  oClient.Active := True;
  // After the login event fires, call API methods:
  oXTB.GetAllSymbols;
  oXTB.GetCurrentUserData;
  // Subscribe to real-time tick prices for EURUSD
  oXTB.SubscribeTickPrices('EURUSD', 0, 0);
  // Subscribe to balance updates
  oXTB.SubscribeBalance;
  // Get all open trades
  oXTB.GetTrades(False);
end;

Yanıtları İşleme

Tüm yanıtlar bileşenin olayları aracılığıyla asenkron olarak gelir. Döndürülen JSON verilerini işlemek için OnXTBResponse ve OnXTBStreamingResponse gibi olaylara işleyiciler atayın. Her yanıt bir komut tanımlayıcısı içerir, böylece onu uygun işleme mantığına yönlendirebilirsiniz.

Yapılandırma Referansı

Tüm yapılandırma, TsgcWSAPI_XTB bileşeninin XTB özelliği altında gruplanmıştır.

Özellik Tür Açıklama
XTB.UserId String XTB hesabı kullanıcı kimliğiniz.
XTB.Password String XTB hesabı parolanız.
XTB.Demo Boolean Demo sunucusuna bağlanmak için True; canlı üretim sunucusu için False olarak ayarlayın.

İpuçları ve Notlar

Demo ve Canlı Karşılaştırması

Her zaman XTB.Demo := True ile geliştirin ve test edin. Demo sunucusu, üretimle aynı API yüzeyini kullanır ancak sanal fonlarla bir sandbox ortamına bağlanır. Yalnızca canlı alım satıma hazır olduğunuzda False değerine geçin.

Bağlantı Keep-Alive

XTB sunucusu, bir zaman aşımı süresinden sonra atıl oturumların bağlantısını keser. Bağlantıyı canlı tutmak için SubscribePing kullanın veya periyodik olarak Ping çağırın. Akış bağlantısındaki SubscribeKeepAlive metodu da benzer bir amaca hizmet eder.

Tek Bağlantı Mimarisi

Ayrı REST uç noktaları olan borsaların aksine, XTB her komutu WebSocket mesajları aracılığıyla yönlendirir. Bu, bileşen mimarisini basitleştirir: yalnızca bir TsgcWebSocketClient ve bir TsgcWSAPI_XTB bileşenine ihtiyacınız vardır — ek HTTP bileşeni gerekmez.

Hata İşleme

Bir istek başarısız olursa, sunucu bir hata kodu ve açıklamasıyla birlikte bir JSON hata yanıtı döndürür. Bunları yanıt olayınızda status alanını denetleyerek işleyin. Yaygın sorunlar arasında geçersiz kimlik bilgileri, süresi dolmuş oturumlar ve aşırı isteklerde rate-limiting yer alır.

Rate limit'leri: XTB API'si saniye başına istek sınırları uygular. Sıkı döngülerde yığın halinde istek göndermekten kaçının. Çağrılarınızı aralıklı yapın veya sık güncellenen veriler için akış aboneliklerini kullanın.