sgcWebSockets 2023.8.0 sürümünden itibaren CEX.IO Plus API desteklenmektedir.
Desteklenen API'ler
- WebSockets API: bir genel websocket sunucusuna bağlanır ve gerçek zamanlı piyasa verisi güncellemeleri sağlar.
WebSockets API
WebSocket, TCP tabanlı tam çift yönlü bir iletişim protokolüdür. Tam çift yönlü, her iki tarafın da aynı iletişim kanalını kullanarak birbirine asenkron olarak mesaj gönderebilmesi anlamına gelir. Bu bölüm, Exchange Plus ve İstemcinin birbirine hangi mesajları göndermesi gerektiğini açıklar. Tüm mesajlar geçerli JSON nesneleri olmalıdır.
WebSocket API çoğunlukla, REST API kullanılarak elde edilemeyen veya yapılması kolay olmayan bilgileri elde etmek ya da eylemleri gerçekleştirmek için kullanılır. Ancak, bazı istekler veya eylemler hem REST API hem de WebSocket API'de yapılabilir. Exchange Plus, İstemcinin daha önce gönderdiği bir isteğe yanıt olarak veya bir olay hakkında bildirim olarak (önceden İstemci isteği olmadan) İstemciye mesaj gönderir.
Genel API Çağrıları
Genel API istek sınırı, sistemi DDoS saldırılarından korumak ve tüm İstemcilerin Exchange Plus API uç noktalarına aynı düzeyde kararlı erişime sahip olmasını sağlamak amacıyla uygulanır. Genel istekler, genel API isteklerinin yapıldığı IP adresine göre sınırlanır. İstek sınırları, her genel API çağrısıyla ilişkili maliyetten belirlenir. Varsayılan olarak, her genel isteğin 1 puanlık bir maliyeti vardır, ancak bazı belirli istekler için bu maliyet daha yüksek olabilir. Güncel istek sınırı maliyet bilgilerine her metodun belirtiminde bakın.
Exchange Plus, her Genel API çağrısının kendi maliyeti olduğunu göz önünde bulundurarak Genel API çağrılarını dakikada en fazla 100 puanla sınırlar (aşağıya bakın). İstek sınırına ulaşılırsa Exchange Plus hatayla yanıt verir, İstemciye disconnected olayı gönderir ve ardından WS bağlantısını kapatır. Exchange Plus, bir sonraki takvim dakikasından itibaren İstemciye hizmet vermeye devam eder. Aşağıdaki örnekte, istek sayacı 11:02:00.000'da sıfırlanacaktır.
Örnek: BTC-USD çiftinin en son ticker'ını alın
oClient := TsgcWebSocketClient.Create(nil);
oCexPlus := TsgcWSAPI_CexPlus.Create(nil);
oCexPlus.Client := oClient;
oCexPlus.OnCexPlusConnect := OnCexPlusConnectEvent;
oCexPlus.OnCexPlusMessage := OnCexPlusMessageEvent;
oClient.Active := True;
procedure OnCexPlusConnectEvent(Sender: TObject);
begin
oCexPlus.GetTicker('BTC-USD');
end;
procedure OnCexPlusMessageEvent(Sender: TObject; Event, Msg: string);
begin
ShowMessage('Ticker data: ' + Msg);
end;
Özel API Çağrıları
Exchange Plus, Özel API'lere erişime izin vermek için API anahtarları kullanır.
İstemci, API Anahtarları Yönetim Profili bölümündeki Exchange Plus Web Terminal aracılığıyla api anahtarları oluşturabilir, yapılandırabilir ve yönetebilir, izin düzeylerini, API anahtarı için beyaz listeye alınmış IP'leri vb. ayarlayabilir.
API Anahtarları sınırı: Varsayılan olarak İstemci en fazla 5 API Anahtarına sahip olabilir.
API Anahtarlarını kullanırken belirli işlevlere erişimi kısıtlamak için her API Anahtarı için belirli bir izin kümesi tanımlanmalıdır. Tanımlanan izin kümesi gerekirse daha sonra düzenlenebilir.
API Anahtarları için aşağıdaki izin düzeyleri mevcuttur:
- Read: hesapla ilgili verileri görüntüleme, rapor alma, piyasa verilerine abone olma vb. için izin düzeyi.
- Trade: hesap adına emir verme ve iptal etmeye olanak tanıyan izin düzeyi.
- Funds Internal: CEX.IO Exchange Plus Portföyünün hesapları arasında (alt hesaplar arasında veya ana hesap ile alt hesaplar arasında) fon transferine olanak tanıyan izin düzeyi.
- Funds Wallet: CEX.IO Exchange Plus Portföyü hesaplarından (ana hesap ve alt hesaplar) CEX.IO Wallet'a ve tersi yönde fon transferine olanak tanıyan izin düzeyi.
Örnek: emirleri alın.
oClient := TsgcWebSocketClient.Create(nil);
oCexPlus := TsgcWSAPI_CexPlus.Create(nil);
oCexPlus.Client := oClient;
oCexPlus.CexPlus.ApiKey := 'your-api-key';
oCexPlus.CexPlus.ApiSecret := 'your-api-secret';
oCexPlus.OnCexPlusAuthenticated := OnCexPlusAuthenticatedEvent;
oCexPlus.OnCexPlusMessage := OnCexPlusMessageEvent;
oClient.Active := True;
procedure OnCexPlusAuthenticatedEvent(Sender: TObject);
begin
oCexPlus.GetOrders();
end;
procedure OnCexPlusMessageEvent(Sender: TObject; Event, Msg: string);
begin
ShowMessage('Orders: ' + Msg);
end;
