Pengarang idea — George F.Peskov, pengarang kod MQL5 — barabashkakvn.
Sistem trading ini berasaskan persilangan dua iMA (MA) di mana stop loss ditetapkan secara automatik berdasarkan nilai ATR. Anda juga akan menerima notifikasi melalui email setiap kali posisi dibuka atau ditutup. Parameter sistem ini boleh disesuaikan melalui proses backtesting.
Mendapatkan nilai indikator pada bar pertama dan kedua:
//--- mendapatkan Moving Average
mas=iMAGet(handle_iMA1,1); // moving average panjang 12
maf=iMAGet(handle_iMA2,1); // moving average pendek 4
mas_p=iMAGet(handle_iMA1,2); // moving average panjang 12
maf_p=iMAGet(handle_iMA2,2); // moving average pendek 4
Atr=iATRGet(0);
mas=iMAGet(handle_iMA1,1); // moving average panjang 12
maf=iMAGet(handle_iMA2,1); // moving average pendek 4
mas_p=iMAGet(handle_iMA1,2); // moving average panjang 12
maf_p=iMAGet(handle_iMA2,2); // moving average pendek 4
Atr=iATRGet(0);
Semak syarat untuk menjual:
//--- Syarat untuk menjual
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operasi JUAL oleh"+Symbol()+"";
sBodyLetter="Transaksi JUAL pada"+Symbol()+" pada "+DoubleToString(m_symbol.Bid(),Digits())+
", dan tetapkan stop/loss pada "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf<mas && maf_p>=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operasi JUAL oleh"+Symbol()+"";
sBodyLetter="Transaksi JUAL pada"+Symbol()+" pada "+DoubleToString(m_symbol.Bid(),Digits())+
", dan tetapkan stop/loss pada "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Semak syarat untuk membeli:
//--- Syarat untuk membeli
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operasi BELI pada"+Symbol()+"";
sBodyLetter="Transaksi BELI pada"+Symbol()+" untuk "+DoubleToString(m_symbol.Ask(),Digits())+
", dan tetapkan stop/loss pada "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
if(maf>mas && maf_p<=mas_p)
{
double lots=LotsOptimized();
double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
if(SndMl==true && res)
{
sHeaderLetter="Operasi BELI pada"+Symbol()+"";
sBodyLetter="Transaksi BELI pada"+Symbol()+" untuk "+DoubleToString(m_symbol.Ask(),Digits())+
", dan tetapkan stop/loss pada "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Komen 0