Sembol verilerini alın¶
Sembol verilerini (örneğin belirli bir dönemdeki tüm barların açılış ve kapanış fiyatlarını) almak ve yorumlamak, aşağıdaki işlevlerden herhangi birini içeren uygulamalar için temel öneme sahiptir:
- Grafikler – bar veya çizgi grafikleri oluşturmak için hem geçmiş hem de canlı bar ve kotasyon verilerini bilmeniz gerekir.
- Piyasa istatistikleri – piyasa istatistiklerini (örneğin her sembol için günlük fiyat değişikliklerini) göstermek istiyorsanız hem geçmiş hem de canlı fiyatları almanız gerekir.
- Yeniden oynatmalar – uygulamanızda trader'ların önceki bir döneme dönerek geçmiş veriler üzerinde alım satım yapmasına olanak tanıyabilirsiniz. Bunun için geçmiş bar ve tick verilerini alıp işlemeniz gerekir.
Bu eğitimde geçmiş ve canlı bar ve tick verilerinin yanı sıra canlı derinlik kotasyonlarını nasıl alıp işleyebileceğinizi göstereceğiz.
Bu eğitimin yalnızca geçmiş bar verilerini almaya yönelik bir kod parçacığı sunduğunu unutmayın. Temel mantık gerçekleştirdiğiniz işlemden bağımsız olarak aynı kaldığından bu kod parçacığını diğer veri türlerini almak için uyarlayabilirsiniz.
JSON ile çalışma
JSON ile çalışırken bu eğitimdeki kodu yine kullanabilirsiniz; ancak serileştirme ve seriden çıkarma yaklaşımınıza bağlı olarak kodu biraz değiştirmeniz gerekir.
Geçmiş bar verilerini alın ¶
Geçmiş bar verilerini almak için aşağıdaki işlemleri gerçekleştirin:
ProtoOAGetTrendbarsReqmesajını temsil eden bir nesne başlatın.- Nesne özelliklerini gerekli
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod, döndürülecek trend barlarınıncountdeğeri vetoTimestampilefromTimestampUnix zaman damgalarıyla doldurun.
Zaman damgası kısıtlamaları
toTimestamp ile fromTimestamp arasındaki mümkün olan en büyük mesafeye ilişkin bazı kısıtlamalar olduğunu unutmayın. Bu kısıtlamalar belirtilen ProtoOATrendPeriod değerine bağlıdır. Daha fazla bilgi için buraya tıklayın.
- Yeni oluşturulan mesajı gönderin ve
ProtoOAGetTrendbarsRestüründe bir yanıt alın. Trend barlarının listesini almak içintrendbaralanına erişin. - Verileri göreli formattan gerçek sembol fiyatına dönüştürün. Bunun için önce bir trend barının düşük fiyatını alın ve 100000'e bölün. Ardından sonucu sembolün basamak sayısına göre yuvarlayın (örneğin ayırıcıdan sonra iki basamak). Bir trend barının yüksek, açılış ve kapanış fiyatlarını almak için bu fiyatların her birinin trend barı deltasını trend barının düşük fiyatına ekleyin. Ardından her sayıyı 100000'e bölün ve sonucu sembolün basamak sayısına göre yuvarlayın.
Aşağıdaki kodu yeniden kullanarak bu işlemleri tamamlayabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Geçmiş tick verilerini alın ¶
Geçmiş tick verilerini almak için aşağıdaki işlemleri gerçekleştirin:
ProtoOAGetTickDataReqmesajını temsil eden bir nesne başlatın.- Nesne özelliklerini gerekli
ctidTraderAccountId,symbolId, kotasyontypedeğeri ilefromTimestampvetoTimestampdeğerleriyle doldurun.
Zaman damgası kısıtlamaları
Bir haftadan uzun bir dönem için geçmiş tick verileri talep edilemez. Bu nedenle belirtilen toTimestamp ile fromTimestamp arasındaki fark 604800000 değerinden büyük olmamalıdır.
- Yeni oluşturulan mesajı gönderin ve
ProtoOAGetTickDataRestüründe bir yanıt alın.ProtoOATickDatatüründeki öğelerin listesini almak içintickDataalanına erişin. - Verileri göreli formattan gerçek sembol fiyatına dönüştürün. Bunun için her tick'i 100000'e bölün ve sonucu sembolün basamak sayısına göre yuvarlayın.
Çok sayıda tick talep etme
Bir ProtoOAGetTickDataRes mesajında döndürülebilecek tick sayısı sınırlıdır. Bu sınır aşılırsa (örneğin belirtilen dönemde çok sayıda tick oluşmuşsa) ProtoOAGetTickDataRes mesajı yalnızca ilk X tick'i içerir; burada X, tick sınırından düşük bir sayıdır. Kesin sınır cTrader arka ucunun yapılandırmasına bağlıdır.
Alınan mesajda döndürülenden daha fazla tick olup olmadığını kontrol etmek için hasMore işaretini kullanın.
Canlı bar verilerini alın ¶
Canlı barları almak için aşağıdaki işlemleri gerçekleştirin:
ProtoOAGetTrendbarsReqmesajını temsil eden bir değişken başlatın.- Nesne özelliklerini gerekli
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod, döndürülecek trend barlarınıncountdeğeri iletoTimestampvefromTimestampUnix zaman damgalarıyla doldurun.
Zaman damgası kısıtlamaları
toTimestamp ile fromTimestamp arasındaki mümkün olan en büyük mesafeye ilişkin bazı kısıtlamalar vardır. Bu kısıtlamalar belirtilen ProtoOATrendPeriod değerine bağlıdır. Daha fazla bilgi için buraya tıklayın.
-
Yeni oluşturulan mesajı gönderin ve
ProtoOAGetTrendbarsRestüründe bir yanıt alın. Trend barlarının listesini almak içintrendbaralanına erişin. -
Verileri göreli formattan gerçek sembol fiyatına dönüştürün. Bunun için önce bir trend barının düşük fiyatını alın ve 100000'e bölün. Ardından sonucu sembolün basamak sayısına göre yuvarlayın (örneğin ayırıcıdan sonra iki basamak). Bir trend barının yüksek, açılış ve kapanış fiyatlarını almak için bu fiyatların her birinin trend barı deltasını trend barının düşük fiyatına ekleyin. Ardından her sayıyı 100000'e bölün ve sonucu sembolün basamak sayısına göre yuvarlayın.
-
ProtoOASubscribeLiveTrendbarReqmesajını temsil eden bir nesne başlatın. -
Nesne özelliklerini gerekli
ctidTraderAccountId,ProtoOATrendbarPeriodvesymbolIddeğerleriyle doldurun. -
ProtoOASubscribeSpotsReqmesajını temsil eden bir nesne için de aynısını yapın. -
Sırasıyla
ProtoOASubscribeSpotsReqveProtoOASubscribeLiveTrendbarReqmesajlarını gönderin veProtoOASubscribeSpotsResileProtoOASubscribeLiveTrenbarsRestürlerinde yanıtlar alın. Bu aşamada canlı bar verilerine abone olmuş olursunuz veProtoOASpotEventtüründe mesajlar almaya başlamanız gerekir.
Canlı trend barlarına abone olma
Canlı trend barlarına başarılı şekilde abone olmak için önce spot olaylarına abone olmanız gerekir.
- Yeni bir
ProtoOASpotEventmesajı aldığınızda son kapanan barın verilerini almak içintrendbaralanını kullanın. - Verileri göreli formattan gerçek sembol fiyatlarına dönüştürün. Bunun için önce bir trend barının düşük fiyatını alın ve 100000'e bölün. Ardından sonucu sembolün basamak sayısına göre yuvarlayın (örneğin ayırıcıdan sonra iki basamak). Bir trend barının yüksek, açılış ve kapanış fiyatlarını almak için bu fiyatların her birinin trend barı deltasını trend barının düşük fiyatına ekleyin. Ardından her sayıyı 100000'e bölün ve sonucu sembolün basamak sayısına göre yuvarlayın.
Canlı trend barı verileri aboneliğini iptal etmek için symbolId, period ve ctidTraderAccountId değerlerinizi içeren ProtoOAUnsubscribeLiveTrendbarsReq mesajını istediğiniz zaman gönderebilirsiniz. İsteğiniz başarılı olursa ProtoOAUnsubscribeLiveTrenbarRes türünde bir yanıt almanız gerekir. Spot olayları aboneliğiniz devam eder.
Canlı kotasyonları alın ¶
Bir sembol için canlı satış ve alış kotasyonlarını almak üzere aşağıdaki işlemleri gerçekleştirin:
ProtoOASubscribeSpotsReqmesajını temsil eden bir nesne başlatın.- Nesne özelliklerini
ctidTraderAccountId,symbolIdve isteğe bağlı olaraksubscribeToSpotTimestampbool değeriyle doldurun. - Yeni oluşturulan mesajı gönderin ve
ProtoOASubscribeSpotsRestüründe bir yanıt alın. Bu aşamada canlı kotasyon verilerine abone olmuş olursunuz veProtoOASpotEventtüründe mesajlar almaya başlamanız gerekir. - Yeni bir
ProtoOASpotEventmesajı aldığınızda en güncel kotasyonları almak içinbidveaskalanlarına erişin. Verileri gerçek fiyat değerine dönüştürmek için yine de 100000'e bölmeniz ve sembolün basamak sayısına göre yuvarlamanız gerektiğini unutmayın.
Satış ve alış alanları
bid ve ask alanları isteğe bağlı olduğundan her ikisinin de belirtildiği ProtoOASpotEvent mesajlarını her zaman görmeyebilirsiniz.
Kotasyon verileri aboneliğini iptal etmek için symbolId ve ctidTraderAccountId değerlerinizi içeren ProtoOAUnsubscribeSpotsReq mesajını istediğiniz zaman gönderebilirsiniz. İsteğiniz başarılı olursa ProtoOAUnsubscribeSpotsRes türünde bir yanıt almanız gerekir. Bu noktadan sonra spot olaylarını almamanız gerekir.
Derinlik kotasyonları ¶
Ayrıca bir sembol için canlı derinlik veya Level II kotasyonları da alabilirsiniz. Bunun için aşağıdaki işlemleri gerçekleştirin.
API'den bir sembol için canlı derinlik veya Level II kotasyonlarına abone olabilir ve bunları alabilirsiniz.
ProtoOASubscribeDepthQuotesReqmesajını temsil eden bir nesne başlatın.- Nesne özelliklerini
ctidTraderAccountIdvesymbolIddeğerleriyle doldurun. - Yeni oluşturulan mesajı gönderin ve
ProtoOASubscribeDepthQuotesRestüründe bir yanıt alın. Bu aşamada derinlik kotasyonlarına abone olmuş olursunuz; dolayısıylaProtoOADepthEventmesajlarını almaya başlamanız gerekir. - Yeni bir
ProtoOADepthEventmesajı aldığınızda en güncel derinlik verilerini almak içinnewQuotesvedeletedQuotesalanlarını kullanmanız gerekir. Ayrıca verileri 100000'e bölüp sonucu sembolün basamak sayısına göre yuvarlayarak gerçek fiyat değerine dönüştürmeniz gerekir. Derinlik kotasyonu büyüklüğünü de 100'e bölerek birimlere dönüştürmeniz gerekir.
Derinlik olayları aboneliğini iptal etmek için symbolId ve ctidTraderAccountId değerlerini belirterek ProtoOAUnsubscribeDepthQuotesReq mesajını istediğiniz zaman kullanabilirsiniz. ProtoOAUnsubscribeDepthQuotesRes türünde bir mesaj almanız gerekir; ardından derinlik olaylarını almamaya başlamanız gerekir.