Saturday 26 August 2017

Kode indikator rata rata mql4 moving average


MetaTrader 4 - Indikator Moving Averages, indikator MA untuk MetaTrader 4 Indikator Teknis Bergerak Rata-rata menunjukkan nilai rata-rata harga instrumen untuk jangka waktu tertentu. Ketika seseorang menghitung rata-rata bergerak, satu rata-rata mengeluarkan harga instrumen untuk jangka waktu ini. Seiring perubahan harga, rata-rata pergerakannya meningkat, atau menurun. Ada empat jenis moving averages yang berbeda: Simple (juga disebut Aritmatika), Exponential, Smoothed dan Linear Weighted. Moving averages 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 double moving averages 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 rata-rata pergerakan sederhana, semua harga periode waktu yang dimaksud, sama nilainya. Exponential dan Linear Weighted Moving Averages 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 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. 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 (TUTUP, N) N Dimana: N adalah jumlah periode perhitungan. Exponential Moving Average (EMA) Rata-rata pergerakan yang dipercepat secara eksponensial dihitung dengan menambahkan rata-rata pergerakan dari bagian tertentu dari harga penutupan saat ini ke nilai sebelumnya. Dengan rata-rata bergerak rata-rata merata, harga terbaru lebih bernilai. P-percent exponential moving average akan terlihat seperti: Dimana: CLOSE (i) harga penutupan periode berjalan EMA (i-1) Secara eksponensial Moving Average dari periode sebelumnya penutupan P persentase penggunaan nilai harga. Rata-rata Berputar Berputar (SMMA) Nilai pertama dari rata-rata bergerak merapikan ini dihitung sebagai rata-rata bergerak sederhana: SUM1 SUM (CLOSE, N) Rata-rata bergerak kedua dan yang berhasil dihitung sesuai dengan rumus ini: Dimana: SUM1 adalah Jumlah total harga penutupan untuk periode N SMMA1 adalah rata-rata pergerakan smoothing dari batang pertama SMMA (i) adalah rata-rata bergerak rata dari bar saat ini (kecuali yang pertama) TUTUP (i) adalah harga penutupan saat ini N adalah Periode smoothing Rata-rata Bergerak Berbobot Linier (LWMA) Dalam kasus rata-rata tertimbang bergerak, data terakhir lebih bernilai daripada data awal lainnya. Rata-rata pergerakan 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) Dimana: SUM (i, N) adalah jumlah total koefisien bobot. 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 Average Moving Average (EMA) Smoothed Moving Average (SMMA) Rata-rata Bergerak Rata-rata Terukur (LWMA) Penciptaan Indikator Kustom Ketika membuat strategi trading, pengembang sering menghadapi Kebutuhan untuk menggambar secara grafis di jendela keamanan merupakan ketergantungan tertentu yang dihitung oleh pengguna (programmer). 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 memberikan 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 garis - 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 nilai elemen array harus dipertahankan antara panggilan Dari start fungsi khusus (). Indikator khusus yang dijelaskan dibangun berdasarkan dua fungsi khusus - di dalamnya () dan mulai (). 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 (sekarang, baru terbentuk, paling kanan) mendapatkan indeks nol, yang ke kiri dia (yang baru saja terbentuk) mendapatkan indeks 1 dan nilai indeks semua bar sejarah juga meningkat satu. Metode yang dijelaskan dari bar pengindeksan adalah satu-satunya yang mungkin dilakukan untuk 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 untuk 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 (masing-masing garis di atas bilahnya) maka harus juga 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 dituliskan 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 bar hadir pada bagan (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 lingkaran sementara (): Sementara saya berada dalam kisaran dari bar yang tidak terhitung pertama (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 pertama) 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 saat ini 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 selama pengindeksian 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 dari 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 pada 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 membuat 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 lebih mudah 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. Hal ini sangat merepotkan. Untuk menarik 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 bar. 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. Jumlah Indikator Teknis Menurut sistem perdagangan on-line MetaTrader 4 ada dua jenis indikator dalam MQL4 - teknis dan kebiasaan. Indikator teknis merupakan bagian integral dari sistem perdagangan on-line MetaTrader, fungsi built-in yang memungkinkan gambar di layar menjadi ketergantungan tertentu. Properti Indikator Teknis Menggambar di Jendela Keamanan Setiap indikator teknis menghitung ketergantungan yang telah ditentukan sebelumnya. Untuk menarik ketergantungan ini secara grafis di layar, indikator teknis harus disertakan dalam bagan. Hal ini bisa dilakukan melalui menu sistem Insert gtgt Indicators atau via jendela Navigator dari terminal klien. Untuk melampirkan indikator teknis ke diagram dari jendela Navigator, sebuah metode yang sangat sederhana digunakan - drag-amp-drop dari nama indikator teknis dari jendela Navigator ke jendela grafik. Akibatnya satu atau beberapa baris yang dihitung dalam indikator ini akan muncul di jendela grafik. Indikator garis indikator teknis dapat ditarik baik di jendela utama dan di jendela terpisah di bagian bawah jendela keamanan. Pada Gambar. 104 indikator teknis Alligator digambar di jendela grafik. Kode Unchangeability Semua indikator teknis sudah ada, kode mereka tidak tersedia untuk melakukan modifikasi. Jadi pengguna diamankan dari modifikasi indikator teknis built-in yang salah. Namun, kode sumber, yang menjadi indikator teknisnya, tersedia di situs pengembang perangkat lunak (MetaQuotes Software Corp.) di bagian Indikator Teknis. Jika diperlukan, pemrogram dapat menggunakan kode lengkap atau sebagian untuk membuat indikator khusus (lihat Pembuatan Indikator Khusus). Memanggil Fungsi Indikator Teknis Representasi grafis yang terlihat oleh pengguna ditampilkan oleh terminal klien. Selanjutnya untuk kenyamanan kita akan memanggil garis indikator gambar seperti itu. Indicator Line adalah tampilan grafis dari ketergantungan tertentu berdasarkan nilai numerik yang termasuk dalam rangkaian indikator. Jenis baris indikator diatur oleh pengguna. Garis indikator dapat ditampilkan dalam bentuk garis padat atau putus-putus, dengan warna tertentu, dan juga dalam bentuk rantai tanda-tanda tertentu (titik, kotak, cincin, dll.). Selama perhitungan indikator, set nilai numerik dihitung di dalamnya garis indikator akan digambar sesuai dengan perhitungan ini. Set nilai ini disimpan dalam rangkaian indikator. Indikator Array adalah array satu dimensi yang berisi nilai numerik, sesuai dengan garis indikator yang dibangun. Nilai numerik elemen larik indikator adalah koordinat titik, di mana garis indikator digambar. Koordinat Y dari setiap titik adalah nilai elemen array indikator, koordinat X adalah nilai indeks elemen array indikator. Teknologi penyimpanan data dalam rangkaian indikator adalah dasar penyusunan indikator teknis dan kustom. Nilai elemen indikator indikator indikator teknis tersedia dari semua program aplikasi, termasuk Expert Advisors, skrip dan indikator khusus. Untuk mendapatkan nilai elemen array indikator dengan indeks tertentu dalam program aplikasi, Anda perlu memanggil fungsi built-in, yang namanya sesuai dengan nama indikator teknis. Untuk pelaksanaan fungsi indikator teknis, indikator yang sesuai tidak harus disertakan pada jendela keamanan. Juga fungsi panggilan indikator teknis dari program aplikasi tidak mengarah pada lampiran indikator yang sesuai ke jendela keamanan. Lampiran indikator teknis ke jendela keamanan juga tidak mengakibatkan adanya panggilan indikator teknis dalam program aplikasi. Sejumlah indikator teknis disertakan ke dalam terminal klien sistem perdagangan on-line MetaTrader 4. Mari kita analisa beberapa di antaranya. Moving Average, MA Indikator Teknis Moving Average, MA menunjukkan nilai rata-rata harga instrumen untuk jangka waktu tertentu. Indikator tersebut mencerminkan tren pasar secara umum - dapat meningkatkan, menurunkan atau menunjukkan beberapa fluktuasi di dekat beberapa harga. Untuk mendapatkan nilai garis indikator MA pada saat tertentu, gunakan fungsi standar: simbol - simbol nama keamanan, pada data indikator mana yang akan dihitung. NULL berarti simbol saat ini. Jangka waktu - periode. Bisa menjadi salah satu periode bagan. 0 berarti periode grafik saat ini. Periode periode rata-rata untuk perhitungan MA. Mashift - indikator bergeser relatif terhadap grafik harga. Mamethod - metode rata-rata. Bisa menjadi salah satu nilai metode MA. Harga berlaku - harga yang digunakan Bisa jadi ada harga konstan. Indeks pergeseran nilai yang diperoleh dari rangkaian indikator (belok mundur relatif ke bar saat ini dengan jumlah bar tertentu). Berikut adalah contoh untuk memanggil fungsi indikator teknis dari Expert Advisor callindicator. mq4: Pada panggilan pemanggil EA callindicator. mq4 iMA () digunakan (fungsi indikator teknis Moving Average). Mari kita analisa bagian program ini secara rinci: NULL menunjukkan bahwa perhitungan rata-rata bergerak dilakukan untuk jendela keamanan, dimana EA dilampirkan (dalam hal ini EA, secara umum dapat berupa program aplikasi) 0 - itu adalah Dihitung untuk jangka waktu yang ditetapkan di jendela keamanan, dimana EA dilampirkan Periodma ​​- nilai periode rata-rata diatur dalam variabel eksternal jika setelah melampirkan EA ke jendela keamanan pengguna tidak mengubah nilai ini dalam pengaturan variabel eksternal EA , Nilainya sama dengan 5 0 - array indikator tidak bergeser relatif terhadap grafik, yaitu nilai elemen array indikator berisi nilai MA yang dihitung untuk bar, dimana garis indikator diambil MODESMA - metode rata-rata bergerak sederhana digunakan untuk Perhitungan PRICECLOSE - harga penutupan bar digunakan untuk perhitungan 0 - indikator elemen array indeks, yang nilainya diperoleh - dalam hal ini adalah elemen nol. Dengan mempertimbangkan bahwa rangkaian indikator tidak bergeser relatif terhadap grafik, nilai MA diperoleh untuk nol bar. Fungsi iMA () mengembalikan nilai yang diberikan ke variabel MA. Pada jalur program lebih lanjut, nilai ini dibandingkan dengan harga penawaran saat ini. Jika harga saat ini lebih tinggi atau lebih rendah dari nilai MA yang diperoleh, peringatan akan ditampilkan. Penggunaan variabel FactUp dan FactDn memungkinkan untuk menunjukkan peringatan hanya setelah penyeberangan pertama garis MA (catatan, garis indikator biru di jendela keamanan diambil bukan karena fungsi indikator teknis dipanggil dari program, namun karena pengguna telah memasangnya Indikator ke bagan, Gambar 104). Perlu dicatat di sini bahwa dengan munculnya indeks bar bar bar baru meningkat, bar yang saat ini terbentuk selalu memiliki indeks 0. Di Expert Advisor callindicator. mq4 fungsi indikator teknis iMA () mengembalikan nilai yang dihitung untuk nol bar. Meskipun nilai indeks tidak pernah berubah selama eksekusi EA (yaitu perhitungan selalu dilakukan untuk pada bar saat ini), nilai yang dikembalikan oleh iMA () akan selalu sesuai dengan perhitungan terakhir, yaitu dihitung untuk nol bar saat ini. Jika untuk beberapa perhitungan dalam program ini, kita perlu memperoleh nilai nilai indikator teknis bukan untuk baris saat ini, tapi untuk yang bersejarah, indeks array indikator yang diperlukan harus ditentukan dalam pemanggilan fungsi. Mari kita lihat contoh historybars EA. mq4. Di mana MA dihitung pada bar keempat: Dalam nilai-nilai EA historybars. mq4 MA dihitung untuk bar saat ini (indeks 0) dan untuk bar keempat (indeks 4). Indeks yang ditunjukkan 0 dan 4 tidak berubah selama operasi program ini dan program dapat beroperasi dalam waktu yang tidak terbatas setiap waktu untuk menghitung nilai MA untuk nol dan baris keempat. Ingat, meskipun perhitungan dibuat untuk MA pada bar dengan indeks yang sama, MA akan berubah, yaitu sesuai dengan nilai MA saat ini pada nol bar saat ini dan bar keempat saat ini. Pada Gambar. 106 jelas bahwa karena harga tumbuh di bar las, MA naik. Perbedaan antara nilai MA pada nol dan keempat bar juga tumbuh yang tercermin dalam alert yang ditampilkan. Indikator teknis mungkin tidak hanya mencerminkan satu, tetapi juga dua atau lebih garis indikator Indikator Teknis Stochastic Oscillator membandingkan harga penutupan saat ini dengan kisaran harga untuk periode waktu yang dipilih. Indikator biasanya ditunjukkan oleh dua garis indikator. Yang utama disebut K. Garis sinyal D kedua adalah rata-rata bergerak K. Biasanya K ditarik sebagai garis padat, D - putus. Menurut salah satu varian indikator penjelasan, kita harus membeli jika K lebih tinggi dari D dan sell jika K bergerak lebih rendah dari D. Saat yang paling menguntungkan untuk menjalankan operasi perdagangan dianggap sebagai momen penyebutan garis. Simbol simbol nama keamanan, pada data indikator mana yang akan dihitung. NULL berarti simbol saat ini. Jangka waktu - periode. Bisa menjadi salah satu periode bagan. 0 berarti periode grafik saat ini. Kperiod - periode (jumlah batang) untuk menghitung K. Dperiod - periode rata - rata penurunan nilai perlambatan. Metode - metode rata - rata. Bisa menjadi salah satu nilai metode MA. Harga - parameter pemilihan harga untuk perhitungan. Bisa menjadi salah satu dari nilai berikut: 0 - LowHigh atau 1 - CloseClose. Mode - indeks garis indikator. Dapat menjadi salah satu dari nilai berikut: MODEMAIN atau MODESIGNAL. Pergeseran indeks dari nilai yang diperoleh dari buffer indikator (geser kembali relatif ke bar saat ini dengan jumlah bar tertentu). Menggunakan Stochastic Oscillator menawarkan perlunya menganalisis posisi garis relatif. Untuk menghitung keputusan perdagangan apa yang harus dilakukan, nilai setiap baris pada bar saat ini dan sebelumnya harus diperhitungkan (lihat Gambar 107). Bila garis silang di titik A (garis hijau menyilang yang merah ke atas), order Sell harus ditutup dan order Beli harus dibuka. Selama bagian A - B (tidak ada garis persimpangan, garis hijau lebih tinggi dari garis merah) Order beli harus dipegang terbuka. Pada titik B (garis hijau menyilang yang merah ke bawah) Buy harus ditutup dan Sell harus dibuka. Kemudian Sell harus tetap buka sampai penyeberangan berikutnya (tidak ada penyeberangan, garis hijau di bawah garis merah). Ara. 107. Persamaan garis utama dan sinyal dari Stochastic Oscillator. Contoh berikut berisi implementasi algoritma sederhana yang menunjukkan bagaimana nilai yang diperlukan dari setiap baris dapat diperoleh dan kriteria trading dapat terbentuk. Untuk tujuan ini nilai fungsi indikator teknis iStochastic () digunakan dalam EA callstohastic. mq4: Untuk mendapatkan nilai garis K (solid green) pada nol bar, garis perhitungan berikut digunakan: Disini parameter MODEMAIN menunjukkan garis, nilai Yang diminta, parameter terakhir 0 adalah indeks batang, yang nilai garisnya harus dihitung. Pada tiga baris program berikut, variabel lain dihitung dengan analogi - untuk garis D (garis putus-putus merah, parameter MODESIGNAL) untuk nol dan bar pertama. Pada blok berikutnya, korelasi nilai yang diperoleh dianalisis dan laporan EA tentang keadaan saat ini pada setiap tanda centang. Misalnya, dalam garis: fakta garis merah yang disilangkan oleh yang hijau ke atas terdeteksi. Jika pada baris sebelumnya garis hijau berada di bawah garis merah (yaitu ekspresi M1 lt S1 benar), dan pada bar saat ini garis hijau naik di atas yang merah atau nilainya sama (yaitu ungkapan M0 gt S0 adalah Benar), itu berarti dari formasi bar sebelumnya sampai saat sekarang, satu-satunya yang hijau menyilangkan yang merah ke atas. Dengan demikian kondisi dihitung jika operator benar, oleh karena itu kontrol dilewatkan ke jika bodi operator, akibatnya Alert () dijalankan untuk menunjukkan pesan yang sesuai. Dalam Expert Advisor yang ditujukan untuk perdagangan jika badan operator berfungsi perdagangan untuk membuka order Beli harus ditunjukkan. Dalam hal ini varian yang dianalisis dari garis indikator persimpangan akan mengarah pada pembentukan order perdagangan dan, akhirnya, untuk pelaksanaan operasi perdagangan. Untuk varian saat garis hijau melintasi yang merah ke bawah, jika badan fungsi perdagangan untuk membuka order Sell harus ditunjukkan. Ara. 108 menunjukkan hasil operasi callstohastic. mq4. Menggunakan fungsi indikator teknis untuk membuat trading Expert Advisors dan skrip sangat mudah. Jumlah fungsi indikator teknis yang digunakan dalam satu Expert Advisor tidak terbatas. Seorang pengembang strategi perdagangan dapat memutuskan untuk menentukan kriteria perdagangan yang berbeda berdasarkan kombinasi nilai indikator teknis. Contoh Expert Expert trading sederhana, kriteria trading yang didasarkan pada indikator teknis, dianalisis di bagian Simple Expert Advisor.

No comments:

Post a Comment