Sunday 28 October 2012

Moving Average

Moving Average 
Author: MetaQuotes
Download: 
Moving Average.mq4 (4.6 Kb)

EA Moving Average menghasilkan signal perdagangan dengan menggunakan moving average. Membuka dan menutup posisi dilakukan ketika moving average memenuhi harga di bar yang baru terbentuk (indeks bar setara dengan 1). Ukuran lot akan dioptimalkan sesuai dengan algoritma khusus.

Money Management yang digunakan sangat sederhana, tetapi efektif, kontrol atas setiap volume posisi dilakukan tergantung pada hasil transaksi sebelumnya. Algoritma ini diimplementasikan oleh fungsi (LotsOptimized). Ukuran lot dasar dihitung berdasarkan risiko maksimum yang diijinkan:

Lot = NormalizeDouble (AccountFreeMargin () * MaximumRisk/1000.0, 1);

Parameter MaximumRisk menampilkan persentase risiko dasar untuk setiap transaksi. Biasanya memiliki nilai antara 0,01 (1%) dan 1 (100%). Sebagai contoh, jika free margin(AccountFreeMargin) setara dengan $ 20.500 dan aturan pengelolaan modal menggunakan resiko 2%, ukuran lot dasar adalah 20500 * 0,02 / 1000 = 0,41.

DecreaseFactor adalah sejauh mana ukuran lot akan berkurang setelah perdagangan yang tidak menguntungkan. nilai normal adalah 2,3,4,5. Jika transaksi sebelumnya yang tidak menguntungkan, volume berikutnya akan berkurang dengan faktor DecreaseFactor untuk menunggu periode tidak menguntungkan tersebut. Ini adalah faktor utama dalam algoritma pengelolaan modal. Idenya sangat sederhana: jika berhasil meningkatkan perdagangan, EA bekerja dengan banyak dasar untuk menghasilkan keuntungan maksimal. Setelah transaksi tidak menguntungkan pertama, EA akan “mengurangi kecepatan” sampai transaksi positif. Algoritma ini memungkinkan untuk menonaktifkan “mengurangi kecepatan”, untuk melakukannya, kita harus menentukan DecreaseFactor = 0. Jumlah transaksi terakhir tidak menguntungkan berurutan, akan dihitung ulang berdasarkan ini:

if (loss> 1) lot = NormalizeDouble (lots loss * / DecreaseFactor, 1);

if (lot <0,1) lot = 0,1;

EA ini baik digunakan untuk chart harian.

agan2 bisa belajar di http://instaforex.co.id/mt4/moving-average/

Step marty 0.01 namun lot tak terjadi martiyem

ini khusus untuk lot awal = 0.01, walau ada exp = 2, lot selanjutnya tetap sama
klu lot awal dimulai 0.02, maka lot marti selanjutnya berjalan semsetinya sesuai dengan perkalian exp nya

masalah :
http://indo.mt5.com/showthread.php?1793-GRATIS-Profitable-EA-BHCM-!/page38

maaf nih agan semua , sy mau tanya
ane pasang multyply nya =1 
kok OP selanjutnya malah naik sendiri lotnya , kira2 salahnya apa y



terlihat walau multiply = 1, namun lot naik 0.01

jawab :
Coba dilihat pada bagian yang ini....

LotBuy = MathMax(Multiply*OrderLots(),OrderLots()+lotstep);
LotSell = MathMax(Multiply*OrderLots(),OrderLots()+lotstep);


MathMax = Menampilkan nilai tertinggi.
lotstep = MarketInfo(Symbol(), MODE_LOTSTEP); ==>> asumsi jika memakai account demo instaforex MODE_LOTSTEP = 0.01


Jadi kesimpulannya seperti ini

LotBuy/LotSell = MathMax(Multiply*OrderLots(),OrderLots()+lotstep)
LotBuy/LotSell = MathMax(1*0.1,0.1+0.01) 
LotBuy/LotSell = MathMax(0.1,0.11)
LotBuy/LotSell = 0.11


Kalau mau tidak bertambah lotnya bisa dicoba dihilangkan "+lotstep" nya..... 

ganti semua ini :
Code:
LotBuy      = MathMax(Multiply*OrderLots(),OrderLots()+lotstep);
LotBuy      = MathMax(LotBuy, minlot);
dengan ini :
Code:
LotBuy      = MathMax(Multiply*OrderLots(),minlot);
--------------
@iniangga & hermit88
Betul bagian itu yang diubah, maaf kemarin mo reply blom sempet masih sibuk.
Dan itu tidak menyalahi konsep Martingale, karena emang sebenarnya itu kode aslinya dulu ya saya bikin seperti itu 
Lalu kenapa saya tambahkan lotstep?
Kalo menyimak di post2 depan, pasti tahu sejarahnya. Dulu ada yang coba penambahan lot-nya ngga jalan karena menggunakan multiply 1.5
1.5 x0.1 = 0.15
Nah jika lotstep dari broker yang bersangkutan adalah 0.1, maka perhitungan tadi akan menghasilkan tetap 0.1 karena penambahan lot (lotstep) yang diijinkan minimal 0.1
Kalo di Insta lotstep=0.01 jadi no problemo 
Ok, kiranya masalah ini cukup jelas. Jika ada yang kurang sreg, sampaikan saja...
Saya sangat berterima kasih kepada iniangga & hermit88 karena bersedia membantu menjelaskan coding-nya. Karena kebanyakan orang males belajar, maunya langsung dapet instan hehe..  
Belajar MQL ngga ada ruginya, terutama jika setiap hari MT4 jadi "santapan" sehari-hari, minimal bisa edit2 indi/EA dikit2 khan lumayan.

--------------------------
Masalah saya sdh ada exp namun lot tidak exponential..

tambahkan perintah :

di input :

double gd_1=1;


void SetDigits() {
   if (Digits == 5 || Digits == 3) gd_160 = 10;
   if(MarketInfo(Symbol(),MODE_MINLOT) == 0.01) gd_1 = 2;
}



di perintah order :

if (OrderSend(Symbol(), OP_SELLSTOP, NormalizeDouble(LotsExponential * Lots, gd_1), NormalizeDouble(ld_8 - KillZone * Point * gd_160, Digits), Slippage, l_price_24, l_price_32, gs_007_148, Magic_Number, 0, Red) == -1) {
               l_error_0 = GetLastError();