Dapatkan data simbol¶
Mendapatkan dan menafsirkan data simbol (misalnya, harga buka dan tutup semua bar untuk periode tertentu) sangat penting dalam aplikasi apa pun yang memiliki salah satu fungsi berikut:
- Chart – untuk membuat chart bar atau garis, Anda perlu mengetahui data bar dan kutipan historis serta live.
- Statistik pasar – jika Anda ingin menampilkan statistik pasar (seperti perubahan harga harian untuk simbol individu), Anda harus mendapatkan harga historis dan live.
- Replay – dalam aplikasi Anda, Anda dapat memungkinkan trader untuk kembali ke periode sebelumnya dan trading berdasarkan data historis. Untuk melakukannya, Anda perlu mendapatkan dan memproses data bar dan tick masa lalu.
Dalam tutorial ini, kami akan menunjukkan bagaimana Anda bisa mendapatkan dan memproses data bar dan tick historis serta live, dan kutipan depth live.
Perhatikan bahwa tutorial ini hanya menyediakan cuplikan kode untuk mendapatkan data bar historis. Karena logika intinya tetap sama terlepas dari tindakan yang Anda lakukan, Anda dapat menyesuaikan cuplikan ini untuk mendapatkan jenis data lainnya.
Operasi dengan JSON
Saat beroperasi dengan JSON, Anda masih dapat menggunakan kembali kode dari tutorial ini; namun, Anda perlu sedikit memodifikasinya tergantung pada pendekatan Anda terhadap serialisasi dan deserialisasi.
Dapatkan data bar historis ¶
Untuk menerima data bar historis, lakukan tindakan berikut:
- Inisialisasi objek yang mewakili pesan
ProtoOAGetTrendbarsReq. - Isi properti objek dengan
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,countdari trendbar yang akan dikembalikan, serta stempel waktu UnixtoTimestampdanfromTimestampyang diperlukan.
Batasan stempel waktu
Perhatikan bahwa ada beberapa batasan pada jarak maksimum yang mungkin antara toTimestamp dan fromTimestamp. Batasan ini bergantung pada ProtoOATrendPeriod yang ditentukan. Untuk mempelajari lebih lanjut, klik di sini.
- Kirim pesan yang baru dibuat dan terima respons dari jenis
ProtoOAGetTrendbarsRes. Akses bidangtrendbaruntuk mendapatkan daftar trend bar. - Ubah data dari format relatif ke harga simbol aktual. Untuk melakukannya, pertama-tama dapatkan harga rendah dari trendbar dan bagi dengan 100000. Kemudian, bulatkan hasilnya ke digit simbol (misalnya, dua angka setelah pemisah). Untuk mendapatkan harga tinggi, buka, dan tutup dari trendbar, tambahkan delta trendbar dari masing-masing harga ini ke harga rendah trendbar. Setelah itu, bagi setiap angka dengan 100000 dan bulatkan hasilnya ke digit simbol.
Anda dapat menyelesaikan tindakan ini dengan menggunakan kembali kode di bawah ini.
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 historis ¶
Untuk menerima data tick historis, lakukan tindakan berikut:
- Inisialisasi objek yang mewakili pesan
ProtoOAGetTickDataReq. - Isi properti objek dengan
ctidTraderAccountId,symbolId, jenis kutipantype, sertafromTimestampdantoTimestampyang diperlukan.
Batasan stempel waktu
Tidak mungkin meminta data tick historis untuk periode lebih dari satu minggu. Oleh karena itu, perbedaan antara toTimestamp dan fromTimestamp yang ditentukan tidak boleh lebih besar dari 604800000.
- Kirim pesan yang baru dibuat dan terima respons dari jenis
ProtoOAGetTickDataRes. Akses bidangtickDatauntuk mendapatkan daftar elemen dari jenisProtoOATickData. - Ubah data dari format relatif ke harga simbol aktual. Untuk melakukannya, bagi setiap tick dengan 100000 dan bulatkan hasilnya ke digit simbol.
Meminta jumlah tick yang besar
Ada batasan pada jumlah tick yang dapat dikembalikan dalam pesan ProtoOAGetTickDataRes. Jika batasan ini terlampaui (misalnya, ada jumlah tick yang signifikan selama periode yang ditentukan), pesan ProtoOAGetTickDataRes hanya akan menyertakan X tick pertama, di mana X adalah angka yang lebih rendah dari batasan tick. Batasan tepatnya bergantung pada konfigurasi backend cTrader.
Untuk memeriksa apakah ada lebih banyak tick daripada yang dikembalikan dalam pesan yang diterima, gunakan flag hasMore.
Dapatkan data bar live ¶
Untuk menerima bar live, lakukan tindakan berikut:
- Inisialisasi variabel yang mewakili pesan
ProtoOAGetTrendbarsReq. - Isi properti objek dengan
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,countdari trendbar yang akan dikembalikan, serta stempel waktu UnixtoTimestampdanfromTimestampyang diperlukan.
Batasan stempel waktu
Ada beberapa batasan pada jarak maksimum yang mungkin antara toTimestamp dan fromTimestamp. Batasan ini bergantung pada ProtoOATrendPeriod yang ditentukan. Untuk mempelajari lebih lanjut, klik di sini.
-
Kirim pesan yang baru dibuat dan terima respons dari jenis
ProtoOAGetTrendbarsRes. Akses bidangtrendbaruntuk mendapatkan daftar trend bar. -
Ubah data dari format relatif ke harga simbol aktual. Untuk melakukannya, pertama-tama dapatkan harga rendah dari trendbar dan bagi dengan 100000. Kemudian, bulatkan hasilnya ke digit simbol (misalnya, dua angka setelah pemisah). Untuk mendapatkan harga tinggi, buka, dan tutup dari trendbar, tambahkan delta trendbar dari masing-masing harga ini ke harga rendah trendbar. Setelah itu, bagi setiap angka dengan 100000 dan bulatkan hasilnya ke digit simbol.
-
Inisialisasi objek yang mewakili pesan
ProtoOASubscribeLiveTrendbarReq. -
Isi properti objek dengan
ctidTraderAccountId,ProtoOATrendbarPeriod, dansymbolIdyang diperlukan. -
Lakukan hal yang sama untuk objek yang mewakili pesan
ProtoOASubscribeSpotsReq. -
Kirim pesan
ProtoOASubscribeSpotsReqdanProtoOASubscribeLiveTrendbarReqsecara berurutan dan terima respons dari jenisProtoOASubscribeSpotsResdan jenisProtoOASubscribeLiveTrenbarsRes. Pada titik ini, Anda telah berlangganan ke data bar live dan Anda seharusnya menerima pesan dari jenisProtoOASpotEvent.
Berlangganan ke trendbar live
Berlangganan dengan sukses ke trendbar live pertama-tama memerlukan langganan ke acara spot.
- Ketika Anda menerima pesan
ProtoOASpotEventbaru, gunakan bidangtrendbar-nya untuk mendapatkan data dari bar terakhir yang ditutup. - Transformasikan data dari format relatif ke harga simbol aktual. Untuk melakukannya, pertama-tama dapatkan harga rendah dari trendbar dan bagi dengan 100000. Kemudian, bulatkan hasilnya ke digit simbol (misalnya, dua angka setelah pemisah). Untuk mendapatkan harga tinggi, buka, dan tutup dari trendbar, tambahkan delta trendbar dari masing-masing harga ini ke harga rendah trendbar. Setelah itu, bagi setiap angka dengan 100000 dan bulatkan hasilnya ke digit simbol.
Untuk berhenti berlangganan data trendbar live, Anda selalu dapat mengirim pesan ProtoOAUnsubscribeLiveTrendbarsReq yang berisi symbolId, period, dan ctidTraderAccountId Anda. Jika permintaan Anda berhasil, Anda akan menerima respons dari tipe ProtoOAUnsubscribeLiveTrenbarRes. Langganan Anda ke spot event akan tetap aktif.
Dapatkan kuotasi live ¶
Untuk menerima kuotasi Bid dan Ask live untuk sebuah simbol, lakukan tindakan berikut:
- Inisialisasi objek yang mewakili pesan
ProtoOASubscribeSpotsReq. - Isi properti objek dengan
ctidTraderAccountId,symbolId, dan, opsional, boolsubscribeToSpotTimestamp. - Kirim pesan yang baru dibuat dan terima respons dari tipe
ProtoOASubscribeSpotsRes. Pada titik ini, Anda telah berlangganan data kuotasi live dan Anda akan menerima pesan dari tipeProtoOASpotEvent. - Ketika Anda menerima pesan
ProtoOASpotEventbaru, akses bidangbiddanask-nya untuk mendapatkan kuotasi terbaru. Perhatikan bahwa Anda masih harus mengubah data tersebut menjadi nilai harga aktual dengan membaginya dengan 100000 dan membulatkannya ke digit simbol.
Bid dan ask fields
Karena bidang bid dan ask bersifat opsional, Anda mungkin tidak selalu melihat pesan ProtoOASpotEvent di mana keduanya ditentukan.
Untuk berhenti berlangganan data kuotasi, Anda selalu dapat mengirim pesan ProtoOAUnsubscribeSpotsReq yang berisi symbolId dan ctidTraderAccountId Anda. Jika permintaan Anda berhasil, Anda akan menerima respons dari tipe ProtoOAUnsubscribeSpotsRes. Pada titik ini, Anda seharusnya berhenti menerima spot event.
Kuotasi depth ¶
Terakhir namun tidak kalah penting, Anda juga dapat menerima kuotasi depth atau Level II live untuk sebuah simbol. Untuk melakukannya, lakukan tindakan berikut.
Anda dapat berlangganan dan menerima kuotasi depth atau Level II live untuk sebuah simbol dari API.
- Inisialisasi objek yang mewakili pesan
ProtoOASubscribeDepthQuotesReq. - Isi properti objek dengan
ctidTraderAccountIddansymbolId. - Kirim pesan yang baru dibuat dan terima respons dari tipe
ProtoOASubscribeDepthQuotesRes. Pada titik ini, Anda telah berlangganan kuotasi depth, yang berarti Anda akan mulai menerima pesanProtoOADepthEvent. - Ketika Anda menerima pesan
ProtoOADepthEventbaru, Anda perlu menggunakan bidangnewQuotesdandeletedQuotes-nya untuk mendapatkan data depth terbaru. Anda juga perlu mengubah data tersebut menjadi nilai harga aktual dengan membaginya dengan 100000 dan membulatkan hasilnya ke digit simbol. Anda juga perlu mengubah ukuran kuotasi depth menjadi unit dengan membaginya dengan 100.
Untuk berhenti berlangganan depth event, Anda selalu dapat menggunakan pesan ProtoOAUnsubscribeDepthQuotesReq dengan menentukan symbolId dan ctidTraderAccountId. Anda akan menerima pesan dari tipe ProtoOAUnsubscribeDepthQuotesRes; setelah itu, Anda seharusnya berhenti menerima depth event.