Dasar-dasar dari Indikator Petunjuk Penulisan


Pengantar

Pasal ini telah ditulis dengan maksud untuk menjelaskan dan menggambarkan prinsip-prinsip dalam membuat indikator pengguna dan memeriksa perangkat programmer yang mungkin terjadi ketika mengambil langkah pertama mereka dalam pengembangan di NTL+ (the NetTradeX Language).


Sebagai penyusun algoritma dari indikator pengguna, Anda perlu untuk menentukan bagaimana nilai-nilai yang bisa ditulis dalam buffer indikator itu akan dihitung dan ditampilkan pada layar. Pembentukan secara benar nilai-nilai ini adalah tujuan akhir dari pelaksanaan indikator.


Sebagai contoh, mari kita buat indikator yang akan menunjukkan perbedaan antara jumlah bar, dengan harga penutupan lebih tinggi dari harga pembukaan, dan jumlah bar, dengan harga penutupan lebih rendah dari harga pembukaan, untuk yang terakhir dan interval. Kami akan menampilkan indikator kita sebagai histogram di jendela terpisah.


Penulisan kode skrip

Algoritma kita akan menggunakan secara sederhana dan intuitif sehingga bisa dengan mudah memeriksa operasi indikator pada grafik. Kami akan menganalisis n bar sebelumnya untuk setiap i-bar dan bentuk statistik, di mana kita akan menambahkan 1 untuk nilai yang dihasilkan jika bar naik dan dikurangi 1 dalam kasus bar tetes.

Mari kita periksa kode indikator:


Pertama, kita harus menyatakan semua variabel yang akan digunakan dalam indikator kami.

#set_indicator_separate double ExtMapBuffer1[]; int ExtCountedBars=0; extern int period = 10;

#set_indicator_separate adalah direktif preprocessor yang menunjukkan bahwa grafik yang akan ditampilkan dalam jendela terpisah tanpa tumpang tindih dengan grafik harga utama. Baris berikutnya demikianlah ExtMapBuffer1 array yang global di mana nilai-nilai penyangga indikator akan disimpan. Perlu dicatat bahwa kita tidak menentukan ukuran array, sebagai compiler itu sendiri akan mengalokasikan jumlah memori yang diperlukan. The ExtMapBuffer1 Array sebenarnya menyimpan koordinat dari titik-titik termasuk dalam grafik, dengan absis mereka yang ditetapkan oleh indeks dari elemen array. Kemudian kita menginisialisasi nilai variabel ExtCountedBars ke 0; itu akan menyimpan jumlah bar yang sudah dihitung. Dengan demikian tidak akan ada kebutuhan untuk melakukan perhitungan rutin untuk semua bar, yang akan mempercepat perhitungan nilai indikator serta pergerakan grafik indikator. Baris berikutnya demikianlah variabel global periode yang akan menyimpan jumlah interval, di mana indikator menghitung statistiknya. Harap dicatat bahwa penggunaan modifier extern memungkinkan kita untuk mengubah period parameter dengan cara sifat indikator tanpa perlunya kompilasi ulang.


Mari kita mempertimbangkan fungsi Initialize (), di mana kita akan menentukan pengaturan dasar untuk indikator kami.


Metode SetIndexCount dari objek Indicator menetapkan jumlah buffer untuk nilai-nilai indikator. Kami memiliki satu buffer dengan nilai-nilai ExtMapBuffer1, jadi kami tentukan 'satu' sebagai satu-satunya parameter. Kami juga akan perlu untuk menghubungkan jumlah buffer untuk array dengan nilai-nilai penyangga. link ini ditentukan pada baris Indicator.SetIndexBuffer (0, ExtMapBuffer1), di mana ia menetapkan bahwa sifat indikator zeroth akan digunakan untuk membuat nilai-nilai yang disimpan dalam buffer ExtMapBuffer1. Pada baris berikutnya, kita mengatur properti untuk indikator kami. Parameter pertama dari metode SetIndexStyle adalah jumlah buffer, yang merupakan nilai '0' yang kita ditentukan dalam SetIndexBuffer. Parameter kedua mendefinisikan jenis gambar - histogram. Dalam parameter ketiga, kita tentukan gaya garis lsSolid (sebenarnya, di sini kita dapat menentukan nilai apapun, karena nilai parameter ini hanya mempengaruhi garis dan bar chart dengan ketebalan 1). Dalam parameter berikutnya, kita menetapkan ketebalan 5 dari garis dan warna biru dengan menggunakan clrBlue konstan yang sesuai (kami juga dapat menentukan warna dalam format RGB, misalnya, 0x0000FF).


Kemudian datang Run () fungsi yang melakukan pemeriksaan dasar dan menjalankan fungsi pengguna imbang (), yang mengimplementasikan seluruh perhitungan.