Dapatkan data simbol¶
Mendapatkan dan mentafsir data simbol (contohnya, harga buka dan tutup semua bar untuk tempoh tertentu) adalah penting dalam mana-mana aplikasi yang mempunyai mana-mana fungsi berikut:
- Carta – untuk membina carta bar atau garis, anda perlu mengetahui data bar dan sebut harga sejarah dan langsung.
- Statistik pasaran – jika anda ingin memaparkan statistik pasaran (seperti perubahan harga harian untuk simbol individu), anda perlu mendapatkan harga sejarah dan langsung.
- Ulang tayang – dalam aplikasi anda, anda mungkin membenarkan pedagang kembali ke tempoh sebelumnya dan berdagang berdasarkan data sejarah. Untuk berbuat demikian, anda perlu mendapatkan dan memproses data bar dan tik lalu.
Dalam tutorial ini, kami akan menunjukkan bagaimana anda boleh mendapatkan dan memproses data bar dan tik sejarah dan langsung, dan sebut harga kedalaman langsung.
Perhatikan bahawa tutorial ini hanya menyediakan coretan kod untuk mendapatkan data bar sejarah. Oleh kerana logik teras tetap sama tanpa mengira tindakan yang anda lakukan, anda boleh menyesuaikan coretan ini untuk mendapatkan jenis data lain.
Operasi dengan JSON
Apabila beroperasi dengan JSON, anda masih boleh menggunakan semula kod dari tutorial ini; walau bagaimanapun, anda perlu mengubahnya sedikit bergantung pada pendekatan anda terhadap serialisasi dan penyahserialan.
Dapatkan data bar sejarah ¶
Untuk menerima data bar sejarah, lakukan tindakan berikut:
- Mulakan objek yang mewakili mesej
ProtoOAGetTrendbarsReq. - Isi sifat objek dengan
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,counttrendbar untuk dikembalikan dan cap waktu UnixtoTimestampdanfromTimestamp.
Kekangan Timestamp
Perhatikan bahawa terdapat beberapa kekangan pada jarak maksimum yang mungkin antara toTimestamp dan fromTimestamp. Kekangan ini bergantung pada ProtoOATrendPeriod yang ditentukan. Untuk mengetahui lebih lanjut, klik di sini.
- Hantar mesej yang baru dibuat dan terima respons jenis
ProtoOAGetTrendbarsRes. Akses medantrendbaruntuk mendapatkan senarai bar trend. - Tukar data dari format relatif kepada harga simbol sebenar. Untuk melakukannya, pertama, dapatkan harga rendah trendbar dan bahagikannya dengan 100000. Kemudian, bulatkan hasil kepada digit simbol (contohnya, dua nombor selepas pemisah). Untuk mendapatkan harga tinggi, buka dan tutup trendbar, tambahkan delta trendbar bagi setiap harga ini kepada harga rendah trendbar. Selepas itu, bahagikan setiap nombor dengan 100000 dan bulatkan hasil kepada digit simbol.
Anda boleh melengkapkan tindakan ini dengan menggunakan semula kod di bawah.
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 | |
Dapatkan data tick sejarah ¶
Untuk menerima data tick sejarah, lakukan tindakan berikut:
- Mulakan objek yang mewakili mesej
ProtoOAGetTickDataReq. - Isi sifat objek dengan
ctidTraderAccountId,symbolId, jenis petikantypesertafromTimestampdantoTimestampyang diperlukan.
Kekangan Timestamp
Adalah mustahil untuk meminta data tick sejarah untuk tempoh lebih daripada satu minggu. Oleh itu, perbezaan antara toTimestamp dan fromTimestamp yang ditentukan tidak boleh lebih besar daripada 604800000.
- Hantar mesej yang baru dibuat dan terima respons jenis
ProtoOAGetTickDataRes. Akses medantickDatauntuk mendapatkan senarai elemen jenisProtoOATickData. - Tukar data dari format relatif kepada harga simbol sebenar. Untuk melakukannya, bahagikan setiap tick dengan 100000 dan bulatkan hasil kepada digit simbol.
Meminta bilangan tick yang besar
Terdapat had pada bilangan tick yang boleh dikembalikan dalam mesej ProtoOAGetTickDataRes. Jika had ini dilampaui (contohnya, terdapat bilangan tick yang signifikan dalam tempoh yang ditentukan), mesej ProtoOAGetTickDataRes hanya akan termasuk X tick pertama, di mana X ialah nombor yang lebih rendah daripada had tick. Had tepat bergantung pada konfigurasi sistem bahagian belakang cTrader.
Untuk menyemak jika terdapat lebih banyak tick daripada yang telah dikembalikan dalam mesej yang diterima, gunakan bendera hasMore.
Dapatkan data bar langsung ¶
Untuk menerima bar langsung, lakukan tindakan berikut:
- Mulakan pembolehubah yang mewakili mesej
ProtoOAGetTrendbarsReq. - Isi sifat objek dengan
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,countbar trend untuk dikembalikan, sertatoTimestampdanfromTimestamptimestamp Unix.
Kekangan Timestamp
Terdapat beberapa kekangan pada jarak maksimum yang mungkin antara toTimestamp dan fromTimestamp. Kekangan ini bergantung pada ProtoOATrendPeriod yang ditentukan. Untuk mengetahui lebih lanjut, klik di sini.
-
Hantar mesej yang baru dibuat dan terima respons jenis
ProtoOAGetTrendbarsRes. Akses medantrendbaruntuk mendapatkan senarai bar trend. -
Tukar data dari format relatif kepada harga simbol sebenar. Untuk melakukannya, pertama dapatkan harga rendah trendbar dan bahagikannya dengan 100000. Kemudian, bulatkan hasil kepada digit simbol (contohnya, dua nombor selepas pemisah). Untuk mendapatkan harga tinggi, buka dan tutup trendbar, tambahkan delta trendbar bagi setiap harga ini kepada harga rendah trendbar. Selepas itu, bahagikan setiap nombor dengan 100000 dan bulatkan hasil kepada digit simbol.
-
Mulakan objek yang mewakili mesej
ProtoOASubscribeLiveTrendbarReq. -
Isi sifat objek dengan
ctidTraderAccountId,ProtoOATrendbarPerioddansymbolIdyang diperlukan. -
Lakukan perkara yang sama untuk objek yang mewakili mesej
ProtoOASubscribeSpotsReq. -
Hantar mesej
ProtoOASubscribeSpotsReqdan mesejProtoOASubscribeLiveTrendbarReqdalam urutan itu dan terima respons jenisProtoOASubscribeSpotsResdanProtoOASubscribeLiveTrenbarsRes. Pada ketika ini, anda telah melanggan data bar langsung dan anda sepatutnya menerima mesej jenisProtoOASpotEvent.
Langgan bar trend langsung
Berjaya melanggan bar trend langsung memerlukan langganan terlebih dahulu kepada peristiwa spot.
- Apabila anda menerima mesej
ProtoOASpotEventyang baru, gunakan medantrendbaruntuk mendapatkan data bagi bar terakhir yang ditutup. - Tukar data daripada format relatif kepada harga simbol sebenar. Untuk melakukannya, pertama, dapatkan harga rendah trendbar dan bahagikannya dengan 100000. Kemudian, bulatkan hasil kepada digit simbol (contohnya, dua nombor selepas pemisah). Untuk mendapatkan harga tinggi, buka dan tutup trendbar, tambahkan delta trendbar bagi setiap harga ini kepada harga rendah trendbar. Selepas itu, bahagikan setiap nombor dengan 100000 dan bulatkan hasil kepada digit simbol.
Untuk berhenti melanggan data trendbar langsung, anda boleh menghantar mesej ProtoOAUnsubscribeLiveTrendbarsReq yang mengandungi symbolId, period dan ctidTraderAccountId anda. Jika permintaan anda berjaya, anda sepatutnya menerima respons jenis ProtoOAUnsubscribeLiveTrenbarRes. Langganan anda kepada acara spot akan kekal.
Dapatkan sebut harga langsung ¶
Untuk menerima sebut harga bida dan tanya langsung bagi sesuatu simbol, lakukan tindakan berikut:
- Mulakan objek yang mewakili mesej
ProtoOASubscribeSpotsReq. - Isi sifat objek dengan
ctidTraderAccountId,symbolId, dan, secara pilihan, boolsubscribeToSpotTimestamp. - Hantar mesej yang baru dibuat dan terima respons jenis
ProtoOASubscribeSpotsRes. Pada ketika ini, anda telah melanggan data sebut harga langsung dan anda sepatutnya menerima mesej jenisProtoOASpotEvent. - Apabila anda menerima mesej
ProtoOASpotEventyang baru, akses medanbiddanaskuntuk mendapatkan sebut harga terkini. Perhatikan bahawa anda masih perlu menukar data kepada nilai harga sebenar dengan membahagikannya dengan 100000 dan membulatkannya kepada digit simbol.
Medan bida dan tanya
Memandangkan medan bid dan ask adalah pilihan, anda mungkin tidak semestinya melihat mesej ProtoOASpotEvent di mana kedua-duanya dinyatakan.
Untuk berhenti melanggan data sebut harga, anda boleh menghantar mesej ProtoOAUnsubscribeSpotsReq yang mengandungi symbolId dan ctidTraderAccountId anda. Jika permintaan anda berjaya, anda sepatutnya menerima respons jenis ProtoOAUnsubscribeSpotsRes. Pada ketika ini, anda sepatutnya berhenti menerima acara spot.
Sebut harga kedalaman ¶
Akhir sekali, anda juga boleh menerima sebut harga kedalaman atau Level II langsung bagi sesuatu simbol. Untuk melakukannya, lakukan tindakan berikut.
Anda boleh melanggan dan menerima sebut harga kedalaman atau Level II langsung bagi sesuatu simbol daripada API.
- Mulakan objek yang mewakili mesej
ProtoOASubscribeDepthQuotesReq. - Isi sifat objek dengan
ctidTraderAccountIddansymbolId. - Hantar mesej yang baru dibuat dan terima respons jenis
ProtoOASubscribeDepthQuotesRes. Pada ketika ini, anda telah melanggan sebut harga kedalaman, bermakna anda sepatutnya mula menerima mesejProtoOADepthEvent. - Apabila anda menerima mesej
ProtoOADepthEventyang baru, anda perlu menggunakan medannewQuotesdandeletedQuotesuntuk mendapatkan data kedalaman terkini. Anda juga perlu menukar data kepada nilai harga sebenar dengan membahagikannya dengan 100000 dan membulatkan hasil kepada digit simbol. Anda juga perlu menukar saiz sebut harga kedalaman kepada unit dengan membahagikannya dengan 100.
Untuk berhenti melanggan acara kedalaman, anda boleh menggunakan mesej ProtoOAUnsubscribeDepthQuotesReq sambil menyatakan symbolId dan ctidTraderAccountId. Anda sepatutnya menerima mesej jenis ProtoOAUnsubscribeDepthQuotesRes; selepas itu, anda sepatutnya berhenti menerima acara kedalaman.