Normalizer

Deskripsi

Pada hari-hari pemikiran yang membebani tentang efektivitas penggunaan osilator, saya sering membutuhkan normalisasi nilainya, yaitu penambahan osilasi indikator ke kisaran [-1;1]. Hal ini sering membuka kemungkinan baru, yang paling sederhana adalah pengendalian nilai indikator dengan level konkret (0,5, 0,8 atau lainnya), dan bukan dengan beberapa nilai kasual yang diperkirakan kira-kira tergantung pada pasar. Tentu saja, jika indikatornya sudah dinormalisasi, tidak perlu mempertimbangkan produk ini, dan jika tidak … menggunakannya, tolong, jangan menilai saya hanya untuk kode mentahnya.

Parameter:

Indikator string – indikator itu sendiri yang diteruskan ke fungsi icustom(). Sayangnya, alat otomatisasi MQL4 tidak cukup untuk penambahan indikator standar di sini. Di sisi lain, siapa yang dapat mencegah pembuat kode yang penasaran mengubah entri dalam program?
mode int – jumlah garis yang diperlukan dari indikator awal …
int param1
int param2 – … dan parameternya. Sayangnya sekali lagi, imajinasi pengembang MQL cukup hanya untuk membiarkan diri mereka menulis fungsi dengan variabel jumlah parameter (seperti Print), dan untuk mendukung aritmatika alamat (menurut saya, yang terakhir dibuat semata-mata untuk membuat kesamaan pengguna merasa diri mereka lebih rendah dibandingkan dengan para dewa :)))). Jadi mari kita bekerja secara manual.

Gambar:

Komentar:

Perhitungan dilakukan dalam dua tahap:

1. Pada tahap inisialisasi (fungsi init(), jika ada yang belum tahu 🙂 seluruh larik data indikator dianalisis dengan tujuan untuk menghitung periode khusus, yaitu periode di mana nilai kuadrat rata-rata indikator dapat memberikan wawasan tentang nilai kuadrat rata-rata (MSV) tetapi secara keseluruhan sejarah.

Mari saya jelaskan. Misalkan kita memiliki sebuah osilator dan kita telah menghitung kuadrat rata-ratanya untuk beberapa periode osilasi berturut-turut. Jadi mari kita membuat kesepakatan bahwa harus ada, misalnya, 3 periode (seperti yang saya miliki – #define PERIODS_CHARACTERISTIC 3, saya sarankan untuk tidak menggunakan lebih banyak, jika tidak prosesor akan kelebihan beban). Inti dari perhitungan dibawa ke penentuan berapa banyak bar rata-rata panjang satu periode (yaitu 2*rata-rata interval antara dua nol indikator), dan perkalian dari nilai yang diperoleh dengan 3.

2. Tinggal menghitung MSV untuk setiap batang (seperti akar kuadrat dari dispersi) pada tiga periode yang diperoleh, untuk menormalkan nilai indikator kami di atasnya, dan pada akhirnya menambahkan semuanya ke diapason dinamis [-1;1] dengan cara melewatkannya melalui fungsi kompresor f(x)=tanh(x) (singgung hiperbolik, saya harus menulis fungsinya sendiri :))

Contoh teknis murni. Garis hijau pada gambar adalah osilator saya yang sangat tua yang mencirikan aktivitas pasar (pada kenyataannya sama dengan MACD tetapi berdasarkan volume). Yang biru – adalah osilator juga, tetapi sudah melewati -=Normalisasi=-. Level +-0,75, +-0,5, +-0,25 terlihat jelas, dan Anda juga dapat melihat bahwa semua maksimum dan minimum, wilayah naik dan turun, dan titik-titik persimpangan level nol mempertahankan posisinya.

Jadi, ini dia… Saya tidak bersalah jika seseorang tidak menyukainya.

Diterjemahkan dari bahasa Rusia oleh MetaQuotes Software Corp.
Kode asli: https://www.mql5.com/ru/code/8572

Vendor Information

  • Address:
  • No ratings found yet!