Coinbase Advanced Trade, dünyanın en yaygın kullanılan kripto para borsalarından birinin profesyonel ticaret platformudur. Delphi için TsgcWSAPI_Coinbase bileşeni, hem WebSocket hem de REST API'lerine tam erişim sağlar; tek bir birleşik Delphi arayüzünden gerçek zamanlı piyasa verisi akışı, emir yönetimi, hesap izleme ve vadeli işlem bakiyesi takibine olanak tanır.
İçindekiler
- Genel Bakış
- Yapılandırma
- WebSocket API
- REST API - Hesaplar
- REST API - Ürünler ve Piyasa Verileri
- REST API - Emirler
- REST API - Gerçekleşmeler (Fills)
- REST API - Pozisyonlar
- Tam Kod Örneği
- Notlar ve En İyi Uygulamalar
Genel Bakış
Coinbase Advanced Trade API, eski Coinbase Pro API'sinin yerini alır ve profesyonel kripto para ticareti için modern bir arayüz sağlar. Hem geniş bir kripto varlık yelpazesi için spot ticareti hem de vadeli işlem sözleşmelerini destekler. API iki taşıma mekanizması kullanır:
| Taşıma | Kullanım Senaryosu | Kimlik Doğrulama |
|---|---|---|
| WebSocket | Piyasa verilerinin, kullanıcı olaylarının ve vadeli işlem bakiyelerinin gerçek zamanlı akışı | Özel kanallar için zorunlu, genel kanallar için isteğe bağlı |
| REST | Hesap sorguları, emir verme, ürün verileri ve gerçekleşme bilgilerinin alınması | Tüm özel uç noktalar için zorunlu |
Yapılandırma
Özel uç noktalara erişmek için TsgcWSAPI_Coinbase bileşenini API kimlik bilgilerinizle yapılandırın. Genel piyasa verisi uç noktalarına kimlik doğrulaması olmadan erişilebilir.
| Özellik | Tür | Açıklama |
|---|---|---|
Coinbase.ApiKey |
String | Coinbase Advanced Trade API anahtarınız |
Coinbase.ApiSecret |
String | İstek imzalama için kullanılan Coinbase Advanced Trade API gizli anahtarınız (secret) |
var
oClient: TsgcWebSocketClient;
oCoinbase: TsgcWSAPI_Coinbase;
begin
oClient := TsgcWebSocketClient.Create(nil);
oCoinbase := TsgcWSAPI_Coinbase.Create(nil);
oCoinbase.Client := oClient;
// Configure API credentials
oCoinbase.Coinbase.ApiKey := 'your_api_key';
oCoinbase.Coinbase.ApiSecret := 'your_api_secret';
// Connect to Coinbase
oClient.Active := True;
end;
WebSocket API
WebSocket API, piyasa verileri ve özel hesap olayları için gerçek zamanlı akış kanalları sağlar. Genel kanallar kimlik doğrulaması olmadan piyasa geneli verileri sunarken, özel kanallar hesaba özgü olayları akıtır.
Genel Kanallar
| Metot | Açıklama |
|---|---|
SubscribeHeartBeat / UnSubscribeHeartBeat |
Belirli bir ürün için periyodik heartbeat mesajları aracılığıyla bağlantı sağlığı izleme |
SubscribeStatus / UnSubscribeStatus |
İşlem durumu ve açık artırma bilgileri dahil olmak üzere ürün durumu güncellemeleri |
SubscribeTicker / UnSubscribeTicker |
Fiyat, 24 saatlik hacim ve en iyi alış/satış dahil olmak üzere gerçek zamanlı ticker verileri |
SubscribeTickerBatch / UnSubscribeTickerBatch |
Daha düşük bant genişliği kullanımı için azaltılmış sıklıkta sunulan toplu ticker güncellemeleri |
SubscribeLevel2 / UnSubscribeLevel2 |
Tam Level 2 emir defteri anlık görüntüleri ve artımlı güncellemeler |
SubscribeCandles / UnSubscribeCandles |
Grafik oluşturma için gerçek zamanlı OHLCV mum verileri |
SubscribeMarketTrades / UnSubscribeMarketTrades |
Belirli bir ürün için borsada gerçekleştirilen tüm işlemlerin gerçek zamanlı akışı |
Özel Kanallar
| Metot | Açıklama |
|---|---|
SubscribeUser / UnSubscribeUser |
Emirleriniz (yeni, gerçekleşmiş, iptal edilmiş) ve hesap etkinliği hakkında gerçek zamanlı güncellemeler |
SubscribeFuturesBalanceSummary / UnSubscribeFuturesBalanceSummary |
Vadeli işlem hesap bakiyeniz, marjınız ve tasfiye fiyatınız hakkında gerçek zamanlı güncellemeler |
// Subscribe to real-time ticker for BTC-USD
oCoinbase.SubscribeTicker('BTC-USD');
// Subscribe to Level 2 order book updates
oCoinbase.SubscribeLevel2('BTC-USD');
// Subscribe to candle data for charting
oCoinbase.SubscribeCandles('ETH-USD');
// Subscribe to live market trades
oCoinbase.SubscribeMarketTrades('BTC-USD');
// Subscribe to private user channel (requires API key)
oCoinbase.SubscribeUser('BTC-USD');
// Subscribe to futures balance updates
oCoinbase.SubscribeFuturesBalanceSummary;
REST API - Hesaplar
Hesaplar uç noktaları, Coinbase portföyünüzü sorgulamanıza olanak tanır. Her hesap, portföyünüzdeki tek bir para birimini veya varlığı, kullanılabilir ve tutulan bakiyeleriyle birlikte temsil eder.
| Metot | Açıklama |
|---|---|
ListAccounts |
Portföyünüzdeki tüm hesapların bakiyeleriyle birlikte sayfalanmış bir listesini döndürür |
GetAccount |
Bir hesabın UUID değerine göre ayrıntılarını döndürür |
// List all accounts in your portfolio
ShowMessage(oCoinbase.REST_API.ListAccounts);
// Get details for a specific account by UUID
ShowMessage(oCoinbase.REST_API.GetAccount('account-uuid-here'));
REST API - Ürünler ve Piyasa Verileri
Ürünler uç noktaları, mevcut işlem çiftleri, emir defteri anlık görüntüleri, geçmiş mum verileri, son işlemler ve geçerli sunucu zamanı dahil olmak üzere piyasa verileri sağlar. Bunların tümü genel uç noktalardır ve kimlik doğrulaması gerektirmez.
| Metot | Açıklama |
|---|---|
GetPublicProducts |
Mevcut tüm ürünlerin (işlem çiftleri) ayrıntılarıyla birlikte bir listesini döndürür |
GetPublicProduct |
Bir ürünün kimliğine (örneğin BTC-USD) göre ayrıntılarını döndürür |
GetPublicProductBook |
Belirli bir ürün için geçerli emir defterini döndürür |
GetPublicProductCandles |
Bir tarih aralığı ve ayrıntı düzeyi içinde bir ürün için OHLCV mum verilerini döndürür |
GetTrades |
Belirli bir ürün için son işlemleri döndürür |
GetTime |
Geçerli Coinbase sunucu zamanını döndürür |
Mum Ayrıntı Düzeyi Seçenekleri
| Değer | Açıklama |
|---|---|
ONE_MINUTE |
1 dakikalık mumlar |
FIVE_MINUTE |
5 dakikalık mumlar |
FIFTEEN_MINUTE |
15 dakikalık mumlar |
THIRTY_MINUTE |
30 dakikalık mumlar |
ONE_HOUR |
1 saatlik mumlar |
TWO_HOUR |
2 saatlik mumlar |
SIX_HOUR |
6 saatlik mumlar |
ONE_DAY |
Günlük mumlar |
// Get all available products
ShowMessage(oCoinbase.REST_API.GetPublicProducts);
// Get details for BTC-USD
ShowMessage(oCoinbase.REST_API.GetPublicProduct('BTC-USD'));
// Get hourly candles for January 2024
ShowMessage(oCoinbase.REST_API.GetPublicProductCandles(
'BTC-USD', '2024-01-01', '2024-01-31', 'ONE_HOUR'));
// Get recent trades
ShowMessage(oCoinbase.REST_API.GetTrades('BTC-USD'));
REST API - Emirler
Emirler uç noktaları, tam emir yaşam döngüsü yönetimi sağlar. Yeni emirler (market, limit veya stop) verebilir, mevcut emirleri sorgulayabilir, emirleri iptal edebilir ve gerçekleştirmeden önce emir sonuçlarını önizleyebilirsiniz.
| Metot | Açıklama |
|---|---|
PlaceNewOrder |
Tam parametre kontrolüyle yeni bir emir verir |
PlaceMarketOrder |
Market emri vermek için kolaylık metodu (geçerli fiyattan al veya sat) |
PlaceLimitOrder |
Belirtilen bir fiyattan limit emri vermek için kolaylık metodu |
PlaceStopOrder |
Belirtilen bir fiyatta tetiklenen stop emri vermek için kolaylık metodu |
ListOrders |
İsteğe bağlı olarak duruma veya ürüne göre filtrelenmiş, sayfalanmış bir emir listesi döndürür |
GetOrder |
Bir emrin kimliğine göre ayrıntılarını döndürür |
CancelOrder |
Kimliklerine göre bir veya daha fazla açık emri iptal eder |
EditOrder |
Mevcut bir emri değiştirir (örneğin fiyatı veya miktarı değiştirir) |
EditOrderPreview |
Bir emir düzenlemesinin sonucunu gerçekleştirmeden önizler |
PreviewOrder |
Yeni bir emrin sonucunu vermeden önizler (tahmini ücretler, kayma) |
// Place a market buy order for 0.001 BTC
ShowMessage(oCoinbase.REST_API.PlaceMarketOrder(cosBuy, 'BTC-USD', 0.001));
// Place a limit buy order at $40,000
ShowMessage(oCoinbase.REST_API.PlaceLimitOrder(cosBuy, 'BTC-USD', 0.001, 40000));
// List all open orders
ShowMessage(oCoinbase.REST_API.ListOrders);
// Cancel an order by ID
oCoinbase.REST_API.CancelOrder('order-id-here');
İpucu: Gerçek fonları riske atmadan tahmini ücretleri ve gerçekleşme sonuçlarını görmek için canlı emirler vermeden önce PreviewOrder kullanın. Bu, nihai gerçekleşme fiyatının emir defteri derinliğine bağlı olduğu market emirleri için özellikle yararlıdır.
REST API - Gerçekleşmeler (Fills)
Gerçekleşmeler (fills), tamamlanmış veya kısmen gerçekleşmiş bir emri oluşturan bireysel işlemleri temsil eder. Tek bir emir, defterdeki birkaç bekleyen emirle eşleşirse birden fazla gerçekleşmeyle sonuçlanabilir. Gerçekleşmeleri emir kimliğine, ürün kimliğine veya işlem kimliğine göre sorgulayabilirsiniz.
| Metot | Açıklama |
|---|---|
GetFillsByOrderId |
Belirli bir emir için tüm gerçekleşmeleri döndürür |
GetFillsByProductId |
Belirli bir ürün için tüm gerçekleşmeleri döndürür (örneğin BTC-USD) |
GetFillsByTradeId |
Belirli bir işlem kimliği için gerçekleşme ayrıntılarını döndürür |
// Get fills for a specific order
ShowMessage(oCoinbase.REST_API.GetFillsByOrderId('order-id-here'));
// Get all fills for BTC-USD
ShowMessage(oCoinbase.REST_API.GetFillsByProductId('BTC-USD'));
REST API - Pozisyonlar
Pozisyonlar uç noktası, vadeli işlem pozisyonlarını yönetmek için kullanılır. Açık bir vadeli işlem pozisyonunu kapatmanıza olanak tanır.
| Metot | Açıklama |
|---|---|
ClosePosition |
Belirli bir ürün için açık bir vadeli işlem pozisyonunu kapatır |
Tam Kod Örneği
Aşağıdaki örnek, eksiksiz bir iş akışını gösterir: Coinbase'e bağlanma, hesapları listeleme, geçmiş mum verilerini alma, gerçek zamanlı bir ticker'a abone olma ve bir market emri verme.
var
oClient: TsgcWebSocketClient;
oCoinbase: TsgcWSAPI_Coinbase;
begin
// Create and configure the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oCoinbase := TsgcWSAPI_Coinbase.Create(nil);
oCoinbase.Client := oClient;
// Configure API credentials
oCoinbase.Coinbase.ApiKey := 'your_api_key';
oCoinbase.Coinbase.ApiSecret := 'your_api_secret';
// Connect to Coinbase
oClient.Active := True;
// REST: List all accounts in your portfolio
ShowMessage(oCoinbase.REST_API.ListAccounts);
// REST: Get hourly candles for BTC-USD
ShowMessage(oCoinbase.REST_API.GetPublicProductCandles(
'BTC-USD', '2024-01-01', '2024-01-31', 'ONE_HOUR'));
// WebSocket: Subscribe to real-time ticker
oCoinbase.SubscribeTicker('BTC-USD');
// REST: Place a market buy order for 0.001 BTC
ShowMessage(oCoinbase.REST_API.PlaceMarketOrder(cosBuy, 'BTC-USD', 0.001));
end;
Notlar ve En İyi Uygulamalar
API Anahtarı İzinleri
Coinbase Developer Platform üzerinde API anahtarları oluştururken, en az ayrıcalık ilkesini izleyin. Yalnızca okunabilir bir gösterge panosu için yalnızca View iznini etkinleştirin. Bir ticaret botu için Trade iznini ekleyin, ancak uygulamanızın hesaplar arasında fon taşıması gerekmiyorsa Transfer iznini devre dışı bırakın.
Emir Yönü Sabitleri
Emir verirken, emir yönü için Delphi numaralandırma sabitlerini kullanın:
| Sabit | Açıklama |
|---|---|
cosBuy |
Alış emri (temel para birimini edinme) |
cosSell |
Satış emri (temel para birimini satma) |
Ticker ile TickerBatch Karşılaştırması
Her fiyat güncellemesine gerçek zamanlı olarak ihtiyacınız olduğunda (örneğin bir emir gerçekleştirme motoru için) SubscribeTicker kullanın. Yalnızca periyodik anlık görüntülere ihtiyacınız olduğunda (örneğin bir gösterge panosu için) SubscribeTickerBatch kullanın; bu, aynı veriyi azaltılmış sıklıkta sunarak bant genişliğinden ve işlem yükünden tasarruf sağlar.
İstek Sınırları (Rate Limits)
Coinbase Advanced Trade, REST API çağrılarına istek sınırları uygular. Sınırlar uç nokta kategorisine göre değişir (genel ve özel, okuma ve yazma). REST uç noktalarını sıkı döngülerde sorgulamaktan kaçının; bunun yerine gerçek zamanlı veriler için WebSocket aboneliklerini kullanın ve REST çağrılarını isteğe bağlı sorgular ve emir işlemleri için saklayın.
İpucu: Sağlam bir ticaret uygulaması için, gerçek zamanlı emir durumu güncellemeleri içinSubscribeUser kanalını canlı piyasa fiyatları için SubscribeTicker ile birleştirin. İşlemleri gerçekleştirmek için REST PlaceMarketOrder veya PlaceLimitOrder metotlarını kullanın ve gerçekleşmeyi GetOrder sorgulaması yapmak yerine kullanıcı kanalı aracılığıyla onaylayın.
