Библиотеки: Код вычисления прибыли в предполагаемом уровне цены

 

Код вычисления прибыли в предполагаемом уровне цены:

Слишком мало, чтобы быть достойным статьи, и слишком мало, чтобы быть достойным отдельной библиотеки, однако важность данной темы слишком высока, чтобы не быть затронутой.

Author: Mepkypuu

 

Нужно чуть подправить код. Используется неявное предположение, что все ордера открыты по одной валютной паре. Можно заменить на отбор ордеров по символу, на котором висит советник.

Потом, расчет стоимости применим только к парам с USD в знаменателе.

Не учтен спред. Это можно исправить, считая результат от текущей цены.

В первом приближении, код мог бы выглядеть так:

double getLots(double newSL)
{
   double TickValue, delta;
   double lotSum;
   string SymbolName;
   
   SymbolName = Symbol();
   TickValue = MarketInfo( SymbolName, MODE_TICKVALUE) / Point;
   delta = ( newSL - Bid ) * TickValue;
   lotSum = 0.0; 
   for (int i = 0; i <= OrdersTotal()-1; i++)
   {
      OrderSelect(i, SELECT_BY_POS);     
      if ( OrderSymbol() == SymbolName )
      { 
         if (OrderType() == OP_BUY)    { lotSum += OrderProfit() + OrderLots() * delta; }
         if (OrderType() == OP_SELL)   { lotSum += OrderProfit() - OrderLots() * delta; }
      }
   }   
   return(lotSum);
}
 
Mislaid:

Потом, расчет стоимости применим только к парам с USD в знаменателе.

Не учтен спред. Это можно исправить, считая результат от текущей цены.

Учесть спред и не получится, если он динамический. Когда появилась надобность в подобной функции я не ставил себе цели точно узнать какова будет прибыль в валюте депозита. Может быть это и будет критично, если в стратегии используется скальпинг. Цель была иная - стоп лосс в безубытке, но позже оказалось что можно пойти и дальше - считать не только будет ли безубыток по этому уровню SL, но и прибыль, поэтому расчет исключительно для примера, иначе зачем мне было так подробно его расписывать. Вы правы, об этом стоило упомянуть по тексту, но я надеялся на то, что у читателей хватит внимания это заметить и адаптировать код под свой инструмент.