Kitaran hayat indikator tersuai
Struktur kod sampel
Artikel ini akan membimbing anda melalui struktur kod dan menjelaskan logik di sebalik peristiwa dan kitaran hayat untuk indikator cTrader. Untuk mengakses indikator tersuai, buka tab Local dalam aplikasi Algo.

Sebagai contoh, anda boleh mencipta indikator baharu bernama "LifeCycle Test" dengan kod sampel berikut yang tersedia dalam tetingkap editor kod.

Untuk menetapkan semula kepada versi boilerplate, salin 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 | |
Sepintas lalu, struktur kod hanya merangkumi dua kaedah, kaedah Initialize() dan kaedah Calculate(). Klik Build untuk meneruskan pengujian indikator ini. Kita akan menambah kaedah tambahan yang dipanggil OnDestroy() dan menjelaskan tujuannya kemudian.
Peristiwa inisialisasi
Apabila indikator cTrader pertama kali dilampirkan pada carta atau apabila pengguna menukar mana-mana tetapan parameter, instans indikator dicipta semula dan kaedah Initialize() dipanggil. Ia digunakan untuk menginisialisasi sebarang pemboleh ubah yang anda rancang untuk digunakan dalam indikator anda. Anda juga boleh mentakrifkan dan merujuk indikator tambahan untuk mencipta indikator tunggal menggunakan formula dari indikator lain.
Secara lalai, templat kod baharu merangkumi tetapan parameter yang dipanggil Message dengan nilai "Hello world!".
1 2 | |
Dalam kaedah Initialize(), terdapat baris kod untuk mencetak mesej ini ke log.
1 | |
Untuk menunjukkan kaedah Initialize(), tambah instans indikator dengan mengklik ikon Plus di sebelah ikon Build dan pilih simbol. Jika anda klik More dalam baris indikator dan pilih Add an instance, simbol EURUSD dengan tempoh masa h1 akan ditambah secara automatik.

Nota
Menambah instans dalam cTrader Algo adalah sama seperti melampirkan indikator pada carta dalam aplikasi Trade.
Sekarang, buka tab Log dalam panel Trade Watch di bawah carta. Seperti yang anda lihat, mesej "Hello world" telah dicetak.

Setiap kali indikator pertama kali ditambah pada carta atau apabila parameter diubah, carta disegarkan semula dan kaedah Initialize() dipanggil semula. Taip mesej yang berbeza dalam bahagian Parameters untuk melihat entri log dikemas kini dengan sewajarnya.

Kira output indikator
Kaedah Calculate() dipanggil untuk setiap indeks data sejarah dan pada setiap tik masuk. Contohnya, jika carta semasa mempunyai 1000 bar, kaedah Calculate() akan dipanggil untuk indeks 0, 1, 2, dan seterusnya, sehingga maksimum 999.
1 | |
Kaedah Calculate() boleh dipanggil beberapa kali sesaat semasa tempoh turun naik yang tinggi atau lebih sedikit apabila pasaran mendatar. Untuk menguji cara ia berfungsi, anda boleh menambah baris kod pada badan kaedah Calculate() untuk mencetak nilai indeks yang dimasukkan ke dalam kaedah untuk setiap tik data baharu. Jangan lupa untuk klik Build setiap kali selepas menambah perubahan dalam tetingkap editor kod.
1 | |
Untuk beralih dari tetingkap editor kod ke carta, klik instans indikator yang ditambah. Jika anda membuka tab Log dalam panel Trade Watch, anda akan melihat nilai yang dicetak untuk setiap indeks yang dimasukkan ke dalam kaedah.

Kaedah OnDestroy()
Kaedah OnDestroy() dipanggil apabila indikator dikeluarkan dari carta dan tidak lagi diperlukan. Anda perlu melaksanakan kaedah ini, kerana ia tidak ditambah secara lalai apabila anda mencipta indikator baharu.
1 2 3 4 | |
Kaedah ini berguna untuk pengaturcara, kerana ia membolehkan mereka melepaskan sumber yang tidak diurus dan melaksanakan tugas pemuktamadan. Ia membantu mencegah kebocoran memori dan memastikan indikator tidak mengekalkan sumber selepas dikeluarkan. Contoh termasuk menutup sambungan ke suapan data luaran, melepaskan objek data besar, dan operasi lain yang membebaskan memori.
Ringkasan
Secara ringkasnya, kaedah Initialize(), Calculate() dan OnDestroy() menggambarkan peringkat berbeza dalam kitaran hayat indikator tersuai. Dengan melaraskan kod sampel dalam aplikasi Algo, anda bebas untuk memutuskan cara untuk menginisialisasi pemboleh ubah indikator, mengira output indikator, dan menjalankan tugas pemuktamadan.
