Mengetahui Nilai Dalam Parameter OnCalculate - Indikator untuk MetaTrader 5

Mike 2018.12.25 12:11 16 0 0
Lampiran

Hai trader! Hari ini kita akan membincangkan tentang utiliti yang berguna bagi mereka yang baru memulakan dalam pengaturcaraan indikator. Utiliti ini membolehkan kita melihat nilai yang diberikan oleh fungsi OnCalculate dan beberapa fungsi lain. Mari kita lihat apa yang ditunjukkan oleh indikator ini:

  • Nilai terkini yang diberikan dengan panggilan OnCalculate yang terbaru.
  • Nilai sebelumnya dari panggilan OnCalculate yang sebelum ini.
  • Nilai pertama dari kali pertama OnCalculate dijalankan.
  • Setiap siri nilai array, sama ada as_series atau not_series, dengan kemampuan untuk mengubah nilai siri dengan satu klik pada paparan.

Versi 1.10 memperkenalkan keupayaan untuk menukar secara dinamik sama ada array ditetapkan sebagai as_series atau not_series - hanya klik pada teks. Selain itu, nilai Window Bars dan First visible Bar ditetapkan secara dinamik dengan perubahan pada carta. Paparan ON/OFF menunjukkan apa yang akan berlaku dengan tetapan pada pelaksanaan OnCalculate seterusnya, berbanding dengan apa yang berlaku pada pelaksanaan yang terbaru.

Versi 1.20 menambah keupayaan untuk memilih sama ada indikator menetapkan array kepada as_series atau not_series, juga hanya dengan mengklik pada teks. Indikator kini juga memaparkan kedua-dua hujung array masa dan kedua-dua hujung buffer iMA. Perubahan ini bertujuan untuk menjelaskan perbezaan antara array as_series dan not_series. Selain itu, paparan kini disegarkan mengikut keperluan menggunakan pengendali OnTimeEvent dan bukannya melakukan paparan pada setiap sebut harga. Ini mengurangkan masa pelaksanaan OnCalculate dari sekitar 300 ms kepada kurang dari 1 ms - kod untuk memeriksa masa pelaksanaan telah ditinggalkan dalam OnCalculate dan hanya perlu dibuka komen untuk memaparkan milisaat pelaksanaan.

Gambar ini menunjukkan nilai yang dipaparkan oleh utiliti OnCalculate_Values. Perhatikan tiga nilai yang dipisahkan oleh '/', yang memisahkan Nilai Terkini, Nilai Sebelumnya, dan Nilai Pertama. Nilai OnCalculate ditetapkan kepada 'as_series' atau 'not_series' dengan setiap kejadian OnCalculate - apabila Set Arrays dihidupkan, jika tidak, mereka dibiarkan kepada nilai lalai terminal. Perhatikan nilai selepas nama array dalam kurungan, nilai itu menunjukkan dari bar mana nilai itu datang - nilai indeks '0', atau 'nilai pada indeks maksimum'.

Paparan Nilai OnCalculate

Kod ini melaksanakan satu garisan indikator, plot harga Open bagi setiap bar seperti yang diberikan oleh iMA; tujuan adalah untuk menyediakan buffer bagi menggunakan fungsi BarsCalculated dan menunjukkan paparan indikator ketika ditetapkan kepada 'as_series' atau 'not_series'. Mengklik iMA_Val[0] menetapkan buffer iMA kepada as_series atau not_series hanya sekali, ketika diklik; array indikator iMA tidak ditetapkan dengan setiap panggilan OnCalculate.

Satu koleksi array memegang sifat setiap objek paparan (OBJ_LABEL) dalam paparan:

Fungsi ArrayGetAsSeries digunakan untuk menentukan sama ada array dalam parameter OnCalculate adalah array siri masa atau tidak, dan paparan menunjukkan hasilnya (As_Series atau Not_Series) - paparan menunjukkan bahawa array ini tidak siri pada mulanya, atau dari satu panggilan ke panggilan seterusnya setelah ditetapkan sebagai siri (fungsi SetAsSeries menetapkannya sebagai siri hanya apabila ia dihidupkan, ia membiarkannya kembali kepada lalai apabila ia dimatikan - ia tidak menetapkan 'as series' kepada palsu).

Array anggota 3, ary_OnCalcVals, memegang 1) Nilai Terkini, 2) Nilai Sebelumnya, dan 3) Nilai Pertama yang dijumpai dalam parameter OnCalculate. Fungsi CopyNewToOld dan MoveNewTo mengambil nilai semasa untuk setiap parameter paparan dan meletakkannya dalam penyimpanan sejarah yang disediakan oleh ary_OnCalcVals.

Senarai
Komen 0