ICRYPEX - API sayesinde piyasa bilgilerini, hesap hareketlerinizi ve bakiyenizi alabilir; piyasa ve limit emir girişi yapabilir, emirlerinizi iptal edebilirsiniz.

HACİME GÖRE İŞLEM KOMİSYONLARI

API

THE API (UYGULAMA PROGRAMLAMA ARAYÜZÜ)

Bir uygulamanın işlevlerine dışarıdan veya uzaktan erişilip bu işlevlerin kullanılmasını sağlayan arayüzdür. API, bir sunucunun üzerindeki uygulamaya farklı platformlardan ulaşılmasını ve sorduğu sorgulara cevap alarak işlem üretmesine olanak sağlar. Icrypex, ilgili API sorguları ile siz ihtiyacınız olan bilgilere erişme olanağı tanır. Bu şekilde, daima Icrypex platformuna bağlanmadan da alım-satım yapabilir, kripto paraların fiyat ve hacimlerini izleyebilirsiniz.

Genel API Bilgileri

  • Bazı uç noktalar bir API Anahtarı gerektirir.
  • Temel uç nokta: https://api.icrypex.com
  • Tüm uç noktalar bir JSON nesnesi döndürür.
  • Veriler artan sırada döndürülür. Önce en eski, en son en yeni şeklindedir.
  • Tüm zaman ve zaman damgası ile ilgili alanlar milisaniye cinsindendir.

HTTP Dönüş Kodları

  • Hatalı biçimlendirilmiş istekler için HTTP 4XX dönüş kodları kullanılır; sorun gönderici tarafındadır.
  • WAF Limiti (Web Uygulaması Güvenlik Duvarı) ihlal edildiğinde HTTP 403 dönüş kodu kullanılır.
  • İstek hızı limiti aşıldığında HTTP 429 dönüş kodu kullanılır.
  • Dahili hatalar için HTTP 5XX dönüş kodları kullanılır; Sorun Sunucu tarafındadır. Bunu bir başarısızlık operasyonu olarak GÖRMEMEK önemlidir; yürütme durumu BİLİNMİYOR ve başarılı olabilirdi.

Cevap alanları açıklaması

Ad Türü Zorunlu Açıklama
code Number Evet Hata Kodu,0 başarılı,diğerleri başarısız
msg String Evet Hata mesajı
timestamp Number Evet Sunucu zaman damgası
data Object Hayır Yanıt verisi

Uç Noktalar Hakkında Genel Bilgiler

  • GET,POST uç noktaları için parametreler bir query string gönderilmelidir.
  • Parametreler herhangi bir sırayla gönderilebilir.

LİMİTLER

Limitler Hakkında Genel Bilgi

  • Başlıklar için aşağıdaki intervalLetter değerleri aşağıdaki gibidir:
    • SECOND => S
    • MINUTE => M
    • HOUR => H
    • DAY => D
  • intervalNum aralığın miktarını tanımlar. Örneğin, intervalNum 5 ile intervalLetter M harfi "Her 5 dakikada bir" anlamına gelir.
  • Herhangi bir oran limiti ihlal edildiğinde 429 iade edilecektir.

IP Limitleri

  • Bir 429 alındığında, API olarak geri çekilmek ve API'ye spam göndermemek sizin yükümlülüğünüzdür.
  • Hız limitlerini tekrar tekrar ihlal etmek ve/veya 429'ları aldıktan sonra geri çekilmemek, otomatik bir IP yasağına (HTTP durumu 418) neden olacaktır.
  • IP yasakları izlenir ve mükerrer suçlular için süre for repeat offenders, 2 dakikadan 3 güne kadar ölçeklenir.
  • 418 veya 429 yanıtlı bir Retry-After başlığı gönderilir ve 418 olması durumunda yasağı önlemek için veya 429 olması durumunda yasak bitene kadar beklemek için gereken saniye sayısını verir.
  • API'deki sınırlar, API anahtarlarına değil, IP'lere bağlıdır.

Talep oranı limitine dahil olmayacağından, mümkün olduğunca veri almak için httpclient, webclient kullanmanızı öneririz.

Sipariş Oranı Limitleri

  • Emir oranı limiti her hesap için sayılır.

Uç nokta güvenlik türü

  • Her uç nokta, onunla nasıl etkileşim kuracağınızı belirleyen bir güvenlik türüne sahiptir. Bu, uç noktada İSİM yanında belirtilir.

    • Herhangi bir güvenlik türü belirtilmemişse güvenlik türünün HİÇBİRİ olduğunu varsayın.
  • API anahtarları, x-access-token başlığı aracılığıyla Rest API'ye veya api_key parametresi aracılığıyla sorgu dizesine geçirilir.
  • API anahtarları büyük/küçük harf duyarlıdır.
  • API anahtarları,yalnızca belirli türdeki güvenli uç noktalara erişmek için yapılandırılabilir.
Güvenlik Türü Açıklaman
HİÇBİRİ Uç Noktaya serbestçe erişilebilir.
API ANAHTARI Uç Noktası, geçerli bir API Anahtarı gönderilmesini gerektirir.

Zamanlama güvenliği

  • SIGNED uç noktası ayrıca,isteğin oluşturulduğu ve gönderildiği zamanın milisaniyelik timestamp, olması gereken bir parametrenin (timestamp) gönderilmesini gerektirir.
  • İsteğin geçerli olduğu zaman damgasından sonraki milisaniye sayısını belirtmek için recvWindow, adlı ek bir parametre gönderilebilir.timestamp adlı ek bir parametre gönderilebilir. recvWindow gönderilmezse, varsayılan olarak 5000'dir..
  • Mantık aşağıdaki gibidir:
    if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow)
    {
        // process request
    }
    else
    {
        // reject request
    }
                                
  • Ciddi ticaret zamanlama ile ilgilidir. Ağlar kararsız ve güvenilmez olabilir, bu da isteklerin sunuculara ulaşmasının değişen miktarlarda zaman almasına neden olabilir. recvWindow, ile isteğin belirli bir milisaniye sayısı içinde işlenmesi veya sunucu tarafından reddedilmesi gerektiğini belirtebilirsiniz.

5000 veya daha az küçük bir recvWindow kullanılması tavsiye edilir! Maksimum sayı 60.000'i geçemez!

GET/open/v1/orders için İŞARETLİ Uç Nokta Örnekleri

Burada, geçerli imzalı bir yükün nasıl gönderileceğine ilişkin adım adım bir örnek verilmiştir

Anahtar Değer
api_key cfDC92B191b9B3Ca3D842Ae0e01108CBKI6BqEW6xr4NrPus3hoZ9Ze9YrmWwPFV

Parametre Değer
symbol BTC/TRY
side 1 1 - Buy 2 - Sell
type 1 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
quantity '0.16'
price '7500'
recvWindow 5000
timestamp 1581720670624

Örnek 1: Sorgu dizesi olarak

  • Query String:symbol=BTC/TRY&side=1&type=1&quantity=0.16&price=7500&timestamp=1581720670624&recvWindow=5000&api_key=cfDC92B191b9B3Ca3D842Ae0e01108CBKI6BqEW6xr4NrPus3hoZ9Ze9YrmWwPFV
    - api_key, sorgu dizesi yerine x-access-token istek başlığında da gönderilebilir.

Genel API Tanımlars

Terminoloji

  • base asset bir sembolün miktarı olan varlığı ifade eder.
  • quote assetbir sembolün fiyatı olan varlığı ifade eder.

ENUM tanımları

Sipariş durumu (status):
  • 1 YEN
  • 2 DOLU
  • 3 İPTAL
  • 4 KISMEN DOLU
  • 5 REDDEDİLDİ
  • 6 SÜRESİ DOLDU
Sipariş türleri (orderTypes, type)
  • 1 LİMİT
  • 2 PİYASA
  • 3 KÂR AL
  • 4 KAYBI DURDUR
Sipariş tarafı (side):
  • 1 SATIN AL
  • 2 SATIŞ

Genel uç noktalar

Sunucu zamanını kontrol edin

GET /open/v1/common/time

Rest API bağlantısını test edin ve mevcut sunucu zamanını alın.

Parametreler: HİÇBİRİ

Cevap:
{
    "code": 0,
    "msg": "success",
    "timestamp": 1572265137927
}
                    

Tüm Desteklenen İşlem Sembollerini Getirir

GET /open/v1/common/symbols

Bu uç nokta, tüm Exchange'in desteklenen ticaret sembolünü döndürür.

Parametreler: NONE

Cevap:
{
    "code": 0,
    "msg": "success",
    "data": {
        "list": [
            {
                "symbol": "BTC/TRY",
                "baseAsset": "",BTC
                "baseAssetname": "Bitcoin",
                "basePrecision": 8,
                "quoteAsset": "TRY",
                "quatoAssetname": "Turkish Lira",
                "quotePrecision": 8,
                "quotePrecisionShow": 8,
                "status": 1 // 0: inactive , 1: active,
                "description": "Bitcoin, eşten eşe ağ teknolojisini kullanarak herhangi..."
            }
        ]
    },
    "timestamp": 1571921637091
}
                    

Market Data endpoints

Order book

GET /open/v1/market/depth

Parameters:

Ad Türü Zorunluy Açıklama
symbol STRING EVET
limit INT HAYIR Varsayılan 100; max 5000. Geçerli limitler:[5, 10, 20, 50, 100, 500]

Cevap
{
    "code": 0,
    "msg": "success",
    "data": {
        "lastUpdateId": 1027024,
        "bids": [
         "price": "4.00000000",
         "amount": "431.00000000"
        ],
        "asks": [
         "price":"4.00000200",
         "amount":"12.00000000"
        ]
    },
    "timestamp": 1571921637091
}
                    

Son alım satım listesi

GET /open/v1/market/trades

Son alım satımları getirir (son 500'e kadar).

Parametereler:

Ad Tür Zorunlu Tanım
symbol STRING YES
fromId LONG NO ID to get trades from INCLUSIVE.
limit INT HAYIR Varsayılan 500; max 1000.
Cevap:
{
    "code": 0,
    "msg": "success",
    "data": [
        {
            "id": 238457, // transaction id
            "price": "4.00000100", 
            "qty": "12.00000000", // Quantity
            "time": 1499865549590,
            "isBuyerMaker": true,
            "isBestMatch": true
        }
    ],
    "timestamp": 1571921637091
}
                    

Sıkıştırılmış/Toplu alım satım listesi

GET /open/v1/market/agg-trades

Sıkıştırılmış, toplu alım satımları getirir. Aynı siparişten aynı fiyatla aynı anda doldurulan işlemlerde toplam miktar olacaktır.

Parametereler:

Ad Tür Zorunlu Tanım
symbol STRING YES
fromId LONG HAYIR ID to get aggregate trades from INCLUSIVE.
startTime LONG NO Timestamp in ms to get aggregate trades from INCLUSIVE.
endTime LONG HAYIR Timestamp in ms to get aggregate trades until INCLUSIVE.
limit INT NO Default 500; max 1000.
  • fromId, startTime ve endTime gönderilmezse, en son toplu alım satımlar geri döndürülür.

Cevap::
{
    "code": 0,
    "msg": "success",
    "data": [
        {
            "a": 261429, // transaction id
            "p": "0.01633102", // Price
            "q": "4.70443515", // Quantity
            "f": 27781, // first fill order id
            "l": 27781, // last fill order id
            "T": 1498793709153, // Fill Datetime
            "m": true, // is Maker
            "M": true
        }
    ],
    "timestamp": 1571921637091
}
                    

Hesap uç noktaları

Yeni sipariş (İŞARETLENDİ)

POST /open/v1/orders  (HMAC SHA256)

Yeni bir emirle gönderilir.

Parametreler:

Ad Tür Zorunlu Tanım
symbol STRING EVET
side ENUM EVET 1 - Buy, 2 - Sell
type ENUM EVET 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
quantity STRING HAYIR
quoteOrderQty STRING HAYIR
price STRING HAYIR
clientId STRING HAYIR Müşterinin sipariş için özel kimliği, Sunucu benzersizliğini kontrol etmez. Gönderilmezse otomatik olarak oluşturulur.
stopPrice STRING HAYIR STOP LOSS, TAKE PROFIT ile birlikte kullanılır
icebergQty STRING HAYIR For future use.
recvWindow LONG HAYIR The value cannot be greater than 60000
timestamp LONG YES

Türe göre ek zorunlu parametreler: tip:

Tip Ek zorunlu parametreler
1 quantity, price
2 quantity, quoteOrderQty (sat) yada quantity (al)
3 quantity, stopPrice
4 quantity, stopPrice

Diğer bilgiler:

  • STOP LOSS ve TAKE PROFIT stopPrice'a ulaştığında MARKET yapar
  • quantity kullanan MARKET orders using emirleri, bir kullanıcının piyasa fiyatına göre ne kadar almak veya satmak istediğini belirtir.
  • quoteOrderQty kullanan MARKET emirleri kullanıcının teklif varlığı için (satın alırken) harcamak istediği tutarı belirtir; doğru quantity piyasa likiditesine ve quoteOrderQty'ye göre belirlenecektir.

Hem MARKET hem de LIMIT sürümleri için emir fiyatı kurallarını piyasa fiyatına göre tetikler:

  • Piyasa fiyatının üzerinde fiyat: STOP LOSS BUY, TAKE PROFIT SELL
  • Piyasa fiyatının altında fiyat: STOP LOSS SELL, TAKE PROFIT BUY

Cevap:
{
    "code": 0,
    "message": "success",
    "data": {
        "orderId": "452367",
        "createTime": 1550130502385
    },
    "timestamp": 1550130502489
}
                    

Sorgu sırası(İŞARETLENDİ)

GET /open/v1/orders/detail (HMAC SHA256)

Bir sıralamanın durumunu kontrol eder.

Parametreler:

Ad Türü Zorunlu Açıklama
orderId LONG YES
recvWindow LONG HAYIR Değer60000'den büyük olamaz
timestamp LONG EVET

Cevap
{
    "code": 0,
    "message": "success",
    "data": {
        "orderId": 456123,
        "orderListId": -1, // Future use
        "clientId": "142334", // Customer Id
        "symbol": "BTC/TRY",
        "side": 1, // Buy : 1 - Sell : 2
        "type": 1, // 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
        "price": 110,
        "status": 0 , //Terminology > ENUM definitions > Order status (status)
        "origQty": 10.88, // Base Quantity
        "origQuoteQty": 0, // Quato Quantity
        "executedQty": 0, // for future use
        "executedPrice": 0, // for future use
        "executedQuoteQty": 0, // for future use
        "createTime": 1550130502000
    },
    "timestamp": 1550130554182
}
                    

Emiri iptal et (İŞARETLENDİ)

POST /open/v1/orders/cancel  (HMAC SHA256)

Aktif bir emri iptal eder

Parametreler:

Ad Türü Zorunlu Açıklama
orderId LONG EVET
recvWindow LONG HAYIR Değer 60000'den büyük olamaz
timestamp LONG EVET

Cevap:
{
    "code": 0,
    "message": "success",
    "data": {
        "orderId": 456712,
        "orderListId": -1,
        "clientId": "myOrder1",
        "symbol": "BTC/TRY",
        "side": 1, // Buy : 1 - Sell : 2
        "type": 1, // 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
        "price": 1,
        "status": 0, // Terminology > ENUM definitions > Order status (status)
        "origQty": 10.88, // Base Quantity
        "origQuoteQty": 0, // Quato Quantity
        "executedQty": 0, // for future use
        "executedPrice": 0, // for future use
        "executedQuoteQty": 0, // for future use
        "createTime": 1550130502000
        },
    "timestamp": 1550130554182
}
                    

Tüm emirler (İŞARETLENDİ)

GET /open/v1/orders/list (HMAC SHA256)

Aktif, iptal edilmiş veya doldurulmuş tüm hesap emirlerini getirir.

Parametreler

Ad Tür Zorunlu Açıklama
symbol STRING EVET
type ENUM HAYIR 1 - Açık, 2 - Geçmiş
side ENUM HAYIR
startTime LONG NO
endTime LONG NO
fromId String NO Gelecekteki kullanım için.
direct ENUM NO Gelecekteki kullanım için.
limit INT NO Varsayılan 500; max 1000.
recvWindow LONG HAYIR Değer 60000'den büyük olamaz
timestamp LONG EVET
Cevap:
{
    "code": 0,
    "msg": "success",
    "data": {
        "list": [
            {
                "orderId": "213456",
                "clientId": "13242", // Customer ID
                "symbol": "BTC/TRY",
                "symbolType": 1,  // for future use
                "side": 1, // Buy : 1 - Sell : 2
                "type": 1, // 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
                "price": "0.1",
                "origQty": "10", // Base Quantity
                "origQuoteQty": "1", // Quato Quantity
                "executedQty": "0", // for future use
                "executedPrice": "0", // for future use
                "executedQuoteQty": "0", // for future use
                "timeInForce": 1, // for future use
                "stopPrice": "0.0000000000000000", // Price for Stop Loss or Take Profit Order Tpes
                "icebergQty": "0.0000000000000000", // for future use
                "status": 0, //Terminology > ENUM definitions > Order status (status)
                "isWorking": 0,
                "createTime": 1572692016811
            }
        ]
    },
    "timestamp": 1572860756458
}
                    

Açık Emirler (İŞARETLENDİ)

GET /open/v1/openOrders (HMAC SHA256)

Tüm veya sembol bazlı hesap açık emirleri alın.

Parametreler

Ad Türü Zorunlu Açıklama
symbol STRING NO
recvWindow LONG Hayır Değer 60000'den büyük olamaz
timestamp LONG YES
Cevap:
{
    "code": 0,
    "msg": "success",
    "data": {
        "list": [
            {
                "orderId": "213456",
                "clientId": "13453", // Customer ID
                "symbol": "BTC/TRY",
                "symbolType": 1, // for future use
                "side": 1,/ / Buy : 1 - Sell : 2
                "type": 1,// 1 - Limit, 2 - Market, 3 - Take Profit, 4 - Stop Loss
                "price": "0.1",
                "origQty": "10", // Base Quantity
                "origQuoteQty": "1",/ / Quato Quantity
                "executedQty": "0", // for future use
                "executedPrice": "0", // for future use
                "executedQuoteQty": "0", // for future use
                "timeInForce": 1,  // for future use
                "stopPrice": "0.0000000000000000", // Price for Stop Loss or Take Profit Order Tpes
                "icebergQty": "0.0000000000000000", // for future use
                "status": 0, //Terminology > ENUM definitions > Order status (status)
                "isWorking": 0,
                "createTime": 1572692016811
            }
        ]
    },
    "timestamp": 1572860756458
}
                    

Açık Emirler (İŞARETLENDİ)

GET /open/v1/account/spot (HMAC SHA256)

Tüm veya sembol bazlı hesap açık emirleri alın.

Parametreler:

Ad Tür Zorunlu Açıklama
recvWindow LONG HAYIR Değer 60000'den büyük olamaz
timestamp LONG EVET
Response:
{
    "code": 0,
    "msg": "success",
    "data": {
        "list": [
            {
                "makerCommission": "10.00000000",
                "takerCommission": "10.00000000",
                "buyerCommission": "0.00000000",
                "sellerCommission": "0.00000000",
                "asset": "BTC",
                "free": "0.5550000000000000",
                "locked": "0000000000000000"
            }
        ]
    },
    "timestamp": 1572514387348
}
                   

Hesap Bilgisi (İŞARETLENDİ)

GET /open/v1/accountSnapshot (HMAC SHA256)

Cari hesap bilgilerini getirir.

Parametreler:

Ad Tür Zorunlu Tanım
Türü STRING HAYIR Currently support only SPOT
startTime LONG NO
endTime LONG NO
recvWindow LONG NO The value cannot be greater than 60000
timestamp LONG YES
Cevap:
{
    "code": 0,
    "msg": "success",
    "snapShotVos":[{
        "balances": [
            {
                "asset": "BTC",
                "free": "0.5550000000000000",
                "locked": "0000000000000000"
            },
            {
                "asset": "LTC",
                "free": "200.430000000000000",
                "locked": "0000000000000000"
            }]}]
	    "type": "SPOT",
	    "timestamp": 1572514387348
}
                    

Hesap Varlık Bilgileri (İŞARETLENDİ)

GET /open/v1/account/spot/asset (HMAC SHA256)

Belirli bir varlık için cari hesap bilgilerini getirir.

Parametreler:

Ad Tür Zorunlu Tanım
asset STRING YES
recvWindow LONG HAYIR Değer 60000'den büyük olamaz
timestamp LONG EVET
Cevap
{
    "code": 0,
    "msg": "success",
    "data": {
        "asset": "BTC",
        "free": "0.5550000000000000",
        "locked": "0000000000000000"
    },
    "timestamp": 1572514387348
}
                    

Günlük Hesap Bilgileri (İŞARETLENDİ)

GET /open/v1/orders/trades  (HMAC SHA256)

Tüm veya sembol bazlı hesap açık emirleri alın.

Parametreler:

Ad Tür Zorunlu Tanım
symbol STRING EVET
orderId String HAYIR
startTime LONG HAYIR
endTime LONG HAYIR
fromId LONG HAYIR TradeId to fetch from. Default gets most recent trades.
direct ENUM HAYIR For future use.
limit INT HAYIR Default 500; max 1000.
recvWindow LONG HAYIR The value cannot be greater than 60000
timestamp LONG EVET

Notes:

  • "fromId" alanı tanımlanmışsa, bu alan "direct" zorunlu hale gelir.
Cevap
{
    "code": 0,
    "msg": "success",
    "data": {
        "list": [
            {
                "tradeId": "X-241568",
                "orderId": "241568",
                "symbol": "BTC/TRY",
                "price": "0.04398",
                "qty": "0.0001",
                "quoteQty": "520.989",
                "commission": "0.000025",
                "commissionAsset": "BTC",
                "isBuyer": 1,
                "isMaker": 0,
                "isBestMatch": 1,
                "time": "1572920872276"
            }
        ]
    },
    "timestamp": 1573723498893
}
                    

Genel WSS bilgileri

  • Temel uç nokta is:wss://stream-cloud.icrypex.com 'dur ve aşağıdaki URL'lerle bağlantı başarılı olduktan sonra, akışa erişmek için boş bir veri gönderilmelidir.
  • Akışlara tek bir ham akışta veya birleşik bir akışta erişilebilir
  • Ham akışlara /ws?<streamName>(example; wss://stream-cloud.icrypex.com/ws?btc/[email protected]) linkinden erişilir.
  • Birleşik akışlara /stream?streams=<streamName1>\<streamName2>\<streamName3>(example; wss://stream-cloud.icrypex.com/stream?streams=btc/[email protected]\ltc/[email protected]) linkinden erişilir
  • Birleşik akış olayları şu şekilde sarılır: {"stream":"<streamName>","data":<rawPayload>}
  • 'a tek bir bağlantı stream-cloud.icrypex.com yalnızca 24 saat geçerlidir; 24 saat işaretiyle bağlantının kesilmesi beklenir.
  • Websocket sunucusu her 3 dakikada bir ping çerçevesi gönderir. Websocket sunucusu 5 dakikalık bir süre içinde bağlantıdan bir pong çerçevesi almazsa, bağlantı kesilir. İstenmeyen pong çerçevelerine izin verilir.

Canlı Akışlara Üye Olma/Üyelikten Çıkma

  • Akışlara üye olmak/üyelikten çıkmak için websocket örneği aracılığıyla aşağıdaki veriler gönderilebilir. Örnekler aşağıda görülebilir.
  • JSON yüklerinde kullanılan id ileri geri giden mesajları benzersiz bir şekilde tanımlamak için tanımlayıcı olarak kullanılan imzasız bir INT'dir.
  • Yanıtta, alınan sonuç null ise bu, gönderilen isteğin sorgu dışı istekler için başarılı olduğu anlamına gelir (örn. Üye Olmak/Üyelikten Çıkmak). Bir akışa kaydolunuz.

Bir akışa kaydolunuz

Akış aboneliğinden çık

  • Talept
    {
        "method": "UNSUBSCRIBE",
        "params": [
            "btc/[email protected]"
        ],
        "id": 312
    }
                                
  • Cevap
    {
        "result": null,
        "id": 312
    }
                                

Abonelikleri Listeleme

  • Talep
    {
        "method": "LIST_SUBSCRIPTIONS",
        "id": 3
    }
                                
  • Cevap
    {
        "result": [
            "btc/[email protected]"
        ],
        "id": 3
    }
                                

Özellikleri Ayarlama

Şu anda ayarlanabilen tek özellik, birleşik akış yüklerinin etkinleştirilip etkinleştirilmeyeceğini ayarlamaktır. Birleştirilmiş özellik kullanılarak bağlanırkenfalse when connecting using /ws/ ("ham akışlar") true ve /stream/ olarak ayarlanır..

  • İstek
    {
        "method": "SET_PROPERTY",
        "params": [
            "combined",
            true
        ],
        "id": 5
    }
                                
  • Cevap
    {
        "result": null,
        "id": 5
    }
                                

Özellikleri Alma

  • Talep
    {
        "method": "GET_PROPERTY",
        "params": [
            "combined"
        ],
        "id": 2
    }
                                
  • Cevap
    {
        "result": true, // Indicates that combined is set to true.
        "id": 2
    }
                                

Hata Mesajları

Hata Mesajları
{"code": 0, "msg": "Unknown property"}
{"code": 1, "msg": "Invalid value type: expected Boolean"}
{"code": 2, "msg": "Invalid request: property name must be a string"}
{"code": 2, "msg": "Invalid request: request ID must be an unsigned integer"}
{"code": 2, "msg": "Invalid request: unknown variant of SUBSCRIBE, UNSUBSCRIBE, LIST_SUBSCRIPTIONS, SET_PROPERTY, GET_ PROPERTY"} Sağlanan yöntemde olası yazımhatası beklenen değerlerden hiçbiri değildi
{"code": 2, "msg": "Invalid request: too many parameters"}
{"code": 2, "msg": "Invalid request: property name must be a string"}
{"code": 2, "msg": "Invalid request: missing field method "}
{"code":3,"msg":"Invalid JSON format "}

Ayrıntılı Akış bilgileri

Toplu Alım Satım Akışları

Toplu Alım Satış Akışları, tek bir alıcı emri için toplanan ticaret bilgilerini gönderir.

Akış Adı: <symbol>@aggTrade
Güncelleme Hızı: Real-time

Yük:
{
  "e": "aggTrade",  // Event type
  "E": 123456789,   // Event time
  "s": "BTC/TRY",   // Symbol
  "a": 123445,       // Aggregate trade ID
  "p": "0.001",     // Price
  "q": "100",       // Quantity
  "f": 100,         // First trade ID
  "l": 105,         // Last trade ID
  "T": 123456785,   // Trade time
  "m": true,        // Is the buyer the market maker?
  "M": true         // Ignore
}
                    

İşlem Akışları

İşlem Akışları, ham ticaret bilgilerini aktarır; her ticaretin benzersiz bir alıcısı ve satıcısı vardır.

Akış Adı: <symbol>@trade
Güncelleme Hızı: Real-time

Yük:
{
  "e": "trade",     // Event type
  "E": 123456789,   // Event time
  "s": "BTC/TRY",   // Symbol
  "t": 12345,       // Trade ID
  "p": "0.001",     // Price
  "q": "100",       // Quantity
  "b": 88,          // Buyer order ID
  "a": 50,          // Seller order ID
  "T": 123456785,   // Trade time
  "m": true,        // Is the buyer the market maker?
  "M": true         // Ignore
}
                    

Bireysel Sembol Mini Ticker Akışı

24 saat yuvarlanan pencere mini borsa takip istatistikleri. Bunlar UTC gününün istatistikleri DEĞİL, önceki 24 saat için 24 saatlik bir yuvarlanan penceredir.

Akış Adı: <symbol>@miniTicker
Güncelleme Hızı: 1000ms

Payload:
  {
    "e": "24hrMiniTicker",  // Event type
    "E": 123456789,         // Event time
    "s": "BTC/TRY",         // Symbol
    "c": "0.0025",          // Close price
    "o": "0.0010",          // Open price
    "h": "0.0025",          // High price
    "l": "0.0010",          // Low price
    "v": "10000",           // Total traded base asset volume
    "q": "18"               // Total traded quote asset volume
  }
                    

Tüm Market Mini Ticker Akışı

Bir dizide değişen tüm semboller için 24 saatlik hareketli mini borsa takip istatistikleridir. Bunlar UTC gününün istatistikleri DEĞİL, önceki 24 saat için 24 saatlik bir yuvarlanan penceredir. Dizide yalnızca değişen işaretlerin bulunacağını unutmayınız.

AkışAdı: [email protected]
Günceleme Hızı: 1000ms

Yük:
[
  {
    "e": "24hrMiniTicker",  // Event type
    "E": 123456789,         // Event time
    "s": "BTC/TRY",         // Symbol
    "c": "0.0025",          // Close price
    "o": "0.0010",          // Open price
    "h": "0.0025",          // High price
    "l": "0.0010",          // Low price
    "v": "10000",           // Total traded base asset volume
    "q": "18"               // Total traded quote asset volume
  }
]
                   

Bireysel Sembol Ticker Akışları

Bir dizide değişen tüm semboller için 24 saatlik hareketli borsa senedi takip istatistikleridir. Bunlar UTC gününün istatistikleri DEĞİL, önceki 24 saat için 24 saatlik bir yuvarlanan penceredir. Dizide yalnızca değişen işaretlerin bulunacağını unutmayın.

Akış Adı <symbol>@Ticker
Güncelleme Hızı: 2000ms

Yük:
{
  "e": "24hrTicker",  // Event type
  "E": 123456789,     // Event time
  "s": "BNBBTC",      // Symbol
  "p": "0.0015",      // Price change
  "P": "250.00",      // Price change percent
  "w": "0.0018",      // Weighted average price
  "x": "0.0009",      // First trade(F)-1 price (first trade before the 24hr rolling window)
  "c": "0.0025",      // Last price
  "Q": "10",          // Last quantity
  "b": "0.0024",      // Best bid price
  "B": "10",          // Best bid quantity
  "a": "0.0026",      // Best ask price
  "A": "100",         // Best ask quantity
  "o": "0.0010",      // Open price
  "h": "0.0025",      // High price
  "l": "0.0010",      // Low price
  "v": "10000",       // Total traded base asset volume
  "q": "18",          // Total traded quote asset volume
  "O": 0,             // Statistics open time
  "C": 86400000,      // Statistics close time
  "F": 0,             // First trade ID
  "L": 18150,         // Last trade Id
  "n": 18151          // Total number of trades
}
                   

Sembol Sipariş Defteri Kodu

Bir sembol veya semboller için sipariş defterindeki en iyi fiyat/adet.

AkışAdı: <symbol>@bookTicker
Güncelleme Hızı: 500ms

Yük:
  {
    "u": 823453, // Last Update id
    "s": "BTC/TRY",         // Symbol
    "b": "0.0025",          // Best bid price
    "B": "0.0010",          // Best bid Amount
    "a": "0.0025",          // Best ask price
    "A": "0.0010",          // Best ask amount
  }
                    

Kısmi Kitap Derinliği Akışları

AkışAdı: <symbol>@depth
Güncelleme Hızı: 1000ms

Yük:
{
  "lastUpdateId": 160,  // Last update ID
  "bids": [             // Bids to be updated
    [
     "Price": "0.0024",         // Price level to be updated
     "Amount": "10"              // Quantity
    ]
  ],
  "asks": [             // Asks to be updated
    [
     "Price": "0.0026",         // Price level to be updated
     "Amount": "100"            // Quantity
    ]
  ]
}
                    

Fark. Derinlik Akışı

Bir emir defterini yerel olarak yönetmek için kullanılan sipariş defteri fiyatı ve miktar derinliği güncellemeleri.

Akış adı: <symbol>@depth
Güncelleme Hızı: 200ms

Payload:
{
  "e": "depthUpdate", // Event type
  "E": 123456789,     // Event time
  "s": "BTC/TRY",     // Symbol
  "U": 157,           // First update ID in event
  "u": 160,           // Final update ID in event
  "b": [              // Bids to be updated
    [
     "Price": "0.0024",       // Price level to be updated
     "Amount": "10"            // Quantity
    ]
  ],
  "a": [              // Asks to be updated
    [
     "Price": "0.0026",       // Price level to be updated
     "Amount": "100"           // Quantity
    ]
  ]
}
                    

Yerel bir sipariş defteri nasıl doğru şekilde yönetilir?

  • 1. wss://stream-cloud.icrypex.com/ws?btc/[email protected] adresine bir akış açınız.
  • 2. Akıştan aldığınız olayları arabelleğe alınız.
  • 3. https://api.icrypex.com/open/v1/market/depth?symbol=BTC/TRY&limit=1000adresinden derinlik anlık görüntüsü alınız.
  • 4. Anlık görüntüde u'nun <= lastUpdateId olduğu herhangi bir olayı bırakınız.
  • 5. İşlenen ilk olayda U U <= lastUpdateId+1 AND u >= lastUpdateId+1olmalıdır.
  • 6. Yayını dinlerken her yeni olayın U'su bir önceki olayın u+1'ine eşit olmalıdır.
  • 7. Her bir olaydaki veriler, bir fiyat düzeyi için mutlak miktardır.
  • 8. Miktar 0 ise fiyat seviyesini kaldırınız.
  • 9. Yerel sipariş defterinizde olmayan bir fiyat seviyesini kaldıran bir olay almanız normaldir.

Örnek Kodlar

WebSocket Akışı

    using WebSocketSharp;
    
    WebSocket ws = null;
               
    private void WSSConenct()
    {
        try
        {
    
            // for subscribe trades first connect to wss://stream-cloud.icrypex.com and then send {"method": "SUBSCRIBE","params":["btc/[email protected]","ltc/[email protected]"],"id": 2}
            // for subscribe last orders first connect to wss://stream-cloud.icrypex.com and then send{ "method": "SUBSCRIBE","params":["btc/[email protected]","ltc/[email protected]"],"id": 2}
            // for subscribe aggregate trades first  connect to wss://stream-cloud.icrypex.com and then {"method": "SUBSCRIBE","params":["btc/[email protected]","ltc/[email protected]"],"id": 2}
            // for subscribe miniticker first connect to wss://stream-cloud.icrypex.com and then { "method": "SUBSCRIBE","params":["btc/[email protected]","ltc/[email protected]"],"id": 2}
            // for subscribe diff miniticker first connect to wss://stream-cloud.icrypex.com and then { "method": "SUBSCRIBE","params":["[email protected]"],"id": 2}
    
            // for single stream connect with total URL (for example; wss://stream-cloud.icrypex.com/ws?btc/[email protected]) and then send dummy data to start stream
            // for combined stream connect with total URL (for example; wss://stream-cloud.icrypex.com/stream?streams=btc/[email protected]\ltc/[email protected]\eth/[email protected]) and then send dummy data to start stream 
    
            string ConnectionURL = "wss://stream-cloud.icrypex.com/ws?btc/[email protected]";
    
            ws = new WebSocket(ConnectionURI);
    
            ws.OnMessage += WebSocketDataReceived;
            ws.OnOpen += WebSocketOpened;
            ws.OnError += WebSocketError;
            ws.OnClose += WebSocketClose;
            ws.Connect();
    
            if (ws != null)
                ws.Send("");
        }
        catch (Exception ex)
        {
            // Error
        }
    }
    
    private void WebSocketError(object sender, ErrorEventArgs e)
    {
    
        textBox3.AppendText(Environment.NewLine + Environment.NewLine + "Connection to server lost : " + e.Message);
        ws.Close();
        ws = null;
    }
    
    private void WebSocketClose(object sender, CloseEventArgs e)
    {
        textBox3.AppendText(Environment.NewLine + Environment.NewLine + "Connection closed with the server");
        ws = null;
    }
    
    private void WebSocketDataReceived(object sender, MessageEventArgs e)
    {
    
        textBox3.AppendText(Environment.NewLine + Environment.NewLine + e.Data);
    }	
                                

API Çağrıları

JAVA KODU

  • 1. ASYNC ÇAĞRISI

    import java.net.URI;
    import java.net.URISyntaxException;
    import java.net.http.HttpClient;
    import java.net.http.HttpClient.Redirect;
    import java.net.http.HttpClient.Version;
    import java.net.http.HttpRequest;
    import java.net.http.HttpResponse;
    import java.net.http.HttpResponse.BodyHandlers;
    public class HttpClientApp {
    public void invoke() throws URISyntaxException {
    
      HttpClient client = HttpClient.newBuilder()
          .version(Version.HTTP_2)
          .followRedirects(Redirect.NORMAL)
          .build();
    
      HttpRequest request = HttpRequest.newBuilder()
         .uri(new URI("https://api.icrypex.com/open/v1/orders/list?symbol=BTC/TRY&type=1&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV"))
         .GET()
         .timeout(Duration.ofSeconds(10))
         .build();
    
    
      client.sendAsync(request, BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println)
        .join();
    }
    }
                                
  • 2. SENKRON ÇAĞRISI

    public class HttpClientApp {
    public void invokePost() {
    
      try {
       String requestBody = prepareRequest();
       HttpClient client = HttpClient.newHttpClient();
       HttpRequest request = HttpRequest
         .newBuilder()
         .uri(URI.create("https://api.icrypex.com/open/v1/orders?symbol=BTC/TRY&type=2&side=1&quantity=0.01&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV"))
         .POST(HttpRequest.BodyPublishers.ofString(requestBody))
         .header("Accept", "application/json")
         .build();
       HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
       System.out.println(response.body());
      } catch (IOException | InterruptedException e) {
       e.printStackTrace();
      }
    }
                                

C#.NET KODU

  • 1. HttpClient Kullanmak

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    namespace ConsoleProgram
    {
        public class Class1
        {
            private const string URL = "https://api.icrypex.com/open/v1/orders";
            private string urlParameters = "?symbol=BTC/TRY&type=2&side=1&quantity=0.01&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV";
            static void Main(string[] args)
            {
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri(URL);
                // Add an Accept header for JSON format.
                client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
                // List data response.
                HttpResponseMessage response = client.GetAsync(urlParameters).Result;  // Blocking call! Program will wait here until a response is received or a timeout occurs.
                if (response.IsSuccessStatusCode)
                {
                    // Parse the response body.
                    var dataObjects = response.Content.ReadAsAsync<string>().Result;  //Make sure to add a reference to System.Net.Http.Formatting.dll
    
                }
                else
                {
                    Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                }
                // Make any other calls using HttpClient here.
                // Dispose once all HttpClient calls are complete. This is not necessary if the containing object will be disposed of; for example in this case the HttpClient instance will be disposed automatically when the application terminates so the following call is superfluous.
                client.Dispose();
            }
        }
    }
                                
  • 2. WebClient Kullanmak

    // Public API : Get order book
     using (WebClient wc = new WebClient())
    {
    
         try
         {
             string url = https://api.icrypex.com/open/v1/market/depth?symbol=BTC/TRY;
             string result = wc.DownloadString(url);
                                    <!--returns =>
                                       {"code":0,"msg":"success",
                                       "Data":{"lastupdateid":1639776794754,
                                       "bids":
                                       [
                                           {"price":"661858.48000000","amount":"0.00500000"},
                                           {"price":"661858.48000000","amount":"0.01000000"}
                                       ],
                                       "asks":
                                       [
                                           {"price":"24400.00000000","amount":"0.01000000"},
                                           {"price":"24400.00000000","amount":"0.01000000"}
                                       ]
                                       },
                                       "timestamp":1639776794856
                                       }-->
         }
         catch (Exception ex)
         {
             // Error
         }
    }
     // Private API (Requires api_key in query string or in request header): Get open orders
    using (WebClient wc = new WebClient())
    {
         try
         {
             string url = "https://api.icrypex.com/open/v1/orders/list?symbol=BTC/TRY&type=1&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV";
             //api_key parameter can be sent in <x-access-token> request header too
             string result = wc.DownloadString(url);
             //returns =>
                                    <!--{"code": 0,"msg": "success
                                        data":{"list":
                                        [
                                            {
                                            "orderId": "119234",
                                            "clientId": "174832",
                                            "symbol": "BTC/TRY",
                                            "symbolType": 1,
                                            "side": 1,
                                            "type": 1,
                                            "price": "1.123",
                                            "origQty": "10",
                                            "origQuoteQty": "1",
                                            "executedQty": "0",
                                            "executedPrice": "0",
                                            "executedQuoteQty": "0",
                                            "timeInForce": 0,
                                            "stopPrice": "0.0000000000000000",
                                            "icebergQty": "0.0000000000000000",
                                            "status": 0,
                                            "isWorking": 0,
                                            "createTime": 1572692016811
                                            }
                                        ]
                                    },
                                    "timestamp": 1572860756458
                                    }-->
             }
         catch (Exception ex)
         {
         // Error
         }
    }
    // Private API (Requires api_key in query string or in request header) : Insert new market order
    using (WebClient wc = new WebClient())
    {
    try
    {
         string url = "https://api.icrypex.com/open/v1/orders?symbol=BTC/TRY&type=2&side=1&quantity=0.01&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV";
         //api_key parameter can be sent in <x-access-token> request header too.
         string result = wc.DownloadString(url);
         //returns =>
                                        <!--{"code": 0,"msg": "success",
                                            "data":
                                            {
                                                "orderId": "123456",
                                                "createTime": 1572692016811
                                            },
                                            "timestamp": 1572860756458
                                        }-->
         }
         catch (Exception ex)
         {
         // Error
         }
    }
     // Private API (Requires api_key in query string  ror in equest header): Delete order
    using (WebClient wc = new WebClient())
    {
    try
    {
         string url = https://api.icrypex.com/open/v1/orders/cancel?orderid=119&timestamp=1639842985658&api_key=cfDC92B191b9B1223Ae0e01108CBKI6Bqewr26xr4NrPusef23d49Ze9YrmWwPFV;
         //api_key parameter can be sent in <x-access-token> request header too.
         string result = wc.DownloadString(url);
         //returns =>
                                            <!--{"code": 0,"msg": "success",
                                                "data":
                                                {
                                                    "orderId": 119234,
                                                    "orderListId": -1,
                                                    "clientId": "14522",
                                                    "symbol": "BTC/TRY",
                                                    "side": 1,
                                                    "type": 1,
                                                    "price": 12,454,
                                                    "status": 0,
                                                    "origQty": 10.88,
                                                    "origQuoteQty": 0,
                                                    "executedQty": 0,
                                                    "executedPrice": 0,
                                                    "executedQuoteQty": 0,
                                                    "createTime": 1550130502000
                                                },
                                                "timestamp": 1572860756458
                                            }-->
         }
         catch (Exception ex)
         {
         // Error
         }
    }
                                

Sporu Seviyor ve Destekliyoruz!

Başarılarına ortak olduğumuz; 1907 Fenerbahçe Engelli Yıldızlar, Erden Eruç, Emir Tanju ve TOSFED sponsorluklarımız ile Türk sporunu desteklemekteyiz. Faydalı bir süreç izleyerek yeni sponsorluklarımızla attığımız adımlar sayesinde Türk sporuna güç katmaya devam edeceğiz.