Pelaksanaan pesanan selari dalam cTrader
Salah satu ciri yang menjadikan cTrader menonjol ialah keupayaan untuk menggunakan pengaturcaraan segerak dan tak segerak untuk melaksanakan pesanan anda. Anda boleh menggunakan pengaturcaraan segerak untuk melaksanakan strategi yang perlu menunggu hasil pelaksanaan pesanan sebelum meneruskan; sebaliknya, pengaturcaraan tak segerak paling sesuai digunakan apabila mencipta strategi berkelajuan tinggi yang boleh menghantar berbilang pesanan secara serentak.
Dalam video ini dan artikel yang sepadan, kami akan menerangkan perbezaan antara pelaksanaan segerak dan tak segerak dan kami akan menunjukkan kepada anda cara menggunakan kedua-dua pendekatan ini untuk membuat pesanan baharu.
Pelaksanaan pesanan segerak lwn tak segerak
Aliran asas
Pelaksanaan pesanan segerak boleh dijelaskan dengan menggunakan gambar rajah mudah. Apabila membuat pesanan baharu secara segerak, cBot mesti menunggu satu pesanan dilaksanakan sebelum ia mengikuti sebarang arahan lain. Dengan kata lain, cTrader menghantar pesanan ke pelayan, menunggu respons, dan hanya kemudian mula melaksanakan baris kod seterusnya.
flowchart LR
A([Pesanan 1, 100 ms]) --> B([Pesanan 2, 70 ms]) --> C([Pesanan 3, 80 ms]) --> D([Arahan seterusnya]) Apabila membuat pesanan di atas secara segerak, cBot anda perlu menghabiskan jumlah 250 ms sebelum meneruskan kepada arahan yang dinyatakan selepas Pesanan 3.
Sebaliknya, pelaksanaan tak segerak membolehkan cTrader menghantar berbilang pesanan secara selari tanpa menjangkakan respons daripada pelayan. Dengan menggunakan pengaturcaraan tak segerak, strategi boleh meminimumkan jumlah masa yang diperlukan untuk melaksanakan berbilang pesanan.
flowchart LR
subgraph Orders
direction TB
A([Pesanan 1, 100 ms]) --- B([Pesanan 2, 70 ms]) --- C([Pesanan 3, 80 ms])
end
D([Arahan seterusnya])
Orders --> D Dalam gambar rajah di atas, ketiga-tiga pesanan dihantar pada masa yang sama dan cBot tidak menunggu hasil pelaksanaannya sebelum meneruskan kepada arahan seterusnya.
Contoh kod
Kita juga boleh menggunakan kod untuk menunjukkan bagaimana pelaksanaan segerak berfungsi.
1 2 3 4 5 6 7 8 9 | |
Jika kita menjalankan cBot dengan kod ini, log akan menunjukkan bahawa kiraan posisi hanya meningkat selepas setiap posisi dilaksanakan. Kod tersebut menunggu setiap pesanan dilaksanakan sebelum menghantar permintaan untuk melaksanakan yang seterusnya.
Untuk bertukar kepada pelaksanaan pesanan tak segerak, kita boleh menggunakan kaedah ExecuteMarketOrderAsync.
1 2 3 4 5 6 7 8 9 | |
Kita juga akan menambah pengendali acara untuk mendengar acara Positions.Opened.
1 2 3 4 5 6 7 8 9 10 | |
Dalam pengendali acara kita, kita akan mencetak mesej dalam log sebaik sahaja posisi dibuka serta bilangan posisi terbuka pada masa itu.
Jika kita menjalankan cBot dengan kod ini dan melihat log, kita akan melihat bahawa semua pesanan telah dihantar tanpa menerima pengesahan tentang hasil arahan sebelumnya. Pembilang posisi kekal pada 0 sepanjang masa. Pengesahan tiba dan dicetak dalam log beberapa milisaat selepas semua pesanan dihantar ke pelayan.
Gunakan pesanan panggil balik
Sekarang kita boleh kembali ke kod sumber kita dan menunjukkan satu lagi ciri berharga pelaksanaan tak segerak, iaitu pilihan untuk menggunakan kaedah panggil balik yang dipanggil sebaik sahaja pelaksanaan pesanan selesai. Kita akan membuang pengendali acara Positions.Opened kita dan melaksanakan kaedah panggil balik yang mencetak pengesahan sebaik sahaja pesanan telah dilaksanakan.
1 2 3 4 5 6 7 8 9 10 11 | |
Kita kemudian akan menghantar kaedah ini sebagai hujah kepada kaedah ExecuteMarketOrderAsync.
1 | |
Berbeza dengan pendekatan kita sebelum ini, kaedah panggil balik akan dipanggil tanpa mengira sama ada dagangan berjaya atau tidak, yang juga bermakna anda dimaklumkan tentang dagangan yang tidak berjaya dan boleh bertindak sewajarnya.
Pantau status pelaksanaan tak segerak
cTrader juga menyediakan alat yang mudah digunakan untuk menjejaki status dagangan tak segerak. Kaedah ExecuteMarketOrderAsync mengembalikan objek TradeOperation yang mengandungi maklumat tentang sama ada pesanan masih dilaksanakan.
Kita boleh mula dengan mengisytiharkan medan baharu.
1 | |
Kita kemudian akan membuang gelung for kita, dan menetapkan hasil pelaksanaan pesanan kepada medan baharu.
1 | |
Kita juga akan menambah pemasa kepada cBot kita. Pemasa akan memeriksa status operasi setiap 100 milisaat.
1 2 | |
Jika operasi masih dilaksanakan, pemasa akan mencetak ini dalam log.
1 2 3 4 5 6 7 8 | |
Selepas cBot dibina, kita boleh menguji bagaimana ia berfungsi pada akaun demo. Dalam log, pemasa harus mencetak kemas kini berkala tentang status pelaksanaan tak segerak.
Ringkasan
Pelaksanaan tak segerak adalah alat yang berkuasa yang boleh menjadikan penempatan pesanan automatik lebih cepat berbanding pengaturcaraan segerak. Walau bagaimanapun, pelaksanaan segerak masih boleh digunakan sekiranya anda perlu mengetahui hasil dagangan sebelum meneruskan ke langkah seterusnya. Pelaksanaan tak segerak, sebaliknya, paling sesuai digunakan apabila anda perlu menghantar pelbagai pesanan secara selari tanpa sebarang kelewatan.