Самый компактный (или простой) код мартингейла

 
Здравствуйте. 

В кодбазе просмотрел все советники с мартингейлом и усреднением. Все они весят по-разному, один 8 кб, другой 15, третий 40 кб. Очень много строк, так и не нашёл (не разобрался) в них блок с мартином. 

Подскажите, пожалуйста, как выглядит простейший код мартингейла?
 

lots = F (maxBalance-equity)

функция от просадки. В простейшем случае

---

нет под рукой MT и исходников..попробую вспомнить :-)

lots = (K-1)*balanceDrawdown / (pointsToTake * tickValue)  ; // когда тейк заранее известен. K - коэфф "умножения" лотов

когда тейк фик его знает, но известен стоп - через логарифм от просадки считаешь сколько раз пойман стоп и соотв. добавляешь и подставлешь в степенную функцию

 
Maxim Kuznetsov #:

lots = F (maxBalance-equity)

функция от просадки. В простейшем случае

Спасибо, лаконично.

А вот само условие "если цена пошла в убыток такой-то, либо если цена прошла минус N пунктов - открыть еще один ордер с увеличенным лотом", его только через оператор for (заметил, он присутствует во всех мартинах)?

 
Самый компактный искать не стал, но вроде бы здесь есть:
https://www.mql5.com/ru/code/19514
Precipice MartIn
Precipice MartIn
  • www.mql5.com
Торговая стратегия с использованием Martingale.
 
Maxim Kuznetsov #:

---

нет под рукой MT и исходников..попробую вспомнить :-)

lots = (K-1)*balanceDrawdown / (pointsToTake * tickValue)  ; // когда тейк заранее известен. K - коэфф "умножения" лотов

когда тейк фик его знает, но известен стоп - через логарифм от просадки считаешь сколько раз пойман стоп и соотв. добавляешь и подставлешь в степенную функцию

Спасибо, попробую сообразить

 
Yevhenii Levchenko #:
Самый компактный искать не стал, но вроде бы здесь есть:
https://www.mql5.com/ru/code/19514

Спасибо за ответ, но то мкл5, Владимир только на нём пишет

 
Ivan Butko #:

Спасибо, лаконично.

А вот само условие "если цена пошла в убыток такой-то, либо если цена прошла минус N пунктов - открыть еще один ордер с увеличенным лотом", его только через оператор for (заметил, он присутствует во всех мартинах)?

for присутствует от жажды деятельности и наслаждения объёмом кода

мартин - отбиваем просадку увеличением объёма. ВСЁ.

чем больше просадка, тем больший объём должен быть в рынке. Текущий объём можно посчитать от маржи, без циклов (или просто запоминать)

можно на листочке нарисовать график с осями просадка/объём и его запрограммировать. Можно гладким, можно ступенчатым. Но это-ж надо думать, чего тут не очень любят. Любят писать for

 
Ivan Butko:

Подскажите, пожалуйста, как выглядит простейший код мартингейла?

нужно узнать какая прибыль и какой лот был у последнего закрытого ордера

примерно так:

void OnTick()
{
   int MagicNumber = 12345;   // магик ЕА
   double last_profit;        // переменная для хранения профита последнего ордера
   double lot;                // переменная для хранения лота последнего ордера
   if(GetProfitLastOrder(MagicNumber, last_profit, lot))
   {
      Print("Профит последнего ордера: ", last_profit, " ", AccountCurrency(), " , ",
            "Lot = ", lot);

   }
}
//+------------------------------------------------------------------+
bool GetProfitLastOrder(const int magic, double &order_profit, double &order_lot)
{
   datetime last_t = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == _Symbol && OrderMagicNumber() == magic)
      {
         if(OrderCloseTime() > last_t)
         {
            last_t = OrderCloseTime();
            order_profit = OrderProfit(); // возможно нужно посчитать еще своп и комиссии?
            order_lot = OrderLots();
         }
      }
   }
   if(last_t == 0) return(false);   // не нашли наш ордер
   return(true);
}

дальше... найдите Кимовские функции поиском по форуму, там все для простых ЕА давно уже изобретено ;)

 
Maxim Kuznetsov #:

for присутствует от жажды деятельности и наслаждения объёмом кода

мартин - отбиваем просадку увеличением объёма. ВСЁ.

чем больше просадка, тем больший объём должен быть в рынке. Текущий объём можно посчитать от маржи, без циклов (или просто запоминать)

можно на листочке нарисовать график с осями просадка/объём и его запрограммировать. Можно гладким, можно ступенчатым. Но это-ж надо думать, чего тут не очень любят. Любят писать for

Спасибо за разъяснения, имею ввиду

 
Igor Makanu #:

нужно узнать какая прибыль и какой лот был у последнего закрытого ордера

примерно так:

дальше... найдите Кимовские функции поиском по форуму, там все для простых ЕА давно уже изобретено ;)

Большое спасибо!