Tuesday 11 July 2017

Variabel Moving Average Indicator Mq4


Moving Average Average Moving Average Moving Average Average Moving Average berdasarkan Teorema Sinyal Nyquist-Shannon. Secara matematis disarankan untuk memiliki lag yang paling sedikit. Kurang tertinggal dibanding rata-rata generasi kedua dan umum seperti rata-rata nol-nol. Download Gambar. 1. Perbandingan Moving Averages. Rata-rata generasi ke-3 tampil paling baik dibandingkan dengan semua rata-rata lainnya. Semua rata-rata dijalankan dengan ukuran jendela yang sama 21. Data mewakili 3x60 titik data dengan distribusi Gaussian sekitar 100 dan 200 dan standar deviasi 5 poin. Rumus seperti pada Drschner 2011. Implementasi EMA berdasarkan algoritma MetaTrader4, generasi ke 2 menggunakan koreksi Ehler (2001), generasi ke 3 didasarkan pada teorema Nyquist-Shannon seperti yang digariskan di Drschner (2011) dengan lambda 4. Moving Averages of the 3rd Generation Moving averages seharusnya memperlancar data dan menghilangkan noise dan informasi yang tidak berguna. Beberapa varian rata-rata digunakan secara luas, misalnya Simple Moving Average (SMA) atau Exponentially Moving Average (EMA) (Wikipedia, Moving Averages, 2011). Salah satu tantangannya adalah bahwa moving averages mengenalkan lag, yaitu kurva yang diperhalus mengikuti tren biasanya nanti (lihat Gambar 1). Rata-rata bergerak adaptif seperti VIYDA (Chande, 1992 Brown) dan Kaufmans Adaptive Moving Average (KAMA) (Kaufmann, 1995) mencoba mengatasi masalah ini dengan menggabungkan variabel dinamis. Pada tahun 2001, J. Ehler memperkenalkan konsep umum berdasarkan teori sinyal yang kami sebut sebagai rata-rata generasi kedua (Ehler, 2001). Di sini, asumsi dasarnya adalah bahwa deret waktunya terdiri dari sejumlah fase tumpang tindih sinyal yang akan membuat teori sinyal berlaku (Ehler, 2001 Huang, dkk., 1998). Pada tahun 2011, M. G. Drschner menyatakan bahwa di bawah model teori sinyal - teorema Nyquist-Shannon (Wikipedia, Nyquist, 2008) harus diterapkan (Drschner, 2011). Dalam karyanya, Drschner menjelaskan bahwa rata-rata menurut kriteria ini memiliki lag yang paling tidak mungkin secara teoritis dan disebut sebagai Moving Averages generasi ke 3. Indikator ParameterMoving Average Indikator Rata-rata Bergerak Rata-rata menunjukkan nilai rata-rata instrumen rata-rata untuk jangka waktu tertentu. Ketika seseorang menghitung rata-rata bergerak, rata-rata harga instrumen untuk periode waktu ini rata-rata. Seiring perubahan harga, rata-rata pergerakannya meningkat, atau menurun. Ada empat jenis rata-rata bergerak: Sederhana (juga disebut Aritmatika), Eksponensial. Merapikan dan tertimbang Moving Average dapat dihitung untuk kumpulan data sekuensial, termasuk harga pembukaan dan penutupan, harga tertinggi dan terendah, volume perdagangan atau indikator lainnya. Hal ini sering terjadi ketika rata-rata pergerakan ganda digunakan. Satu-satunya hal di mana rata-rata bergerak dari berbagai jenis berbeda satu sama lain, adalah ketika koefisien bobot, yang ditetapkan ke data terbaru, berbeda. Jika kita berbicara tentang Simple Moving Average. Semua harga periode waktu yang dimaksud sama nilainya. Pindah Eksponensial Rata-rata dan Rata-rata Bergerak Rata-rata Bergerak melambangkan nilai lebih pada harga terbaru. Cara yang paling umum untuk menafsirkan rata-rata pergerakan harga adalah membandingkan dinamikanya dengan aksi harga. Ketika harga instrumen naik di atas rata-rata bergeraknya, sinyal beli muncul, jika harga turun di bawah rata-rata pergerakannya, yang kita miliki adalah sinyal jual. Sistem perdagangan ini, yang berbasis pada moving average, tidak dirancang untuk memberikan akses masuk ke pasar tepat di titik terendahnya, dan pintu keluarnya tepat di puncak. Hal ini memungkinkan untuk bertindak sesuai dengan tren berikut: untuk membeli segera setelah harga mencapai bagian bawah, dan untuk menjual segera setelah harga mencapai puncaknya. Moving averages mungkin juga diterapkan pada indikator. Di situlah interpretasi indikator moving averages sama dengan interpretasi rata-rata pergerakan harga: jika indikator naik di atas rata-rata pergerakannya, itu berarti pergerakan indikator naik cenderung berlanjut: jika indikator berada di bawah rata-rata pergerakannya, ini Berarti kemungkinan akan terus turun. Berikut adalah jenis rata-rata bergerak pada grafik: Rata-rata Moving Average Moving Average (SMMA) Rata-rata Terputus Moving Average (LMA) Rata-rata Terputus Moving Average (LMA) Anda dapat menguji sinyal perdagangan dari indikator ini dengan membuat Expert Advisor Di MQL5 Wizard. Perhitungan Simple Moving Average (SMA) Sederhana, dengan kata lain, rata-rata pergerakan aritmatika dihitung dengan menjumlahkan harga penutupan instrumen selama periode satu periode (misalnya 12 jam). Nilai ini kemudian dibagi dengan jumlah periode tersebut. SMA SUM (CLOSE (i), N) N SUM jumlah CLOSE (i) harga penutupan periode berjalan N jumlah periode perhitungan. Exponential Moving Average (EMA) Rata-rata pergerakan yang dipercepat secara eksponensial dihitung dengan menambahkan bagian tertentu dari harga penutupan saat ini ke nilai rata-rata pergerakan sebelumnya. Dengan rata-rata bergerak yang rata-rata dihaluskan, harga penutupan terbaru lebih bernilai. P-percent exponential moving average akan terlihat seperti: EMA (CLOSE (i) P) (EMA (i - 1) (1 - P)) TUTUP (i) harga penutupan saat ini EMA (i - 1) nilai Moving Average Dari periode sebelumnya P persentase menggunakan nilai harga. Rata-rata Moving Average (SMMA) Nilai pertama dari rata-rata bergerak merapikan ini dihitung sebagai rata-rata bergerak sederhana: SUM1 SUM (CLOSE (i), N) Rata-rata pergerakan kedua dihitung sesuai dengan rumus ini: SMMA (i) (SMMA1 (N-1) CLOSE (i)) N Berhasil rata-rata bergerak dihitung sesuai dengan rumus di bawah ini: PREVSUM SMMA (i - 1) N SMMA (i) (PREVSUM - SMMA (i - 1) TUTUP (i)) N SUM sum SUM1 jumlah total harga penutupan untuk periode N dihitung dari bar sebelumnya PREVSUM jumlah smoothed dari bar sebelumnya SMMA (i-1) merapikan moving average dari bar sebelumnya SMMA (i) merapikan moving average dari bar saat ini (Kecuali untuk yang pertama) TUTUP (i) harga saat ini mendekati periode penghalusan N. Setelah konversi aritmatika, rumus dapat disederhanakan: SMMA (i) (SMMA (i - 1) (N - 1) CLOSE (i)) N Linear Weighted Moving Average (LWMA) Dalam kasus rata - rata bergerak tertimbang, data terakhir adalah Lebih banyak nilai daripada data awal lebih banyak. Rata-rata bergerak tertimbang dihitung dengan mengalikan masing-masing harga penutupan dalam rangkaian yang dipertimbangkan, dengan koefisien bobot tertentu: LWMA SUM (CLOSE (i) i, N) SUM (i, N) SUM sum CLOSE (i) harga tutup saat ini SUM (i, N) jumlah total koefisien bobot N periode pemulusan. Pembuatan Indikator Kustom Saat membuat strategi trading, pengembang sering menghadapi keharusan menggambar secara grafis di jendela keamanan ketergantungan tertentu yang dihitung oleh pengguna (pemrogram). Untuk tujuan ini MQL4 menawarkan kemungkinan untuk menciptakan indikator khusus. Custom Indicator adalah program aplikasi yang dikodekan dalam MQL4 pada dasarnya ditujukan untuk tampilan grafis dari dependensi yang dihitung sebelumnya. Struktur Indikator Kustom Kebutuhan Buffer Prinsip utama yang mendasari indikator khusus adalah melewatkan nilai dari rangkaian indikator ke terminal klien (untuk menggambar garis indikator) melalui buffer pertukaran. Buffer adalah area memori yang berisi nilai numerik dari deretan indikator. Standar MQL4 menyiratkan kemungkinan menggambar hingga delapan garis indikator menggunakan satu indikator khusus. Satu indikator array dan satu buffer dibawa ke korespondensi dengan setiap garis indikator. Setiap buffer memiliki indeks tersendiri. Indeks buffer pertama adalah 0, dari yang kedua - 1, dan seterusnya, yang terakhir memiliki indeks 7. Gambar. 115 menunjukkan bagaimana informasi dari indikator khusus dilewatkan melalui buffer ke terminal klien untuk menggambar garis indikator. Ara. 115. Melewati nilai dari array indikator melalui penyangga ke terminal klien. Urutan umum dari garis indikator bangunan adalah sebagai berikut: 1. Perhitungan dilakukan dalam indikator khusus karena nilai numerik diberikan ke elemen indikator. 2. Nilai elemen array indikator dikirim ke terminal klien melalui buffer. 3. Pada basis nilai array yang diterima dari buffer, terminal klien menampilkan garis indikator. Komponen dari Indikator Kustom Mari menganalisa indikator kebiasaan sederhana yang menunjukkan dua baris - satu baris disusun berdasarkan harga bar maksimal, yang kedua menggunakan harga minimal. Contoh indikator penggunaindikator sederhana sederhana. mq4 Mari kita analisa secara rinci bagian indikator. Dalam program aplikasi apa pun yang ditulis di MQL4 Anda dapat menunjukkan parameter penyiapan yang menyediakan layanan program yang benar oleh terminal klien. Dalam contoh ini bagian program kepala (lihat Struktur Program) berisi beberapa baris dengan properti arahan. Petunjuk pertama menunjukkan di jendela mana terminal klien harus menggambar garis indikator: Di MQL4 ada dua varian garis indikator gambar: di jendela keamanan utama dan di jendela terpisah. Jendela utama adalah jendela yang berisi bagan keamanan. Dalam contoh ini indikator parameterchartwindow di direktori properti menunjukkan bahwa terminal klien harus menggambar garis indikator di jendela utama. Baris berikutnya menunjukkan jumlah buffer yang digunakan dalam indikator: Dalam contoh yang dianalisis, dua garis indikator digambar. Satu buffer ditugaskan ke setiap buffer, jadi jumlah buffer adalah dua. Baris berikutnya menggambarkan warna garis indikator. Parameter indikatorcolor1 dan indicatorcolor2 menentukan pengaturan warna untuk buffer yang sesuai - dalam hal ini untuk buffer dengan indeks 0 (Biru) dan 1 (Merah). Perhatikan bahwa angka pada parameter nama indicatorcolor1 dan indicatorcolor2 bukan indeks buffer. Angka-angka ini adalah bagian dari nama konstan yang ditetapkan sesuai dengan buffer. Untuk setiap warna konstan dapat ditetapkan berdasarkan kebijaksanaan pengguna. Di baris berikutnya, susunan indikator dideklarasikan: Indikator ini dimaksudkan untuk menggambar dua garis indikator, jadi kita perlu mendeklarasikan dua array satu dimensi global, satu untuk setiap baris. Nama rangkaian indikator terserah pengguna. Dalam kasus ini nama array Buf0 dan Buf1 digunakan, dalam kasus lain nama lain dapat digunakan, misalnya, Line1, Alfa, Integral dll. Perlu untuk mendeklarasikan array pada tingkat global, karena elemen array nilai harus dipertahankan antara panggilan Dari start fungsi khusus (). Indikator khusus yang dijelaskan dibangun berdasarkan dua fungsi khusus - init () dan start (). Fungsi init () berisi bagian kode yang digunakan pada program hanya sekali (lihat fungsi khusus). Tindakan yang sangat penting dilakukan di garis: Dengan menggunakan fungsi SetIndexBuffer () buffer yang diperlukan (dalam kasus ini dengan indeks 0) dimasukkan ke dalam korespondensi dengan array (dalam hal ini Buf0). Ini berarti untuk membangun garis indikator pertama, sebuah terminal klien akan menerima data yang terdapat dalam array Buf0 menggunakan buffer nol untuk itu. Selanjutnya gaya garis didefinisikan: Untuk buffer nol (0) terminal klien harus menggunakan gaya gambar berikut: garis sederhana (DRAWLINE), garis padat (STYLESOLID), lebar garis 2. Dua baris berikutnya berisi pengaturan untuk baris kedua. : Jadi, sesuai dengan kode init fungsi khusus () kedua garis indikator akan digambar di jendela keamanan utama. Yang pertama akan menjadi garis biru solid dengan lebar 2, yang kedua adalah garis putus-putus merah (STYLEDOT) dengan lebar yang biasa. Garis indikator juga bisa digambar dengan gaya lain (lihat Styles of Indicator Lines). Menghitung Nilai Unsur Array Indikator (Be Attentive) Nilai elemen array indikator dihitung pada start fungsi khusus (). Untuk memahami dengan benar isi kode start () memperhatikan urutan pengindeksan batang. Array bagian menjelaskan secara rinci metode pengindeksan array-timeseries. Menurut metode bar indexing ini dimulai dari nol. Bilah nol adalah bilah yang belum terbentuk saat ini. Indeks bar terdekat adalah 1. Yang berikutnya adalah 2 dan seterusnya. Saat bar baru muncul di jendela keamanan, indeks bar yang sudah terbentuk (history) diubah. Bar baru (saat ini, hanya terbentuk, paling kanan) mendapatkan indeks nol, yang ke kiri dia (yang baru saja terbentuk) mendapatkan indeks 1 dan nilai indeks dari semua bar historis juga meningkat satu. Metode yang dijelaskan dari bar pengindeksan adalah satu-satunya yang mungkin bagi keseluruhan sistem perdagangan MetaTrader secara online, dan ini diperhitungkan saat menggambar garis dengan menggunakan indikator teknis dan indikator khusus. Dikatakan sebelumnya bahwa garis indikator dibangun berdasarkan informasi numerik yang terdapat dalam rangkaian indikator. Array indikator berisi informasi tentang koordinat titik di mana garis indikator digambar. Dan koordinat Y dari setiap titik adalah nilai elemen array indikator. Dan koordinat X adalah nilai indeks elemen indikator indikator. Dalam contoh yang dianalisis, garis indikator pertama digambar menggunakan nilai maksimal bar. Gambar 116 menunjukkan garis indikator ini (warna biru) di jendela keamanan, dibangun berdasarkan deret indikator Buf0. Ara. 116. Korespondensi koordinat garis indikator terhadap nilai-nilai dari deret indikator. Nilai indeks dari array indikator keluar oleh terminal klien ke korespondensi dengan indeks batang - nilai indeks ini sama. Harus juga diperhitungkan bahwa proses membangun garis indikator berjalan dalam mode real time dalam kondisi ketika di jendela keamanan bar baru muncul dari waktu ke waktu. Dan semua bar sejarah digeser ke kiri. Agar garis indikator ditarik dengan benar (setiap baris di atas bilahnya), garis itu juga harus digeser bersama dengan batang. Jadi ada kebutuhan (technical need) untuk mengindeks ulang sebuah indikator array. Perbedaan mendasar dari array indikator dari array yang biasa adalah sebagai berikut: Pada saat sebuah bar baru dibuat, nilai indeks elemen array indikator secara otomatis diubah oleh terminal klien, yaitu - nilai setiap indeks array indikator meningkat sebesar Satu dan ukuran array indikator ditingkatkan dengan satu elemen (dengan indeks nol). Misalnya, nol pada Gambar. 116 (timeframe H1) memiliki waktu pembukaan 6:00. Pukul 7:00 bar baru akan muncul di jendela keamanan. Bar yang dibuka pada pukul 6:00 akan otomatis mendapatkan indeks 1. Agar garis indikator ditarik dengan benar di bar ini, terminal klien akan mengubah indeks elemen array indikator yang sesuai dengan bilah yang dibuka pada pukul 6:00. Dalam tabel pada Gambar. 116 elemen ini ditulis di baris pertama. Bersama dengan indeks dari semua elemen array akan ditingkatkan oleh terminal klien satu per satu. Sebuah indeks dari elemen array yang sesuai dengan bar yang dibuka pada pukul 6:00 akan mendapatkan nilai 1 (sebelum nilainya sama dengan 0). Array indikator akan menjadi lebih besar dengan satu elemen. Indeks elemen tambahan yang baru akan sama dengan 0, nilai elemen ini akan menjadi nilai baru yang mencerminkan koordinat garis indikator pada nol bar. Nilai ini dihitung pada fungsi khusus start () pada setiap tick. Perhitungan dalam start fungsi khusus () harus dilakukan agar tidak ada tindakan ekstra yang dilakukan. Sebelum indikator dilekatkan pada bagan, indikator indikator tidak mencerminkan garis indikator (karena nilai dari rangkaian indikator belum ditentukan). Itulah mengapa pada awal pertama dari start fungsi khusus () nilai array indikator harus dihitung untuk semua batang, di mana garis indikator harus digambar. Dalam contoh yang dianalisis, semua ini ada pada tabel (perhitungan awal dapat dilakukan bukan untuk semua bar yang tersedia, namun untuk beberapa bagian terakhir dari sejarah, hal itu dijelaskan dalam contoh lebih lanjut). Ar semua mulai lebih awal dari fungsi khusus start () tidak perlu menghitung nilai dari indikator array untuk semua bar lagi. Nilai ini sudah dihitung dan terkandung di dalam indikator array. Hal ini diperlukan untuk menghitung nilai saat ini dari garis indikator hanya pada setiap tick baru dari nol bar. Untuk implementasi teknologi yang dijelaskan ada fungsi standar yang sangat berguna di MQL4 - IndicatorCounted (). Function IndicatorCounted () Fungsi ini mengembalikan jumlah bar yang belum berubah sejak call indicator terakhir. Jika indikator tidak pernah dilampirkan pada grafik, pada awal pertama () eksekusi nilai Countedbars akan sama dengan nol: Ini berarti rangkaian indikator tidak mengandung elemen dengan nilai yang telah ditentukan sebelumnya, oleh karena itu keseluruhan indikator array Harus dihitung dari awal sampai akhir. Array indikator dihitung dari bar tertua ke nol. Indeks bar tertua, mulai dari mana perhitungan harus dimulai, dihitung dengan cara berikut: Misalkan pada saat melampirkan indikator ada 300 bar di jendela grafik. Ini adalah nilai dari variabel bar yang telah ditentukan. Seperti yang didefinisikan sebelumnya, Countedbars sama dengan 0. Jadi, sebagai hasilnya kita mendapatkan bahwa indeks i dari bar yang tidak terhitung pertama (yang terbaru, mulai dari perhitungan yang harus dilakukan) adalah sama dengan 299. Semua nilai elemen array indikator adalah Dihitung dalam loop sementara (): Sementara saya berada dalam kisaran dari bar pertama yang tidak terhitung (299) ke yang sekarang (0) secara inklusif, nilai elemen indikator array dihitung untuk kedua garis indikator. Perhatikan, nilai elemen indikator array yang hilang dihitung selama satu (awal) start dari start fungsi khusus (). Selama perhitungan terminal klien mengingat elemen, yang nilainya dihitung. Iterasi terakhir pada while () dilakukan ketika saya sama dengan 0, yaitu nilai dari array indikator dihitung untuk nol bar. Saat loop selesai, fungsi khusus start () selesai eksekusi dan kontrol dilewatkan ke terminal klien. Terminal klien pada gilirannya akan menarik semua (dalam hal ini dua) garis indikator sesuai dengan nilai elemen array yang dihitung. Pada start centang berikutnya () akan dimulai oleh terminal klien lagi. Tindakan lebih lanjut akan tergantung pada situasi (kami akan terus menganalisis contoh untuk 300 bar). Varian 1. Kutu baru datang saat pembentukan bar nol saat ini (situasi yang paling umum). Ara. 117 menunjukkan dua kutu yang diterima terminal pada saat waktu t 1 dan t 2. Situasi dianalisis akan sama untuk kedua kutu. Lets trace eksekusi start () yang diluncurkan pada saat t 2. Selama eksekusi fungsi start () baris berikut akan dijalankan: IndicatorCounted () akan mengembalikan nilai 299, yaitu sejak last start () call 299 bar sebelumnya tidak berubah. Akibatnya, nilai indeks saya akan sama dengan 0 (300-299-1): Artinya pada saat berikutnya () lepaskan nilai elemen array dengan indeks nol akan dihitung. Dengan kata lain, posisi baru garis indikator pada nol bar akan dihitung. Saat siklus selesai, start () akan berhenti mengeksekusi dan akan melewati kontrol ke terminal klien. Varian 2. Kutu baru adalah tick pertama dari nol bar (terjadi dari waktu ke waktu). Dalam hal ini, fakta munculnya bar baru penting. Sebelum kontrol dilewatkan ke start fungsi khusus (), terminal klien akan menarik kembali semua bar yang ada di jendela keamanan dan mengindeks ulang semua rangkaian indikator yang dinyatakan (diatur dalam korespondensi dengan buffer). Selain itu, terminal klien akan mengingat bahwa sudah ada 301 bar, tidak 300 di jendela grafik. Ara. 118 berisi situasi ketika pada tick terakhir dari bar sebelumnya (pada saat t 2) fungsi start () berhasil dijalankan dan dijalankan. Itu sebabnya, meski saat ini bar pertama (dengan indeks 1) selesai pada saat t 2 dihitung oleh indikator, function IndicatorCounted () akan mengembalikan nilai yang ada di bar sebelumnya. Yaitu 299: Pada indeks baris berikutnya saya akan dihitung, dalam kasus ini untuk tick pertama dari bar baru maka akan sama dengan 1 (301-299-1): Ini berarti perhitungan nilai array indikator pada while () loop Pada tampilan bar baru akan dilakukan kedua untuk bar terakhir dan untuk new bar nol. Sedikit sebelumnya saat indeksasi ulang indikator array, terminal klien meningkatkan ukuran array ini. Nilai elemen array dengan indeks nol tidak didefinisikan sebelum perhitungan dalam loop. Selama perhitungan dalam lingkaran elemen-elemen ini mendapatkan beberapa nilai. Saat perhitungan di awal () selesai, kontrol dikembalikan ke terminal klien. Setelah itu terminal klien akan menggambar garis indikator pada nol bar berdasarkan hanya nilai-nilai yang dihitung elemen array dengan indeks nol. Varian 3. Kutu baru adalah tick pertama dari nol bar baru, tapi yang terakhir tapi satu centang tidak diproses (kasus langka). Ara. 119 menunjukkan situasi saat start () diluncurkan pada tick pertama bar baru saat t 5. Waktu sebelumnya fungsi ini dimulai pada saat t 2. Tick yang datang ke terminal saat t 3 (panah merah ) Tidak diproses oleh indikator. Hal ini terjadi karena start () waktu eksekusi t 2 - t 4 lebih besar dari interval antara ticks t 2 - t 3. Fakta ini akan terdeteksi oleh client terminal saat eksekusi start () diluncurkan pada saat t 5. Selama Perhitungan di garis: IndicatorCounted () akan mengembalikan nilai 299 (). Nilai ini benar - dari saat panggilan indikator terakhir 299 bar tidak berubah setelah (sekarang sudah) 301. Karena itulah indeks yang dihitung dari bar (paling kiri) pertama, dari mana perhitungan nilai elemen array harus dimulai, Akan sama dengan 1 (301-299-1): artinya selama while () eksekusi dua iterasi akan dilakukan. Selama nilai pertama elemen array dengan indeks i 1 akan dihitung, yaitu Buf01 dan Buf11. Tidak, pada saat mulai perhitungan, batang dan rangkaian indikator sudah diindeks ulang oleh terminal klien (karena sebuah bar baru dimulai, antara mulai start fungsi khusus ()). Itulah sebabnya perhitungan untuk elemen array dengan indeks 1 akan dihitung berdasarkan time-array (nilai maksimal dan minimal dari harga bar) juga dengan indeks 1: Selama iterasi kedua sementara () nilai untuk elemen dengan nol Indeks, yaitu untuk nol bar, dihitung berdasarkan nilai terakhir yang terakhir dari array-timeseries. Penggunaan teknologi yang dijelaskan untuk perhitungan indikator khusus memungkinkan, pertama, untuk menjamin perhitungan nilai dari semua elemen pelaksana indikator terlepas dari sifat spesifik dari riwayat tick, dan kedua, untuk melakukan perhitungan hanya untuk bar yang tidak terhitung jumlahnya, yaitu menggunakan sumber daya yang menghitung secara ekonomi . Tidak, sebuah bar dianggap tidak terhitung jika perhitungan nilai elemen dari rangkaian indikator setidaknya untuk satu tick terakhir dari bar tidak dilakukan. Memulai indikator kustom userindicator. mq4 di jendela grafik Anda akan melihat dua garis - garis biru tebal yang dibangun di atas maksimum bar dan garis merah bertitik yang dibangun di atas minimumnya (Gambar 120). Perlu dicatat, bahwa seseorang dapat membuat indikator khusus, garis indikator yang akan bertepatan dengan garis indikator teknis analog. Hal ini dapat dengan mudah dilakukan jika sebagai formula perhitungan pada indikator custom, rumus yang sama seperti pada indikator teknis yang digunakan. Untuk mengilustrasikan ini, mari kita memperbaiki kode program yang dianalisis pada contoh sebelumnya. Biarkan indikator menarik garis pada nilai rata-rata maksimum dan minimum beberapa baris terakhir. Mudah untuk melakukan perhitungan yang diperlukan: kita hanya perlu mencari nilai rata-rata elemen array-timeseries. Sebagai contoh, nilai dari sebuah indikator array dengan indeks 3 (yaitu koordinat indikator untuk bar ketiga) berdasarkan lima maksimum terakhir dihitung dengan cara berikut: Buf03 (High3 High4 High5 High6 High7) 5 Perhitungan analog dapat dilakukan. Untuk garis indikator yang dibangun di atas minimum. Contoh indikator kustom sederhana averagevalue. mq4. Garis indikator dibangun berdasarkan nilai minimal dan maksimal N bar yang rata-rata. Dalam contoh ini ada variabel eksternal AverBars. Dengan menggunakan variabel ini, pengguna dapat menunjukkan jumlah batang, yang nilainya rata-rata dihitung. Di awal () nilai ini digunakan untuk perhitungan nilai rata-rata. Dalam lingkaran untuk jumlah nilai maksimal dan minimal dihitung untuk jumlah bar yang sesuai dengan nilai variabel AverBars. Pada dua baris program berikutnya, nilai elemen array indikator dihitung untuk garis indikator yang sesuai dengan nilai minimal dan maksimal. Metode rata-rata yang digunakan di sini juga diterapkan untuk perhitungan indikator teknis Moving Average. Jika kita melampirkan indikator khusus yang dianalisis averagevalue. mq4 dan indikator teknis Moving Average, kita akan melihat tiga garis indikator. Jika periode rata-rata yang sama ditetapkan untuk kedua indikator, garis Moving Average akan bertepatan dengan salah satu garis indikator khusus (untuk parameter tujuan ini yang dijelaskan pada Gambar 121 harus ditentukan dalam pengaturan indikator teknis). Ara. 121. Garis coincident dari indikator teknis dan indikator khusus (garis merah). Dengan demikian, dengan menggunakan indikator teknis, pengguna dapat membangun refleksi dari setiap keteraturan yang diperlukan dalam kerja praktek. Indikator Indikator Gambar Indikator Kustom pada Windows MQL4 Terpisah menawarkan layanan besar untuk membangun indikator khusus yang membuat penggunaannya sangat nyaman. Secara khusus, garis indikator dapat ditarik di jendela terpisah. Ini nyaman bila nilai absolut dari amplitudo garis indikator secara substansial lebih kecil (atau lebih besar) daripada harga keamanan. Misalnya, jika kita tertarik pada perbedaan antara nilai rata-rata maksimum bar dan minimum dalam interval historis tertentu, tergantung pada jangka waktu, nilai ini akan sama dengan kira-kira dari 0 sampai 50 poin (misalnya untuk M15). Tidak sulit untuk membangun garis indikator, namun di jendela keamanan, garis ini akan ditarik dalam kisaran 0 - 50 poin dari harga keamanan, yaitu jauh lebih rendah dari area grafik yang tercermin di layar. Ini sangat merepotkan. Untuk menggambar garis indikator di jendela terpisah (yang ada di bagian bawah jendela keamanan), di properti petunjuk (di awal program) indikator parameter harus dipastikan: Pada saat indikator seperti itu terpasang pada jendela keamanan , Terminal klien membuat jendela terpisah di bawah grafik, di mana garis indikator yang dihitung dalam indikator akan ditarik. Bergantung pada pengaturan warna dan jenis garis indikator, mereka akan tertarik dengan gaya ini atau itu. Membatasi Perhitungan Sejarah Biasanya, garis indikator hanya berisi informasi berguna dalam sejarah terkini. Bagian garis indikator yang dibangun di atas balok tua (misalnya, kerangka waktu 1 bulan lama) hampir tidak dapat dianggap berguna untuk membuat keputusan perdagangan. Selain itu, jika ada banyak bar di jendela grafik, waktu yang diinvestasikan ke dalam perhitungan dan gambar garis indikator tidak masuk akal besar. Ini mungkin sangat penting dalam debugging program, bila sebuah program sering dikompilasi dan kemudian dimulai. Itulah sebabnya mengapa perlu melakukan perhitungan bukan untuk keseluruhan sejarah, tapi untuk bagian terbatas dari sejarah bar yang paling baru. Untuk tujuan ini, sebuah riwayat variabel eksternal digunakan dalam program berikut. Nilai variabel ini diperhitungkan saat menghitung indeks bar pertama (paling kiri), mulai dari elemen-elemen rangkaian indikator harus dihitung. Perhitungan lebih lanjut dalam while () loop akan dilakukan untuk jumlah bar sejarah terkini yang tidak lebih besar dari nilai History. Perhatikan, metode yang dianalisis untuk membatasi sejarah perhitungan hanya menyangkut bagian perhitungan yang dilakukan pada awal pertama dari start fungsi khusus (). Selanjutnya, ketika bar baru muncul, bagian baru dari garis indikator akan ditambahkan di bagian kanan, sedangkan gambar di bagian kiri akan dipertahankan. Dengan demikian panjang garis indikator akan meningkat selama seluruh waktu operasi indikator. Nilai parameter historis yang umum dianggap sekitar 5000 batang. Contoh indikator kustom sederhana separatewindow. mq4. Garis indikator digambar di jendela terpisah. Perhitungan garis indikator serupa dilakukan pada indikator teknis AverageTrue Range. Ara. 122 menunjukkan garis indikator yang dibangun oleh indikator khusus separatewindow. mq4 di jendela terpisah dan garis indikator yang dibangun oleh ATR di jendela lain. Dalam hal ini garis identik sepenuhnya karena periode rata-rata sama untuk kedua indikator - 5. Jika parameter ini berubah pada salah satu indikator, indikator yang sesuai juga akan berubah. Ara. 122. menggambar garis indikator khusus di jendela terpisah. Garis indikator teknis yang identik (ATR) dan indikator khusus (separatewindow. mq4). Juga terbukti bahwa garis indikator khusus tidak dibangun untuk seluruh lebar layar, namun untuk 50 bar terbaru sebagaimana ditentukan dalam variabel eksternal History. Jika seorang trader perlu menggunakan interval sejarah yang lebih besar, nilai variabel eksternal dapat dengan mudah diubah melalui jendela pengaturan indikator kustom. Ara. 123 menunjukkan jendela keamanan, di mana garis indikator kami digambar dengan gaya lain - sebagai histogram. Untuk mendapatkan hasil seperti itu, satu baris diubah dalam kode program separatewindow. mq4 - gaya garis lainnya ditunjukkan: Semua komponen kode lainnya tidak berubah. Ara. 123. Menggambar garis indikator khusus di jendela terpisah (histogram). Kesamaan gambar indikator teknis (ATR) dan indikator khusus (separatewindow. mq4). Pergeseran Garis Indikator Vertikal dan Horisontal Dalam beberapa kasus perlu untuk menggeser garis indikator. Hal ini dapat dengan mudah dilakukan dengan cara MQL4. Mari kita menganalisa sebuah contoh, di mana posisi garis indikator di jendela keamanan dihitung sesuai dengan nilai yang ditentukan oleh pengguna. Contoh pemindahan indikator ubahsuaian. mq4. Pergeseran garis indikator secara horisontal dan vertikal. Untuk menyesuaikan garis bergeser dalam bagan, ada dua variabel eksternal - LeftRight untuk pergeseran horisontal semua garis dan UpDown untuk menggeser dua garis titik-titik secara vertikal. Algoritma yang digunakan untuk menghitung nilai elemen array yang sesuai didasarkan pada aturan yang sangat sederhana: untuk menggeser garis secara horizontal, menetapkan nilai yang dihitung ke elemen array, indeksnya lebih besar dengan LeftRight (untuk bergeser ke kanan dan kurang untuk bergeser Ke kanan) daripada indeks sebuah bar, yang perhitungannya dilakukan untuk menggeser garis secara vertikal, UpDownPoint harus ditambahkan (untuk menggeser ke atas atau terpengaruh untuk bergeser ke bawah) ke setiap nilai dari rangkaian indikator yang mencirikan posisi garis awal Dalam analisis Contoh indeks dihitung di baris: Di sini saya adalah indeks dari sebuah bar, yang perhitungannya dilakukan, k adalah indeks elemen array indikator. Garis indikator merah yang ditampilkan oleh terminal klien berdasarkan pada susunan indikator Line0 digeser ke kiri oleh 5 bar (sesuai pengaturan khusus, lihat Gambar 124) dari baris awal. Dalam hal ini garis awal adalah Moving Average dengan periode rata-rata sama dengan 5 rumus perhitungan MA yaitu (HighiLowi) 2. Pada contoh ini posisi garis merah merupakan dasar perhitungan nilai indikator array untuk dua baris lainnya, yaitu posisi mereka pada grafik. Garis putus-putus dihitung dengan cara ini: Penggunaan indeks k untuk elemen dari semua rangkaian indikator memungkinkan untuk melakukan perhitungan untuk elemen array Line1, Line2 pada bar yang sama seperti yang digunakan untuk menghitung nilai dari array dasar Baris0 yang sesuai. Akibatnya garis putus-putus bergeser relatif terhadap garis merah dengan nilai yang ditentukan di jendela pengaturan indikator, dalam hal ini dengan 30 titik (Gambar 124). Ara. 124. Garis indikator merah digeser ke kiri oleh 5 bar. Garis indikator bertitik bergeser relatif terhadap garis merah sebesar 30 titik. Keterbatasan Indikator Kustom Ada beberapa keterbatasan dalam MQL4 yang harus diperhitungkan dalam pemrograman indikator khusus. Ada sekelompok fungsi yang hanya dapat digunakan dalam indikator khusus dan tidak dapat digunakan di Expert Advisors dan skrip: IndicatorBuffers (), IndicatorCounted (), IndicatorDigits (), IndicatorShortName (), SetIndexArrow (), SetIndexBuffer (), SetIndexDrawBegin ( ), SetIndexEmptyValue (), SetIndexLabel (), SetIndexShift (), SetIndexStyle (), SetLevelStyle (), SetLevelValue (). Di sisi lain, fungsi perdagangan tidak dapat digunakan dalam indikator: OrderSend (), OrderClose (), OrderCloseBy (), OrderDelete () dan OrderModify (). Hal ini karena indikator beroperasi pada arus antarmuka (berbeda dari Expert Advisors dan skrip yang beroperasi sesuai alirannya sendiri). Ini juga mengapa algoritma berdasarkan perulangan tidak dapat digunakan dalam indikator khusus. Mulai dari indikator khusus yang berisi lingkaran tak berujung (dalam hal waktu pelaksanaan aktual) dapat mengakibatkan terminal klien ditutup dengan kebutuhan lebih lanjut untuk menyalakan ulang komputer. Karakteristik komparatif umum Expert Advisors, skrip dan indikator terdapat pada Tabel 2.

No comments:

Post a Comment