Расчет цены 1 лота до его открытия. - страница 3

 

Не как реклама, а просто готовый автоматизированный пример расчета лотов для портфеля из символов любого рынка.

P.S. Надо лишь немного навязанные стереотипы преодолеть в себе. Это касается многих тем. Те же Price-Returns...

Recycle2 - MQL4 Code Base
  • www.mql5.com
Recycle2 - MQL4 Code Base: технические индикаторы для МТ4
 
Не в защиту мартина (прекрасно понимаю что это) и не холивара ради.
MetaDriver:

//   Видимо потому, что задачек таких себе не ставлю: "...... и рассчитываю что следующая сделка ее окупит с некоторым запасом. "  

//  ....... Запах мартина прёт откуда-то...   Откуда он взялся в цивильной ветке.. ?  Фуу....  ;)

Ради простоты предположим, что у нас система с довольно таки стабильным МО. Тогда цель по выражению может быть достигнута тремя способами:

  1. пропорционально увеличим стопы в  следующей сделке, объем оставляем прежний.  Приблизительная аналогия , с некоторыми оговорками по времени – переход в торговле на более старшие таймфреймы.  К чему здесь может быть фу?
  2. увеличим  объем следующей сделки, стопы оставляем прежними.  Запах наверно отсюда. Ок, любой мартин (например с лотной серией 1-2-4-8 ) можно разложить в ряд сделок одинарного объема (в нашем примере в 1-[1-1]-[1-1-1-1]-[1-1-1-1-1-1-1-1] ).  Опять же приблизительная аналогия  - увеличение частоты открытия сделок при проигрыше.
  3. комбинация (1) и (2) вариантов

Надеюсь, для цивильной ветки сойдет ))

 

hrenfx:

.............Gain может быть отрицательным при положительной абсолютной прибыли и наоборот - Gain положительный при отрицательной абслютной прибыли......

Можно поподробнее?  Не понял как это.
 
Это связано с возможными вводами/выводами денежных средств.
 
hrenfx:
Это связано с возможными вводами/выводами денежных средств.
Так сделайте пересчёт данных в формуле при появлении сделки типа "balance", до её появления опорный баланс один после другой вот от этого и вылазят такие баги в расчётах. Если сделать пересчёт с учётом изменения баланса(не в результате торговли), то и формула не будет иметь исключений.
 

Именно с учетом всех обстоятельств и получаются иногда ситуации, которые описал. И называть их исключениями неверно, т.к. это совершенно логичные вещи.

Простой пример:

  1. Deposit = $1000.
  2. Profit = -$500 (-50%).
  3. Deposit = +$500.
  4. Profit = +$500 (+50%).

Получаем, что Gain = 0.5 * 1.5 = 75%, Absolute Gain = $0. Думаю, мысль понятна.

P.S. На самом деле правильно рассчитывать Gain по Equity, а не по балансу. 

GetAccountGain - MQL4 Code Base
  • www.mql5.com
GetAccountGain - MQL4 Code Base: скрипты для MetaTrader 4
 
papaklass:

Нейтральный по валютам портфель:

Ошиблись, посмотрите хотя бы количество "имеющейся" AUD.
 

Проще всего объяснить кодом. Отсюда:

int CurrencyPos( string Str )
{
  int i = 0;
  
  while (Currency[i] != Str)  
    i++;
  
  return(i);
}
 
void CheckArbitrage()
{
  int i;
  string Str;
  
  for (i = 0; i < AmountCurrency; i++)
    Volumes[i] = 0;
  
  for (i = OrdersTotal() - 1; i >= 0; i--)
  {
    OrderSelect(i, SELECT_BY_POS);
    
    if (OrderType() == OP_BUY)
    {
      Str = StringSubstr(OrderSymbol(), 0, 3);
      Volumes[CurrencyPos(Str)] += OrderLots();
      
      Str = StringSubstr(OrderSymbol(), 3, 3);
      Volumes[CurrencyPos(Str)] -= OrderLots() * OrderOpenPrice();
    }
    else if (OrderType() == OP_SELL)
    {
      Str = StringSubstr(OrderSymbol(), 0, 3);
      Volumes[CurrencyPos(Str)] -= OrderLots();
      
      Str = StringSubstr(OrderSymbol(), 3, 3);
      Volumes[CurrencyPos(Str)] += OrderLots() * OrderOpenPrice();
    }
  }
  
  return;
}
 
hrenfx:

Именно с учетом всех обстоятельств и получаются иногда ситуации, которые описал. И называть их исключениями неверно, т.к. это совершенно логичные вещи.

Простой пример:

  1. Deposit = $1000.
  2. Profit = -$500 (-50%).
  3. Deposit = +$500.
  4. Profit = +$500 (+50%).

Получаем, что Gain = 0.5 * 1.5 = 75%, Absolute Gain = $0. Думаю, мысль понятна.

P.S. На самом деле правильно рассчитывать Gain по Equity, а не по балансу. 

У вас есть формула правильно работающая на депозите без ввода/вывода.

Дополнить её случаями ввода/вывода это и называется прописать исключения.

Вы можете цепляться к запятым и точкам, к орфографии и грамматике, но сути это не изменит.

 
Еще раз повторяю, вы можете по ссылке выше посмотреть в коде полностью рабочий вариант расчета Gain, который практически учитывает все возможные варианты истории счета, вплоть до отрицательного баланса при положительном эквити. Не на ровном месте  слизала этот код себе.