Penulis ide — George F.Peskov, penulis kode MQL5 — barabashkakvn.
Sistem trading ini bekerja berdasarkan perpotongan dua iMA (Moving Average) dengan pengaturan stop loss yang otomatis berdasarkan nilai ATR (Average True Range). Selain itu, sistem ini juga mengirimkan notifikasi melalui email setiap kali posisi dibuka atau ditutup. Parameter dapat disesuaikan melalui 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);
Periksa kondisi untuk menjual:
//--- Kondisi 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 oleh"+Symbol()+" di "+DoubleToString(m_symbol.Bid(),Digits())+
", dan set stop/loss di "+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 oleh"+Symbol()+" di "+DoubleToString(m_symbol.Bid(),Digits())+
", dan set stop/loss di "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Periksa kondisi untuk membeli:
//--- Kondisi 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 di"+Symbol()+"";
sBodyLetter="Transaksi BELI di"+Symbol()+" untuk "+DoubleToString(m_symbol.Ask(),Digits())+
", dan set stop/loss di "+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 di"+Symbol()+"";
sBodyLetter="Transaksi BELI di"+Symbol()+" untuk "+DoubleToString(m_symbol.Ask(),Digits())+
", dan set stop/loss di "+DoubleToString(stop_loss,Digits())+"";
sndMessage(sHeaderLetter,sBodyLetter);
}
return;
}
Komentar 0