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ış
- Kimlik Doğrulama
- Piyasa Verisi Metotları
- Hesap Metotları
- Alım Satım Metotları
- Akış Abonelikleri
- Yardımcı Metotlar
- Başlarken — Kod Örneği
- Yapılandırma Referansı
- İpuçları ve Notlar
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). |
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.
