Q.fin писал (а):
Вот простой кусок кода:
if (OrderProfit() >= 0) {Вот простой кусок кода:
if (martin == 1) { for(int i=orders-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; } if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue; //---- if(OrderProfit()>0) { Lots = FixedLots; break; } if(OrderProfit()<0) losses++; } if(losses > 0) Lots = Lots *losses; } }
Типа расчет лота по мартингейлу. При убыточных позициях увеличивать лот, при первой прибыльной - лот в приводлить к начальному.
Проблема в том, что после прибыльной сделки он ещё раз увеличивает лот, а только потом делает лот нормальным. Что я только не перепробывал. И вместо order-1 ставил просто order, и т.д. и т.п. Как сделать что бы после прибыльной сделки сразу нормализовал лот к исходному состоянию? Где ошибка?
Lots = FixedLots;
// Убытки пофиксены. Проинициализируем соответствующую переменную
losses = 0;
break;
} else {
losses++;
}
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Типа расчет лота по мартингейлу. При убыточных позициях увеличивать лот, при первой прибыльной - лот в приводлить к начальному.
Проблема в том, что после прибыльной сделки он ещё раз увеличивает лот, а только потом делает лот нормальным. Что я только не перепробывал. И вместо order-1 ставил просто order, и т.д. и т.п. Как сделать что бы после прибыльной сделки сразу нормализовал лот к исходному состоянию? Где ошибка?