Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Rejoignez notre page de fans
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
- Publié par:
- Vladimir Karputov
- Vues:
- 4177
- Note:
- Publié:
- 2017.03.02 09:51
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
The EA uses two iStochastic (Stochastic Oscillator) indicators and one iRSI (RSI, Relative Strength Index).
Author of the idea — cxa, author of the MQL5 code — barabashkakvn.
Calculates the lot size based on the analysis of closed trades:
//+------------------------------------------------------------------+
//| Calculating optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
int losses=0; // number of losses deals without a break
//--- select lot size
lot=NormalizeDouble(m_account.FreeMargin()*MaximumRisk/1000.0,2);
//--- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
//--- request trade history
HistorySelect(TimeCurrent()-86400,TimeCurrent()+86400);
//---
uint total=HistoryDealsTotal();
//--- for all deals
for(uint i=0;i<total;i++)
{
if(!m_deal.SelectByIndex(i))
{
Print("Error in history!");
break;
}
if(m_deal.Symbol()!=Symbol() || m_deal.Entry()!=DEAL_ENTRY_OUT)
continue;
//---
if(m_deal.Profit()>0)
break;
if(m_deal.Profit()<0)
losses++;
}
if(losses>1)
lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//--- return lot size
if(lot<0.1)
lot=0.1;
return(lot);
}
//| Calculating optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
int losses=0; // number of losses deals without a break
//--- select lot size
lot=NormalizeDouble(m_account.FreeMargin()*MaximumRisk/1000.0,2);
//--- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
//--- request trade history
HistorySelect(TimeCurrent()-86400,TimeCurrent()+86400);
//---
uint total=HistoryDealsTotal();
//--- for all deals
for(uint i=0;i<total;i++)
{
if(!m_deal.SelectByIndex(i))
{
Print("Error in history!");
break;
}
if(m_deal.Symbol()!=Symbol() || m_deal.Entry()!=DEAL_ENTRY_OUT)
continue;
//---
if(m_deal.Profit()>0)
break;
if(m_deal.Profit()<0)
losses++;
}
if(losses>1)
lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//--- return lot size
if(lot<0.1)
lot=0.1;
return(lot);
}
Results of Backtests on EURUSD and USDJPY:
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/17236

The Expert Advisor searches for the momentum: iClose(t2)-iClose(t1).

The Expert Advisor opens or closes positions at the intersection of lines.

The Expert Advisor uses the values of two iMA (Moving Average, MA) indicators.

The Expert Advisor places two pending orders (BuyStop and SellStop) with the specified expiration.