Fix lot size calculation and help me understand your fix

MQL5 Danışmanlık

İş Gereklilikleri

I have a function in my EA that returns the lot size based on a provided entry and sl level.  The risk percentage of equity is also provided.  Sometimes the EA allocates too much risk and some times too little.  I can provide examples of each.  

Please help me to get the function to

1. allocate risk correctly no matter the instrument and or symbol including stock cfds, currencies, futures, commodities.

2. show an error indicating that the minimal lot size exceeds my risk allocation if necessary.


The code should:

1. prioritise readability

2. contain clear comments.


Please be willing to answer any questions I have to understand the code.


CSymbolInfo m_symbol;
CMoneyFixedRisk m_money;
CTrade my_trade;

risk_percent = 2;

double GetTradeVolume(string symbol)
  {
   double return_value = 0;
   ENUM_TIMEFRAMES timeframe = (ENUM_TIMEFRAMES)GlobalVariableGet("g" + symbol + "_timeframe");
   double entry = GlobalVariableGet("g" + symbol + "_entry_level");
   double sl = GlobalVariableGet("g" + symbol + "_sl");
   
   m_symbol.Name(symbol);
   m_money.Init(GetPointer(m_symbol), timeframe, (double)SymbolInfoDouble(symbol, SYMBOL_POINT));
   m_money.Percent(risk_percent);
   
   if(isLong)
      return_value =  m_money.CheckOpenLong(entry, sl);
   if(isShort)
      return_value =  m_money.CheckOpenShort(entry, sl);

   return_value = NormalizeDouble(return_value, 2);
   
   return return_value;
  }


Yanıtlandı

1
Geliştirici 1
Derecelendirme
(155)
Projeler
224
33%
Arabuluculuk
27
26% / 26%
Süresi dolmuş
23
10%
Serbest
2
Geliştirici 2
Derecelendirme
(378)
Projeler
401
31%
Arabuluculuk
63
19% / 70%
Süresi dolmuş
51
13%
Yüklendi
3
Geliştirici 3
Derecelendirme
(15)
Projeler
16
19%
Arabuluculuk
2
0% / 50%
Süresi dolmuş
1
6%
Serbest

Proje bilgisi

Bütçe
30+ USD
Geliştirici için
27 USD
Son teslim tarihi
to 2 gün