EA ini menggunakan dua indikator iStochastic (Stochastic Oscillator) dan satu indikator iRSI (Relative Strength Index).
Penulis ide — cxa, penulis kode MQL5 — barabashkakvn.
EA ini menghitung ukuran lot berdasarkan analisis dari trade yang telah ditutup:
//+------------------------------------------------------------------+
//| Menghitung ukuran lot optimal |
//+------------------------------------------------------------------+
double UkuranLotOptimal()
{
double lot=Lots;
int kerugian=0; // jumlah trade yang merugi tanpa break
//--- seleksi ukuran lot
lot=NormalizeDouble(m_account.FreeMargin()*MaximumRisk/1000.0,2);
//--- hitung jumlah order yang merugi tanpa break
if(DecreaseFactor>0)
{
//--- minta riwayat trade
HistorySelect(TimeCurrent()-86400,TimeCurrent()+86400);
//---
uint total=HistoryDealsTotal();
//--- untuk semua deal
for(uint i=0;i<total;i++)
{
if(!m_deal.SelectByIndex(i))
{
Print("Error dalam riwayat!");
break;
}
if(m_deal.Symbol()!=Symbol() || m_deal.Entry()!=DEAL_ENTRY_OUT)
continue;
//---
if(m_deal.Profit()>0)
break;
if(m_deal.Profit()<0)
kerugian++;
}
if(kerugian>1)
lot=NormalizeDouble(lot-lot*kerugian/DecreaseFactor,1);
}
//--- kembalikan ukuran lot
if(lot<0.1)
lot=0.1;
return(lot);
}
//| Menghitung ukuran lot optimal |
//+------------------------------------------------------------------+
double UkuranLotOptimal()
{
double lot=Lots;
int kerugian=0; // jumlah trade yang merugi tanpa break
//--- seleksi ukuran lot
lot=NormalizeDouble(m_account.FreeMargin()*MaximumRisk/1000.0,2);
//--- hitung jumlah order yang merugi tanpa break
if(DecreaseFactor>0)
{
//--- minta riwayat trade
HistorySelect(TimeCurrent()-86400,TimeCurrent()+86400);
//---
uint total=HistoryDealsTotal();
//--- untuk semua deal
for(uint i=0;i<total;i++)
{
if(!m_deal.SelectByIndex(i))
{
Print("Error dalam riwayat!");
break;
}
if(m_deal.Symbol()!=Symbol() || m_deal.Entry()!=DEAL_ENTRY_OUT)
continue;
//---
if(m_deal.Profit()>0)
break;
if(m_deal.Profit()<0)
kerugian++;
}
if(kerugian>1)
lot=NormalizeDouble(lot-lot*kerugian/DecreaseFactor,1);
}
//--- kembalikan ukuran lot
if(lot<0.1)
lot=0.1;
return(lot);
}
Hasil Backtests pada EURUSD dan USDJPY:
Komentar 0