- Мистика с индикатором Harmonic Butterfly... нужна помощь знатоков.
- На Чемпионате клоны!!!!!!!!!!!
- Библиотеки: MT4Orders
Вот из тестера, произошла частичная фиксация прибыли с переносом стопа в безубыток (как собственно и было задумано)
В то время как на реале эксперт все еще держит позицию, при этом условие фиксации есть и сейчас (давно уже есть)
Вот условие фиксации 2/3 позиции
if (OrderType()==OP_BUY && Orders_Total==1 && (BID-OpenPrice)>(OpenPrice-StopLoss) && OrderLot==Lot*3) { res = OrderClose (Ticket, OrderLot*2/3, BID, 20, 0); if (res) { Alert ("Фиксация прибыли по ",Symb); Modify_0 = true; } }
Почему этот алгоритм работает в тестере (1 скрин) и не работает в реале (2 скрин)?
Вот условие фиксации 2/3 позиции
Почему этот алгоритм работает в тестере (1 скрин) и не работает в реале (2 скрин)?
Избегайте использования сравнения на равенство для переменных с типом double.
Где вы задаёте Orders_Total? Когда вы задаёте BID? Почему не округляете OrderLot*2/3? Почему вы не посмотрите лог?
Считаю только ордера "своего" символа
for(i=OrdersTotal();i>=0;i--) { if (OrderSelect(i,SELECT_BY_POS)==true) { if (OrderSymbol() != Symbol()) continue; else Orders_Total = Orders_Total+1; } }
double BID = MarketInfo(Symbol(),MODE_BID);
Про ордер лот знаю что лот 0,3 отсюда 0,3*2/3 = 0,2
в логах ничего
Да и еще уж чтоб вопросов не было
OpenPrice = OrderOpenPrice(); Ticket = OrderTicket(); OrderLot = OrderLots(); StopLoss = OrderStopLoss(); TakeProfit = OrderTakeProfit(); Symb = OrderSymbol();
Избегайте использования сравнения на равенство для переменных с типом double.
А как быть? Например?
когда передаете double в торговые функции - нормализуйте числа на всякий пожарный.
Например этот нормализует и приведет в порядок цену для четырехзнака и пятизнака:
NormalizeDouble(Bid, Digits);
А как быть? Например?
делать их разность и сравнивать с нулем, т.е. если, например, разность значений двух переменных больше нуля, то, соответственно, значение первой переменной больше второй .
в логах ничего
Вот условие фиксации 2/3 позиции
res = OrderClose (Ticket, OrderLot*2/3, BID, 20, 0);
В этой строке мне не нравится "OrderLot*2/3". Перепишите её хотя бы как "NormalizeDouble (OrderLot*2/3, 2)".
А чтобы понять, заходит советник в условие или нет, можно воткнуть контрольный Print или Alert.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования