Laman utama Indikator Teknikal Siaran

Condition Scanner: Indikator Berguna untuk MetaTrader 4

Lampiran
11135.zip (178.96 KB, Muat turun 0 kali)

Condition Scanner (cs)

Idea di sebalik potongan kod yang dilampirkan ini adalah untuk membantu anda merancang dan menguji strategi trading anda.

Anda boleh mencipta satu set syarat yang anda inginkan. Tulis kod untuk menguji syarat-syarat tersebut. Kemudian, masukkan kod anda ke dalam potongan kod ini dan buat beberapa modifikasi mudah.

Akhirnya, anda akan mendapatkan beberapa indikator. Salah satu indikator akan menunjukkan pada carta sejarah di mana syarat-syarat anda muncul. Yang lain pula akan menunjukkan pada panel sama ada syarat-syarat tersebut sedang berlaku untuk semua instrumen dan jangka masa yang anda minati. Ini akan menjimatkan masa anda dari perlu mencari pasangan dan jangka masa secara manual.

Cara Pemasangan:

Salin semua kandungan dari empat folder (Indicators, Include, Templates, Profiles) ke dalam folder setara di pemasangan anda. Tiada apa yang membahayakan di sana - hanya indikator dan lain-lain.
Keluar dan masuk semula ke dalam program MetaQuotes.

Untuk menunjukkan apa yang boleh dilakukan oleh scanner:

Contoh ini berdasarkan Power Pro (pengidentifikasi = "PP") yang terkenal di kalangan trader. Ia adalah strategi breakout band di mana had band atas adalah EMA dari tinggi dan had bawah adalah EMA dari rendah. Saya tidak menyokong strategi ini - ia hanya sebagai contoh apa yang boleh anda bangunkan.

Di sistem anda, tukar ke profil cspp. Ini mungkin memakan masa beberapa saat untuk paparan pertama tetapi tidak menggunakan banyak sumber komputer selepas itu.

Anda seharusnya melihat skrin yang serupa dengan ini:



Contoh di atas terdiri daripada:
  • indikator pada carta dengan 4 plot,
  • indikator tetingkap berasingan yang menunjukkan EMA RSI,
  • indikator tetingkap berasingan yang menunjukkan di mana syarat-syarat yang mencadangkan perdagangan panjang atau pendek telah berlaku secara sejarah,
  • dan indikator panel yang menunjukkan di mana syarat yang sama baru sahaja berlaku atau sedang berlaku di pelbagai pasangan dan jangka masa.

Kod yang umum untuk semua imbasan:

Utils.mqh mengandungi beberapa fungsi utiliti yang boleh digunakan dalam mana-mana indikator, penasihat pakar, dan lain-lain.
cs_Chart.mqh mengandungi hampir semua kod yang digunakan dalam indikator carta semasa.
cs_Panel.mqh mengandungi hampir semua kod yang digunakan dalam indikator paparan panel.

Kod khusus untuk strategi PP (Power Pro):

csPP_0.mq4 memaparkan indikator "carta-window" yang relevan.
csPP_1.mq4 memaparkan indikator "tetingkap berasingan" yang relevan.
csPP_Chart.mq4 adalah indikator yang menunjukkan apa yang berlaku secara sejarah di carta semasa.
csPP_Panel.mq4 adalah indikator yang menunjukkan situasi semasa di semua pasangan dan jangka masa yang anda minati.
csPP_GetBarFlag.mqh adalah kod yang "disertakan" dalam kedua-dua indikator Carta dan Panel. Ia adalah bahagian yang menentukan sama ada terdapat syarat yang menarik pada bar tertentu.

I juga telah menyertakan contoh lain yang kurang kompleks (pengidentifikasi=MAX).

Kod khusus untuk strategi MAX (moving average crossover):

csMAX_0.mq4 adalah indikator khusus yang memaparkan dua purata bergerak. Ia sepenuhnya berdiri sendiri.
Tidak ada csMAX_1 yang setara kerana, tidak seperti PP, tidak ada keperluan untuk paparan tetingkap berasingan.
csMAX_Chart.mq4, csMAX_Panel.mq4 dan csMAX_GetBarFlag.mqh melakukan perkara yang sama seperti untuk strategi PP di atas.

Kod yang idnya bermula dengan csXXXX:

Ini adalah templat yang boleh digunakan semasa membangunkan imbasan tambahan.

Cara saya mengkod untuk syarat baru:

Saya memutuskan pengenalan strategi (contohnya PB untuk pinbars).

Saya menyediakan tetingkap seperti yang dinyatakan di atas di bawah "Untuk menunjukkan apa yang boleh dilakukan oleh scanner", membuang sebarang indikator sedia ada.

Jika imbasan baru saya bergantung kepada indikator pada carta, saya membinanya menggunakan csXXXX_0.mq4 sebagai corak. Saya ingat untuk 'simpan sebagai...' csPB_0.mq4. Saya menggunakan indikator khusus saya ke dalam carta kiri.

Jika saya memerlukan indikator tetingkap berasingan, saya juga membinanya. Saya ingat untuk 'simpan sebagai...' csPB_1.mq4. Saya mengaplikasikannya ke dalam carta kiri.

Saya membina indikator khusus daripada menggunakan indikator standard supaya saya boleh merujuknya di tempat lain menggunakan fungsi iCustom. Dengan cara ini, jika saya mengubah fikiran tentang parameter asas strategi saya (contohnya kaedah purata bergerak), saya hanya perlu mengubah indikator khusus saya. Jika saya menggunakan indikator standard, saya perlu mengubahnya dan kemudian menyelam ke dalam kod saya untuk menyesuaikan dengan perubahan fikiran saya.

Saya mengambil csXXXX_Chart.mq4, menggantikan semua contoh 'XXXX' dengan pengenalan strategi saya 'PB', dan menyimpan kod sebagai csPB_Chart.mq4. Ia tidak akan dikompilasi lagi kerana terdapat beberapa kod "include" yang masih perlu ditulis.

Sekarang untuk menyediakan kod "include".

Jika syarat yang ingin saya uji sangat mudah, saya hanya menggunakan fail "include" csXXXX_GetBarFlag.mqh, kod apa yang saya mahu, dan 'simpan sebagai...' csPB_GetBarFlag.mqh. Tetapi jika pengkodan itu rumit, saya kembali ke csPB_Chart.mq4 yang saya buat sebelum ini, saya komen keluar baris kod yang kini membaca "#include <csPB_GetBarFlag.mqh>", dan saya membina kod yang saya mahu terus dalam fail csPB_Chart.mq4. Setelah saya mendapatnya dengan bersih, saya pindahkan kod mencari syarat ke dalam fail "include" 'csPB_GetBarFlag.mqh' dan membatalkan komen pernyataan #include dalam fail 'csPB_Chart.mq4'.

Sekarang fail 'csPB_Chart.mq4' boleh dikompilasi dan digunakan pada carta kiri.

Pada ketika ini, saya menyimpan templat untuk carta kiri sebagai csPB-CHART.tpl. Ia mengandungi apa-apa indikator khusus pada carta, indikator khusus tetingkap berasingan, dan plot hasil yang berkaitan dengan carta semasa.

Saya memuatkan fail 'csXXXX_Panel.mq4', menggantikan semua contoh "XXXX" dengan "PB", kemudian 'simpan sebagai...' "csPB_Panel.mq4". Fail terakhir ini dikompilasi dan digunakan pada carta kanan. Ia mungkin sedikit perlahan untuk dijalankan ketika pertama kali digunakan tetapi tidak menggunakan banyak sumber ketika berjalan.

Saya menyimpan csPB_panel.tpl sebagai templat untuk carta kanan.

Saya biasanya menyimpan csPB sebagai profil.

CATATAN: Ketika membina indikator khusus dan merujuknya dengan fungsi iCustom, saya memastikan bahawa namanya tepat. Anda tidak akan mendapat amaran jika iCustom merujuk kepada indikator yang tidak wujud.

CATATAN: Mungkin terdapat pepijat di mana ketika indikator panel pertama kali dimuatkan, ia menghasilkan keputusan yang tidak konsisten dengan yang ada di carta tertentu yang sedang dipaparkan. Saya mendapati jika saya menukar skala waktu pada tetingkap panel (sehingga memaksa pengiraan semula), semuanya akan muncul dengan tepat. Saya sangat menghargai jika sesiapa dapat membantu saya menyelesaikan masalah ini.

CATATAN: Dalam kod ...GetBarFlag.mqh yang anda hasilkan sendiri, anda boleh mengembalikan mana-mana integer kepada program pemanggil untuk dipaparkan. Seperti yang ditetapkan, sifar bermakna 'tiada hasil' dan menyebabkan paparan simbol abu-abu yang menunjukkan bar yang diuji. Mengembalikan integer negatif akan menghasilkan paparan merah manakala integer positif akan menghasilkan paparan hijau.

Beberapa aspek perisian:

Kod ditulis sebagai indikator supaya, apabila panel dipaparkan dan anda ingin melihat pasangan tertentu dan jangka masa, anda hanya perlu memilih pasangan dari tetingkap Market Watch, seret dan lepas ke ruang carta semasa dan ubah jangka masa mengikut keperluan. Templat akan menguruskan selebihnya.

Untuk mengurangkan beban komputer, saya telah melakukan dua perkara.

Pertama, ketika berurusan dengan array siri masa, saya hanya pergi kembali ke 200 bar.

Kedua, perisian paparan panel tidak menguji syarat pengguna pada setiap tick. Ia menggunakan mekanisme pemasa supaya pengujian hanya diterapkan pada bar[0] jika bar[0] sudah terbentuk 90%, jika tidak, pengujian diterapkan pada bar[1]. Jika bar[1] mempunyai fokus (iaitu bar[0] kurang dari 90% terbentuk), ia diuji sekali dan masa perubahan ke bar[0] dikira. Untuk setiap tick yang datang selepas itu sehingga masa perubahan dicapai, tiada apa yang berlaku. Saya tidak 100% pasti bahawa saya telah menyandarkan ini dengan betul lagi tetapi ia nampaknya berfungsi dengan baik.

Selanjutnya mengenai mekanisme pemasa yang dinyatakan di atas, baris atas panel menunjukkan tarikh dan masa yang terakhir kali ujian syarat dilakukan. Selain itu, dalam contoh yang diberikan di sini, simbol neutral akan menunjukkan sifar jika bar[0] berada dalam fokus dan '1' jika bar[1] berada dalam fokus.

Siaran berkaitan

Komen (0)