Memahami Normalisasi dalam Penggunaan Oscillator untuk Dagangan

Mike 2008.11.20 16:03 9 0 0
Lampiran

Dalam dunia dagangan, sering kali kita berhadapan dengan pemikiran yang membebankan tentang keberkesanan penggunaan oscillator. Apa yang sering diperlukan adalah normalisasi nilai-nilai tersebut, iaitu mengubah suai ayunan indikator ke dalam julat [-1;1]. Proses ini membuka pelbagai kemungkinan baru. Salah satu kemudahan yang paling jelas adalah mengawal nilai indikator dengan tahap tertentu (0.5, 0.8 dan lain-lain), berbanding dengan nilai rawak yang dianggarkan bergantung pada keadaan pasaran. Jika indikator sudah dinormalisasi, kita tidak perlu risau tentang produk ini. Namun, jika tidak, sila gunakan, dan janganlah terlalu menghukum saya atas kod yang kasar ini.

Parameter:

string Indikator - indikator itu sendiri yang akan dihantar ke fungsi icustom(). Malangnya, alat automasi MQL4 tidak cukup untuk menambah indikator standard di sini. Namun, siapa yang dapat menghalang seorang pengaturcara yang ingin mengubah entri dalam program?
int mode - nombor baris yang diperlukan dari indikator asal...
int param1
int param2 - dan parameter-parameter lain. Malangnya, lagi, imaginasi pembangun MQL hanya membenarkan mereka menulis fungsi dengan nombor parameter yang berubah-ubah (seperti Print), dan menyokong aritmetik alamat (pada pendapat saya, yang terakhir ini hanya dilakukan untuk membuat pengguna biasa merasa inferior berbanding dengan para dewa :)). Jadi, mari kita bekerja secara manual.

Gambar:

Komen:

Pengiraan dilakukan dalam dua peringkat:

1. Pada peringkat inisialisasi (fungsi init(), jika ada yang tidak tahu :), keseluruhan array data indikator dianalisis untuk mengira tempoh yang khas, iaitu tempoh di mana nilai kuasa dua purata indikator dapat memberikan pandangan kepada nilai kuasa dua purata (MSV) tetapi berdasarkan keseluruhan sejarah.

Izinkan saya jelaskan. Katakan kita mempunyai oscillator dan kita telah mengira kuasa dua puratanya untuk beberapa tempoh ayunan berturut-turut. Mari kita buat perjanjian bahawa mesti ada, contohnya, 3 tempoh (seperti yang saya ada - #define PERIODS_CHARACTERISTIC 3, saya sarankan tidak menggunakan lebih banyak, jika tidak, pemproses akan terbeban). Inti pengiraan adalah untuk menentukan berapa banyak bar yang secara purata panjang satu tempoh (iaitu 2*purata selang antara dua nol indikator), dan mengalikan nilai yang diperoleh dengan 3.

2. Seterusnya, kita perlu mengira MSV untuk setiap bar (seperti akar kuasa dua dispersi) pada tiga tempoh yang diperoleh, untuk menormalisasi nilai indikator kita, dan akhirnya, menyesuaikan semuanya kepada julat dinamik [-1;1] dengan melalui fungsi pemampat f(x)=tanh(x) (tangen hiperbolik, saya terpaksa menulis fungsi itu sendiri :)).

Contoh teknikal yang jelas. Garis hijau dalam gambar adalah oscillator lama saya yang menggambarkan aktiviti pasaran (sebenarnya ia sama seperti MACD tetapi berdasarkan volum). Garis biru - juga adalah oscillator, tetapi sudah melalui -=Normalizator=-. Tahap +-0.75, +-0.5, +-0.25 jelas terlihat, dan anda juga dapat melihat bahawa semua maksimum dan minimum, kawasan peningkatan dan penurunan, serta titik persilangan tahap nol tetap pada posisi mereka.

Jadi, itulah dia... Saya tidak bersalah jika ada yang tidak suka dengan cara ini.

Senarai
Komen 0