lots = F (maxBalance-equity)
функция от просадки. В простейшем случае
---
нет под рукой MT и исходников..попробую вспомнить :-)
lots = (K-1)*balanceDrawdown / (pointsToTake * tickValue) ; // когда тейк заранее известен. K - коэфф "умножения" лотов
когда тейк фик его знает, но известен стоп - через логарифм от просадки считаешь сколько раз пойман стоп и соотв. добавляешь и подставлешь в степенную функцию
Спасибо, лаконично.
А вот само условие "если цена пошла в убыток такой-то, либо если цена прошла минус N пунктов - открыть еще один ордер с увеличенным лотом", его только через оператор for (заметил, он присутствует во всех мартинах)?
---
нет под рукой MT и исходников..попробую вспомнить :-)
lots = (K-1)*balanceDrawdown / (pointsToTake * tickValue) ; // когда тейк заранее известен. K - коэфф "умножения" лотов
когда тейк фик его знает, но известен стоп - через логарифм от просадки считаешь сколько раз пойман стоп и соотв. добавляешь и подставлешь в степенную функцию
Спасибо, попробую сообразить
Самый компактный искать не стал, но вроде бы здесь есть:
https://www.mql5.com/ru/code/19514
Спасибо за ответ, но то мкл5, Владимир только на нём пишет
Спасибо, лаконично.
А вот само условие "если цена пошла в убыток такой-то, либо если цена прошла минус N пунктов - открыть еще один ордер с увеличенным лотом", его только через оператор for (заметил, он присутствует во всех мартинах)?
for присутствует от жажды деятельности и наслаждения объёмом кода
мартин - отбиваем просадку увеличением объёма. ВСЁ.
чем больше просадка, тем больший объём должен быть в рынке. Текущий объём можно посчитать от маржи, без циклов (или просто запоминать)
можно на листочке нарисовать график с осями просадка/объём и его запрограммировать. Можно гладким, можно ступенчатым. Но это-ж надо думать, чего тут не очень любят. Любят писать for
Подскажите, пожалуйста, как выглядит простейший код мартингейла?
нужно узнать какая прибыль и какой лот был у последнего закрытого ордера
примерно так:
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); }
дальше... найдите Кимовские функции поиском по форуму, там все для простых ЕА давно уже изобретено ;)
for присутствует от жажды деятельности и наслаждения объёмом кода
мартин - отбиваем просадку увеличением объёма. ВСЁ.
чем больше просадка, тем больший объём должен быть в рынке. Текущий объём можно посчитать от маржи, без циклов (или просто запоминать)
можно на листочке нарисовать график с осями просадка/объём и его запрограммировать. Можно гладким, можно ступенчатым. Но это-ж надо думать, чего тут не очень любят. Любят писать for
Спасибо за разъяснения, имею ввиду
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В кодбазе просмотрел все советники с мартингейлом и усреднением. Все они весят по-разному, один 8 кб, другой 15, третий 40 кб. Очень много строк, так и не нашёл (не разобрался) в них блок с мартином.
Подскажите, пожалуйста, как выглядит простейший код мартингейла?