Moving average sample code
MetaTrader 4 - Ahli Bergerak Rata-rata - pakar MetaTrader 4 Ahli Bergerak Rata-rata untuk membentuk sinyal perdagangan menggunakan satu moving average. Pembukaan dan penutupan posisi dilakukan saat rata-rata bergerak memenuhi harga pada bar yang baru terbentuk (indeks batang sama dengan 1). Ukuran lot akan dioptimalkan sesuai dengan algoritma khusus. Penasihat ahli menganalisis persetujuan rata-rata bergerak dan grafik harga pasar. Pemeriksaan dilakukan oleh fungsi CheckForOpen (). Jika moving average memenuhi bar sedemikian rupa sehingga yang pertama lebih tinggi dari harga Open tapi lebih rendah dari harga Close, posisi BUY akan dibuka. Jika moving average memenuhi bar sedemikian rupa sehingga yang pertama lebih rendah dari harga Open tapi lebih tinggi dari harga Close, maka posisi SELL akan dibuka. Manajemen Uang yang digunakan dalam expert sangat sederhana, namun efektif: kontrol atas setiap volume posisi dilakukan tergantung hasil transaksi sebelumnya. Algoritma ini diterapkan oleh fungsi LotsOptimized (). Ukuran lot dasar dihitung berdasarkan risiko maksimum yang diijinkan: Parameter MaximumRisk menampilkan persentase risiko dasar untuk setiap transaksi. Biasanya memiliki nilai antara 0,01 (1) dan 1 (100). Misalnya, jika margin bebas (AccountFreeMargin) sama dengan 20.500 dan aturan pengelolaan modal yang diresepkan untuk menggunakan risiko 2, ukuran lot dasar akan membuat 20500 0,02 1000 0,41. Hal ini sangat penting untuk mengontrol akurasi ukuran lot dan untuk menormalkan hasilnya dengan nilai yang diijinkan. Biasanya, banyak pecahan dengan langkah 0,1 diperbolehkan. Transaksi yang memiliki volume 0,41 tidak akan dilakukan. Untuk menormalkan, fungsi NormalizeDouble () digunakan dengan akurasi hingga 1 karakter setelah titik. Hal ini menghasilkan jumlah dasar 0,4. Perhitungan lot dasar berdasarkan margin bebas memungkinkan peningkatan volume operasi tergantung pada keberhasilan perdagangan, yaitu melakukan perdagangan dengan reinvestasi. Ini adalah mekanisme dasar pengelolaan modal wajib untuk meningkatkan efisiensi perdagangan. DecreaseFactor adalah sejauh mana ukuran lot akan berkurang setelah perdagangan tidak menguntungkan. Nilai normal adalah 2,3,4,5. Jika transaksi sebelumnya tidak menguntungkan, volume selanjutnya akan turun dengan faktor DecreaseFactor untuk menunggu periode yang tidak menguntungkan. Inilah faktor utama dalam algoritma pengelolaan modal. Idenya sangat sederhana: jika trading berhasil meningkat, ahli bekerja dengan lot dasar menghasilkan keuntungan maksimal. Setelah transaksi pertama yang tidak menguntungkan, ahli akan mengurangi kecepatan sampai terjadi transaksi positif baru. Algoritma ini memungkinkan untuk menonaktifkan pengurangan kecepatan, karena melakukannya, seseorang harus menentukan DecreaseFactor 0. Jumlah transaksi terakhir yang tidak menguntungkan dihitung dalam sejarah perdagangan. Banyak dasar akan dihitung ulang berdasarkan basis ini: Dengan demikian, algoritma memungkinkan untuk secara efektif mengurangi risiko yang terjadi sebagai akibat dari serangkaian transaksi yang tidak menguntungkan. Ukuran lot wajib diperiksa untuk ukuran lot minimum yang diijinkan pada akhir fungsi karena Perhitungan yang sebelumnya dibuat bisa menghasilkan banyak 0: Pakar terutama ditujukan untuk bekerja dengan periode harian, dan dalam mode pengujian - untuk melakukan dengan harga yang mendekati. Ini akan diperdagangkan hanya pada pembukaan bar baru, oleh karena itu mode pemodelan tick setiap tidak diperlukan. Hasil pengujian diwakili dalam report. Moving Average - MA BREAKING DOWN Moving Average - MA Sebagai contoh SMA, pertimbangkan keamanan dengan harga penutupan berikut selama 15 hari: Minggu 1 (5 hari) 20, 22, 24, 25, 23 Minggu 2 (5 hari) 26, 28, 26, 29, 27 Minggu 3 (5 hari) 28, 30, 27, 29, 28 MA 10 hari akan rata-rata menutup harga untuk 10 hari pertama sebagai data pertama. titik. Titik data berikutnya akan menurunkan harga paling awal, tambahkan harga pada hari ke 11 dan ambil rata-rata, dan seterusnya seperti yang ditunjukkan di bawah ini. Seperti disebutkan sebelumnya, MAs lag tindakan harga saat ini karena mereka didasarkan pada harga masa lalu semakin lama periode MA, semakin besar lag. Jadi MA 200 hari akan memiliki tingkat lag yang jauh lebih besar daripada MA 20 hari karena mengandung harga selama 200 hari terakhir. Panjang MA yang digunakan bergantung pada tujuan perdagangan, dengan MA yang lebih pendek digunakan untuk perdagangan jangka pendek dan MA jangka panjang lebih sesuai untuk investor jangka panjang. MA 200 hari banyak diikuti oleh investor dan pedagang, dengan tembusan di atas dan di bawah rata-rata pergerakan ini dianggap sebagai sinyal perdagangan penting. MA juga memberi sinyal perdagangan penting tersendiri, atau bila dua rata-rata melintas. MA yang sedang naik menunjukkan bahwa keamanan dalam tren naik. Sementara MA yang menurun menunjukkan bahwa tren turun. Begitu pula, momentum ke atas dikonfirmasi dengan crossover bullish. Yang terjadi ketika MA jangka pendek melintasi MA jangka panjang. Momentum turun dikonfirmasi dengan crossover bearish, yang terjadi ketika MA jangka pendek melintasi di bawah MA. I jangka panjang tahu ini dapat dicapai dengan dorongan sesuai: Tapi saya benar-benar ingin menghindari penggunaan dorongan. Saya telah googled dan tidak menemukan contoh yang sesuai atau mudah dibaca. Pada dasarnya saya ingin melacak rata-rata bergerak aliran arus dari sebuah angka floating point dengan menggunakan 1000 nomor terbaru sebagai sampel data. Apa cara termudah untuk mencapainya? Saya bereksperimen dengan menggunakan array melingkar, moving average eksponensial dan rata-rata bergerak yang lebih sederhana dan menemukan bahwa hasil dari array melingkar sesuai dengan kebutuhan saya yang terbaik. Tanya 12 Jun 12 at 4:38 Jika kebutuhan Anda sederhana, Anda mungkin hanya mencoba menggunakan rata-rata bergerak eksponensial. Sederhananya, Anda membuat variabel akumulator, dan saat kode Anda melihat setiap sampel, kode akan memperbarui akumulator dengan nilai baru. Anda memilih alpha konstan yaitu antara 0 dan 1, dan hitung ini: Anda hanya perlu menemukan nilai alfa dimana efek sampel tertentu hanya bertahan sekitar 1000 sampel. Hmm, saya tidak yakin ini cocok untuk anda, sekarang saya sudah meletakkannya disini. Masalahnya adalah bahwa 1000 adalah jendela yang cukup panjang untuk rata-rata bergerak eksponensial Im tidak yakin ada alfa yang akan menyebar rata-rata selama 1000 nomor terakhir, tanpa arus dalam perhitungan floating point. Tapi jika Anda menginginkan rata-rata yang lebih kecil, seperti 30 angka atau lebih, ini adalah cara yang sangat mudah dan cepat untuk melakukannya. Jawab 12 Jun pukul 4:44 1 di posmu Rata-rata pergerakan eksponensial dapat memungkinkan alfa menjadi variabel. Jadi ini memungkinkannya digunakan untuk menghitung rata-rata basis waktu (misalnya byte per detik). Jika waktu sejak update akumulator terakhir lebih dari 1 detik, Anda membiarkan alpha menjadi 1.0. Jika tidak, Anda bisa membiarkan alpha menjadi (usecs sejak update1000000 terakhir). Ndash jxh 12 Jun 12 at 6:21 Pada dasarnya saya ingin melacak rata-rata bergerak aliran arus dari sebuah angka floating point dengan menggunakan 1000 nomor terbaru sebagai sampel data. Perhatikan bahwa di bawah ini update total sebagai elemen sebagai tambahan yang ditambahkan, hindarkan O (N) yang mahal untuk menghitung jumlah yang dibutuhkan untuk rata-rata - sesuai permintaan. Total dibuat parameter yang berbeda dari T untuk mendukung mis. Menggunakan panjang panjang bila total 1000 s panjang, int untuk char s, atau double to total float s. Ini sedikit cacat pada numsamples yang bisa melewati INTMAX - jika Anda peduli Anda bisa menggunakan unsigned long long. Atau gunakan anggota data bool tambahan untuk merekam saat wadah pertama kali diisi saat bersepeda mendekati numamples di sekitar array (terbaik kemudian berganti nama menjadi sesuatu yang tidak berbahaya seperti pos). Dijawab 12 Jun 12 at 5:19 seseorang mengasumsikan bahwa operator quotvoid (T sample) quot sebenarnya adalah quotvoid operatorltlt (T sample) quot. Ndash oPless 8 Jun 14 jam 11:52 oPless ahhh. Baik terlihat Sebenarnya saya bermaksud untuk itu menjadi operator void () (sampel T) tapi tentu saja Anda bisa menggunakan notasi apa pun yang Anda sukai. Akan memperbaiki, terima kasih. Ndash Tony D 8 Jun jam 14:27
Comments
Post a Comment