Kita akan menggunakan EA ini sebagai alat perdagangan.
Untuk menggunakan EA ini, terdapat 3 input yang diperlukan seperti berikut:
- Sasaran Keuntungan
- Had Kerugian
- Nombor Ajaib
extern double inTargetProfitMoney = 10; //Sasaran Keuntungan ($) extern double inCutLossMoney = 0.0 //Had Kerugian ($) extern int inMagicNumber = 0 //Nombor Ajaib
Apabila EA ini dijalankan, ia akan memanggil fungsi OnInit(). Di sini, kita akan menyemak input dan inisialisasi variabel.
int OnInit() { //--- if(inTargetProfitMoney <= 0) { Alert("Input tidak sah"); return(INIT_PARAMETERS_INCORRECT); } inCutLossMoney = MathAbs(inCutLossMoney) * -1; //--- return(INIT_SUCCEEDED); }
Setiap kali pergerakan harga (tick) berlaku, fungsi OnTick() akan dipanggil.
void OnTick() { //--- double tFloating = 0.0; int tOrder = OrdersTotal(); for(int i=tOrder-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == inMagicNumber) { tFloating += OrderProfit()+OrderCommission() + OrderSwap(); } } } if(tFloating >= inTargetProfitMoney || (tFloating <= inCutLossMoney && inCutLossMoney < 0)) { fCloseAllOrders(); } }
Dalam fungsi OnTick, ia akan terus mengira jumlah keuntungan atau kerugian. Kemudian, ia akan menutup semua pesanan yang memenuhi sasaran atau had kerugian maksimum.
void fCloseAllOrders() { double priceClose = 0.0; int tOrders = OrdersTotal(); for(int i=tOrders-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == inMagicNumber && (OrderType() == OP_BUY || OrderType() == OP_SELL)) { priceClose = (OrderType()==OP_BUY)?MarketInfo(OrderSymbol(), MODE_BID):MarketInfo(OrderSymbol(), MODE_ASK); if(!OrderClose(OrderTicket(), OrderLots(), priceClose, slippage, clrGold)) { Print("AMARAN: Penutupan Gagal"); } } } } }
Untuk maklumat lanjut dan perkongsian pendidikan kod mql4, sila sertai telegram kami t.me/codeMQL