FXCM API Güncellemesi sgcWebSockets

· Özellikler
Delphi'de FXCM Forex Trading API Entegrasyonu

FXCM API, dünyanın en büyük bireysel forex aracı kurumlarından birine programatik erişim sağlar; gerçek zamanlı piyasa verisi akışını, sipariş yürütmeyi ve geçmiş mum (candle) verilerinin alınmasını mümkün kılar. Delphi için TsgcWSAPI_FXCM bileşeni, FXCM'in WebSocket (socket.io) ve HTTP arayüzlerini tek, kullanımı kolay bir sınıfa sarar; böylece alt düzey protokol ayrıntılarıyla uğraşmadan otomatik işlem sistemleri, piyasa tarayıcıları ve portföy gösterge panoları oluşturabilirsiniz.

İçindekiler

Genel Bakış ve Mimari

FXCM, işlem platformunu, gerçek zamanlı akış için kalıcı bir WebSocket bağlantısını (socket.io üzerine kurulu) istek/yanıt işlemleri için standart HTTP uç noktalarıyla birleştiren hibrit bir protokol aracılığıyla sunar. TsgcWSAPI_FXCM bileşeni, her iki taşıma katmanını da birleşik bir Delphi arayüzünün arkasında soyutlar; böylece alttaki çağrının WebSocket mi yoksa HTTP mi kullandığından bağımsız olarak tek bir bileşenle etkileşim kurarsınız.

API üç ana işlevsel alanı destekler:

Alan Açıklama Taşıma
Piyasa Verileri Gerçek zamanlı fiyat akışı ve sembol keşfi WebSocket + HTTP
İşlem Tabloları Hesap durumu, pozisyonlar, siparişler ve teklifler WebSocket + HTTP
Sipariş Yürütme İşlem siparişlerini verme, değiştirme ve kapatma HTTP

Yapılandırma

FXCM API'sine bağlanmadan önce, TsgcWSAPI_FXCM bileşeninde iki temel özelliği yapılandırmanız gerekir:

Özellik Tür Açıklama
FXCM.AccessToken String FXCM Trading Station Web'den edindiğiniz API erişim belirteciniz
FXCM.Demo Boolean Demo ortamı için True, canlı işlemler için False olarak ayarlayın
Not: Erişim Belirtecinizi edinmek için FXCM Trading Station Web'e giriş yapın, hesap ayarlarınıza gidin ve yeni bir API belirteci oluşturun. Gerçek işlem yapmamak için geliştirmeye her zaman FXCM.Demo := True ile başlayın.

Başlarken

FXCM bileşenini kurmak yalnızca üç adım gerektirir: bir WebSocket istemcisi oluşturun, API bileşenini ekleyin ve kimlik bilgilerinizi yapılandırın. İstemci etkinleştirildiğinde, bileşen socket.io el sıkışmasını ve HTTP bearer-token kimlik doğrulamasını otomatik olarak halleder.

var
  oClient: TsgcWebSocketClient;
  oFXCM: TsgcWSAPI_FXCM;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oFXCM := TsgcWSAPI_FXCM.Create(nil);
  oFXCM.Client := oClient;
  oFXCM.FXCM.AccessToken := 'your_access_token';
  oFXCM.FXCM.Demo := True;
  oClient.Active := True;
end;

Piyasa Verisi Metotları

Piyasa verisi metotları, mevcut enstrümanları keşfetmenize, gerçek zamanlı fiyat güncellemelerine abone olmanıza ve etkin aboneliklerinizi yönetmenize olanak tanır.

Metot Açıklama
GetSymbols Mevcut tüm işlem sembollerinin (döviz çiftleri, CFD'ler vb.) bir listesini döndürür
SubscribeMarketData Belirli bir sembol için gerçek zamanlı fiyat güncellemelerine abone olur
UnSubscribeMarketData Belirli bir sembol için gerçek zamanlı fiyat güncellemeleri almayı durdurur
UpdateSubscriptions Teklif tablosunu yalnızca şu anda abone olduğunuz sembolleri görüntüleyecek şekilde filtreler

Piyasa Verilerine Abone Olma

Bağlandıktan sonra, mevcut enstrümanları keşfetmek için GetSymbols çağırın, ardından alış/satış fiyatlarının akışı için herhangi bir sembole abone olun:

// Retrieve all available trading symbols
ShowMessage(oFXCM.GetSymbols);
// Subscribe to real-time EUR/USD price updates
oFXCM.SubscribeMarketData('EUR/USD');
// Subscribe to additional pairs
oFXCM.SubscribeMarketData('GBP/USD');
oFXCM.SubscribeMarketData('USD/JPY');
// Filter the offer table to show only subscribed symbols
oFXCM.UpdateSubscriptions;

İşlem Tablosu Metotları

FXCM, hesap verilerini işlem tablolarında düzenler. Durum değiştikçe sürekli güncellemeler almak için abone olabilir veya mevcut durumun tek seferlik bir anlık görüntüsünü isteyebilirsiniz.

Mevcut İşlem Tabloları

Tablo Adı Açıklama
Offer Her enstrüman için mevcut alış/satış fiyatları, en yüksek/en düşük ve işlem seansı bilgileri
OpenPosition Kâr/zarar, teminat ve giriş fiyatlarıyla birlikte şu anda açık olan tüm pozisyonlar
ClosedPosition Gerçekleşen kâr/zarar ile yakın zamanda kapatılan pozisyonlar
Order Bekleyen giriş siparişleri ve parametreleri
Summary Enstrüman başına toplu pozisyon özeti
LeverageProfile Enstrüman ve hesap başına kaldıraç ayarları
Account Hesap bakiyesi, özkaynak, kullanılan teminat ve kullanılabilir teminat
Properties Hesap düzeyinde ayarlar ve işlem özellikleri

Abonelik ve Anlık Görüntü Metotları

Metot Açıklama
SubscribeTradingTables Belirtilen bir işlem tablosu için sürekli güncellemelere abone olur
UnSubscribeTradingTables Belirtilen bir işlem tablosu için güncelleme almayı durdurur
SnapshotTradingTables Bir işlem tablosunun mevcut durumunun tek seferlik bir anlık görüntüsünü alır
// Subscribe to real-time updates for open positions
oFXCM.SubscribeTradingTables('OpenPosition');
// Subscribe to account balance updates
oFXCM.SubscribeTradingTables('Account');
// Get a one-time snapshot of all pending orders
ShowMessage(oFXCM.SnapshotTradingTables('Order'));
// Stop receiving position updates
oFXCM.UnSubscribeTradingTables('OpenPosition');

İşlem Siparişleri

TradingOrder metodu, FXCM HTTP API aracılığıyla sipariş verme, değiştirme ve kapatma için birleşik bir arayüz sağlar. Tüm sipariş işlemleri bu tek metot aracılığıyla gerçekleştirilir; alınan eylemi farklı parametreler denetler.

Metot Açıklama
TradingOrder Sağlanan parametrelere bağlı olarak yeni bir sipariş verir, mevcut bir siparişi değiştirir veya açık bir pozisyonu kapatır
Not: TradingOrder metodu istekleri HTTP aracılığıyla gönderir. Bir sipariş gönderdikten sonra, güncellenmiş durum için işlem tablolarını (OpenPosition, Order) kontrol ederek yürütme sonuçlarını her zaman doğrulayın.

Geçmiş Veriler

GetHistoricalData metodu, belirtilen bir zaman diliminde mevcut herhangi bir enstrüman için OHLC (Açılış, En Yüksek, En Düşük, Kapanış) mum verilerini alır. Bu, strateji geriye dönük testleri, grafik oluşturma ve teknik analiz yapma için temel öneme sahiptir.

Metot Parametreler Açıklama
GetHistoricalData Symbol, TimeFrame, NumPeriods Belirli bir enstrüman için belirtilen zaman diliminde ve dönem sayısında mum verilerini alır

Desteklenen Zaman Dilimleri

Değer Açıklama
m1 1 dakikalık mumlar
m5 5 dakikalık mumlar
m15 15 dakikalık mumlar
m30 30 dakikalık mumlar
H1 1 saatlik mumlar
H4 4 saatlik mumlar
D1 Günlük mumlar
W1 Haftalık mumlar
M1 Aylık mumlar
// Get the last 100 five-minute candles for EUR/USD
ShowMessage(oFXCM.GetHistoricalData('EUR/USD', 'm5', 100));
// Get the last 50 daily candles for GBP/USD
ShowMessage(oFXCM.GetHistoricalData('GBP/USD', 'D1', 50));

Tam Kod Örneği

Aşağıdaki örnek, eksiksiz bir iş akışını gösterir: FXCM demo ortamına bağlanma, mevcut sembolleri alma, gerçek zamanlı piyasa verilerine abone olma ve geçmiş mum verilerini getirme.

var
  oClient: TsgcWebSocketClient;
  oFXCM: TsgcWSAPI_FXCM;
begin
  // Create and configure the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  oFXCM := TsgcWSAPI_FXCM.Create(nil);
  oFXCM.Client := oClient;
  // Configure FXCM credentials
  oFXCM.FXCM.AccessToken := 'your_access_token';
  oFXCM.FXCM.Demo := True;
  // Connect to FXCM
  oClient.Active := True;
  // Get all available symbols
  ShowMessage(oFXCM.GetSymbols);
  // Subscribe to real-time market data for EUR/USD
  oFXCM.SubscribeMarketData('EUR/USD');
  // Get the last 100 five-minute candles
  ShowMessage(oFXCM.GetHistoricalData('EUR/USD', 'm5', 100));
end;

Notlar ve En İyi Uygulamalar

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

Her zaman FXCM.Demo := True ile geliştirin ve test edin. Demo ortamı, canlı ortamla aynı API yüzeyini ve veri biçimini sağlar ancak sanal fon kullanır. FXCM.Demo := False'a yalnızca kapsamlı testten sonra geçin.

Bağlantı Yönetimi

Alttaki socket.io bağlantısı, oturumu canlı tutmak için periyodik heartbeat'ler gönderir. Bağlantı kesilirse, bileşen otomatik olarak yeniden bağlanmayı dener. Ağ kesintilerini düzgün bir şekilde ele almak için WebSocket istemcisinin OnDisconnect ve OnError olaylarını izleyin.

Hız Sınırları

FXCM, HTTP istekleri üzerinde hız sınırları uygular. GetHistoricalData veya TradingOrder gibi metotları sıkı döngülerde çağırmaktan kaçının. Gerçek zamanlı veriler için, HTTP ile yoklama yapmak yerine WebSocket aboneliklerini tercih edin.

İpucu: Hem piyasa koşullarını hem de portföy durumunuzu gösteren eksiksiz bir gerçek zamanlı işlem gösterge panosu oluşturmak için canlı fiyatlar için SubscribeMarketData'yı SubscribeTradingTables('OpenPosition') ve SubscribeTradingTables('Account') ile birleştirin.