Cara menambah kaedah kepada API cTrader
Kaedah sambungan adalah alat penting jika anda ingin menambah fungsi baharu kepada API cTrader. Menggunakan sintaks yang agak mudah, anda boleh menambah tingkah laku baharu kepada mana-mana kelas API yang telah ditentukan, seperti Symbol atau Position. Selepas anda menentukan kaedah sambungan, anda boleh memanggilnya daripada mana-mana objek kelas yang anda sambungkan.
Kes penggunaan untuk kaedah sambungan
Pertama, kita akan melakukan demonstrasi ringkas mengapa anda mungkin ingin menggunakan kaedah sambungan.
Menggunakan cBot, kita ingin dapat mengakses saiz kedudukan tertentu dalam lot kerana maklumat ini secara langsung mempengaruhi strategi dagangan pilihan kita. Untuk berbuat demikian, kita boleh cuba memulakan pemboleh ubah kelas Position dan kemudian cuba mengakses kaedah Lots().
1 2 | |
Jika kita hanya menaip kod seperti adanya, kita akan menerima ralat yang mencadangkan bahawa pengakses Lots() tidak wujud dalam API. Tetapi bagaimana jika ada cara untuk menambah kaedah baharu kepada ahli API sedia ada tanpa menjejaskan fungsi lain?
Dengan anggapan kaedah ini wujud, kita boleh mencipta cBot mudah yang, pada setiap bar, akan mengulangi senarai semua kedudukan semasa dan mencetak saiznya dalam lot dalam log. Kita akan menentukan kaedah OnBar() seperti berikut.
1 2 3 4 5 6 | |
Kaedah sambungan membolehkan kita menambah fungsi Lots() dalam hanya beberapa baris kod dan kemudian menggunakannya semula bila-bila masa kita mahu pada mana-mana objek kelas Position. Di bawah, kami menjelaskan bagaimana anda boleh mencipta satu dan memberikan beberapa contoh algo yang menggunakannya.
Bagaimana kaedah sambungan berfungsi
Apabila bekerja dengan kaedah sambungan, berhati-hati dengan peraturan berikut.
- Kaedah sambungan sentiasa statik.
Untuk mengisytiharkan kaedah statik, anda hanya perlu menggunakan kata kunci static. Di bawah, isytiharkan kaedah Lots() dengan badan kosong.
1 2 3 4 | |
- Kaedah sambungan boleh mempunyai sebarang bilangan hujah tetapi hujah pertama sentiasa perlu menandakan jenis data/kelas yang mana kaedah itu sepatutnya dipanggil didahului oleh kata kunci
this.
Kita akan menambah objek kelas Position sebagai hujah pertama dan satu-satunya kaedah Lots(). Oleh kerana objek Position juga mengandungi maklumat tentang simbol yang mana kedudukan dibuka, kita tidak memerlukan sebarang hujah lain.
1 2 3 | |
- Kaedah sambungan boleh mengandungi sebarang logik yang sesuai untuk hujah yang diberikan.
Tidak perlu menggunakan sintaks khas apabila menentukan badan kaedah sambungan. Kita boleh menganggapnya sebagai mana-mana kaedah lain dan, oleh itu, boleh menentukan badannya seperti berikut.
1 2 3 4 5 | |
- Kaedah sambungan boleh dipanggil sebagai kaedah contoh atau kaedah statik.
Terdapat dua cara yang mungkin untuk memanggil kaedah sambungan kita dalam kod cBot.
Apabila menggunakan sintaks kaedah contoh, kita memanggil kaedah daripada mana-mana objek yang sesuai jenis Position.
1 2 | |
Apabila menggunakan sintaks kaedah statik, kita boleh memanggil kaedah sambungan kita selepas menentukan sepenuhnya kelas statik yang sepadan.
1 2 | |
Terserah kepada anda untuk menentukan kaedah mana untuk memanggil kaedah sambungan yang paling mudah.
Tandatangan kaedah
Apabila menggunakan sintaks contoh, elakkan kes di mana kaedah sambungan anda mempunyai tandatangan yang sama dengan mana-mana kaedah API terbina dalam (seperti Position.Close()). Dalam situasi ini, kaedah terbina dalam akan dipanggil setiap kali anda cuba memanggil kaedah sambungan dengan tandatangan yang sepadan.
IntelliSense
Apabila kita cuba memanggil kaedah sambungan, IntelliSense menggunakan ikon khas untuk membezakannya daripada ahli API terbina dalam.
Untuk menunjukkan kaedah baharu kita dalam tindakan, kita boleh membuat cBot yang meletakkan tiga pesanan pada permulaan, setiap satu dengan volum yang berbeza. Pada setiap bar, cBot mencetak volum semua posisi yang sedang dibuka dalam lot.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Selepas membina dan melancarkan cBot kita, kita sepatutnya melihat nilai yang betul dicetak dalam log.
Gunakan kaedah sambungan dalam cBot
Kita akan cuba membuat cBot yang lebih kompleks sekarang. Pada setiap bar, algo kita akan menyemak senarai posisi yang sedang dibuka dan menyesuaikan tahap henti rugi mereka supaya berada pada tahap pulang modal. Untuk berbuat demikian, kita perlu membuat kaedah sambungan BreakEven() untuk kelas Position.
Kita membuat cBot baharu dan menamakan semula. Selepas itu, kita memadamkan semua kod yang tidak diperlukan dan menambah kelas MyExtensions.
1 2 3 | |
Kod kita untuk kaedah BreakEven() agak mudah. Kita memeriksa sama ada posisi mempunyai henti rugi, sama ada keuntungan kasarnya lebih besar daripada sifar dan sama ada henti rugi yang ditetapkan pada masa ini tidak sama dengan harga kemasukan posisi. Jika semua syarat ini benar, kita mengubah suai henti rugi posisi supaya ia sama dengan harga kemasukan posisi.
1 2 3 4 5 6 7 | |
Dalam cBot itu sendiri, kita tidak perlu menggunakan kaedah lain selain OnBar(). Pada setiap bar, kita meminta cBot melakukan operasi mudah, iaitu mengulangi koleksi Positions dan memanggil kaedah BreakEven() baharu untuk setiap elemen di dalamnya.
1 2 3 4 5 6 | |
Selepas kita membina dan melancarkan cBot kita, kita boleh melihatnya dalam tindakan. Ia boleh menjadi pembantu dagangan yang berguna, terutamanya apabila menguruskan banyak posisi terbuka.
Gunakan kaedah sambungan dalam indikator
Kita juga akan membuat indikator berguna yang bergantung pada kaedah sambungan. Indikator ini akan mengukur kemeruapan dengan memplot peratusan perubahan harga simbol pada setiap bar berbanding dengan harga pembukaan bar tersebut.
Untuk berbuat demikian, kita akan membuat indikator baharu dan menamakan semula. Dalam tetingkap penyunting kod, kita akan membuat kelas MyExtensions untuk melanjutkan kelas Bar.
1 2 3 | |
Kita juga akan menambah kaedah PercentageChange(). Dalam pemboleh ubah priceChange, kita menolak harga penutupan bar daripada harga pembukaannya. Kaedah ini mengembalikan perubahan harga kita dibahagikan dengan harga pembukaan dan didarab dengan 100.
1 2 3 4 5 6 7 8 | |
Dalam kod indikator itu sendiri, kita tidak memerlukan kaedah Initialize() dan parameter yang tidak diperlukan. Dalam badan kaedah Calculate(), kita hanya memanggil kaedah PercentageChange() baharu kita pada setiap bar.
1 2 3 4 5 6 7 8 | |
Selepas itu, kita menyimpan dan membina indikator kita. Selepas membuat contoh indikator tersebut, kita sepatutnya melihat perubahan peratusan yang betul diplot. Ia boleh digunakan untuk menentukan kemeruapan jangka pendek dan jangka panjang, memberi manfaat kepada pelbagai jenis strategi dagangan.
Ringkasan
Sebagai kesimpulan, kaedah sambungan adalah alat yang berharga jika anda ingin membuat kod yang boleh digunakan semula yang menambah fungsi baharu kepada API cTrader. Kami amat mengesyorkan anda bereksperimen dengan kaedah sambungan kerana ia boleh menjadikan algo anda lebih cekap dan lebih mudah diselenggarakan.