MetaTrader4
EA Sederhana Menggunakan Indikator DeMarker untuk MetaTrader 4
Pernahkah kamu berpikir untuk menggunakan EA (Expert Advisor) dalam trading? Saya juga! Di sini, saya akan berbagi tentang EA sederhana yang saya gunakan, dan ini adalah yang paling mudah yang pernah saya buat. Setelah membaca, jangan lupa untuk memberikan penilaian, ya! EA ini bekerja pada satu pasangan mata uang saja. Kamu bisa mengatur periode waktu, lot, stop loss, dan take profit melalui menu properti yang tersedia. extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;// Pilih Time Frame extern int period = 8;// Periode DeMarker extern double lt = 0.01;// Lot extern int sl = 100;// Stop Loss extern int tp = 100;// Take Profit extern double OB = 0.7;// Over Sold extern double OS = 0.3;// Over Bought extern bool OPENBAR = false;// Trading di harga open bar baru Berikut adalah rahasianya, saya membagi variabel ini menjadi 3 bagian:1. Data | Timeframe2. Order3. Pair //+------------------------------------------------------------------+ //-- time frame|indicator double dmrk[5]; int signal =-1;//-- 0.buy 1.sell int hold = 0; //-- order int ticket =0; double lot =0.0; int typ =-1; //-- pair datetime t1=0; bool newbar=false; bool entry =false; //+------------------------------------------------------------------+ Di fungsi OnInit(), saya harus menginisialisasi array variabel indikator DeMarker dan juga memeriksa ukuran lot minimum untuk jenis broker tertentu. //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnInit() { ArrayInitialize(dmrk,0.0); //--- const double test_lot = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN); if(lt<test_lot) lt = test_lot; } Di fungsi OnTick(), saya menghitung indikator dan menentukan sinyal beli dan jual. //--------------------------------------------------------------------------- signal = -1; //--------------------------------------------------------------------------- //---calc for(int i=0; i<ArraySize(dmrk); i++) { dmrk[i] = iDeMarker(Symbol(),TF,period,i); } //--- if(dmrk[1] > OB) { hold = 1;//set } else if(dmrk[1] < OS) { hold = -1;//set } else { hold = 0;//reset } if(hold == 1) { if(dmrk[0]<OB && dmrk[1]>OB) { signal = OP_SELL; } } if(hold == -1) { if(dmrk[0]>OS && dmrk[1]<OS) { signal = OP_BUY; } } Untuk membuka sinyal beli dan jual... //--------------------------------------------------------------------------- if(signal != -1) if(newbar==true) if(entry==false)//pintu terbuka { //--- entry =true;//set //--- if(signal == OP_BUY) { ticket = OrderSend(Symbol(),OP_BUY,lt,Ask,(int)((Ask-Bid)/Point, sl>0?Bid-sl*Point:0.0, tp>0?Bid+tp*Point:0.0, EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold), EANumber, 0, clrBlue); signal=-1; //hold =0; }//reset else if(signal == OP_SELL) { ticket = OrderSend(Symbol(),OP_SELL,lt,Bid,(int)((Ask-Bid)/Point, sl>0?Ask+sl*Point:0.0, tp>0?Ask-tp*Point:0.0, EAName+":signal= "+IntegerToString(signal)+":hold= "+IntegerToString(hold), EANumber, 0, clrRed); signal=-1; //hold =0; }//reset signal } Dan untuk penutupan... if(entry == true) // penutupan { if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderCloseTime() == 0)//-- order masih aktif { /* todo kondisi untuk menutup */ //entry = false; } //else if(OrderCloseTime() != 0)//-- close by 1. manual 2. sl/tp 3. ea { entry = false;//reset entry } } }
2020.12.17