зачем добавили реальные тики, которые портят все стратегии?? ))
Vitaly Muzichenko:
Наверное для того, чтоб маркет не кишил тестерными граалями =)
Да!!!
Объяснения такого расхождения так и не прозвучало. В каком именно месте идет заглядывание в будущее у сгенерированных тиков?
//+------------------------------------------------------------------+ //| Trailing | //+------------------------------------------------------------------+ void Trailing() { if(InpTrailingStop==0) return; for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions if(m_position.SelectByIndex(i)) if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic) { if(m_position.PositionType()==POSITION_TYPE_BUY) { if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingStop+ExtTrailingStep) if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingStop+ExtTrailingStep)) { if(!m_trade.PositionModify(m_position.Ticket(), m_symbol.NormalizePrice(m_position.PriceCurrent()-ExtTrailingStop), m_position.TakeProfit())) Print("Modify ",m_position.Ticket(), " Position -> false. Result Retcode: ",m_trade.ResultRetcode(), ", description of result: ",m_trade.ResultRetcodeDescription()); continue; } } else { if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingStop+ExtTrailingStep) if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingStop+ExtTrailingStep))) || (m_position.StopLoss()==0)) { if(!m_trade.PositionModify(m_position.Ticket(), m_symbol.NormalizePrice(m_position.PriceCurrent()+ExtTrailingStop), m_position.TakeProfit())) Print("Modify ",m_position.Ticket(), " Position -> false. Result Retcode: ",m_trade.ResultRetcode(), ", description of result: ",m_trade.ResultRetcodeDescription()); } } } }
Какой смысл в выделенном?
Когда писался оригинал (2007 год), не было MQL5 и, соответственно, strict-директивы в MQL4. Поэтому там наблюдается много вложенная конструкция из if. На настоящий момент это давно является рудиментом. И раз КБ несет в себе и обучающие функции, не нужно тащить в MQL5 этот пережиток, дабы и не вызывать усмешек у программистов других языков.
Если оригинал переписать на текущий strcit-MQL4, то его исходник сократится раза в 1.5-2. В этом смысле ***смотрится MT5-вариант - в 4 раза больше по размеру, чем оригинал (это еще на старом MQL4). Зачем упорно проводить такую антирекламу MT5?!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Alexav SpeedUp M1:
Советник в момент формирования нового бара открывает две противоположные позиции.
Расчет на то, что одна из позиций закроется по Stop Loss, а вторая при помощи трейлинга выйдет в прибыль.
При тестировании не ленитесь проверить параметры в двух режимах генерации тиков ("Каждый тик на основе реальных тиков" и "Каждый тик"), так как открытие позиций осуществляется только на новом баре, но Trailing позиций идет на каждом тике (точнее проверяется возможность трейлинга на каждом тике). Пример такого казуса при тестировании на EURUSD,M1:
Автор: Vladimir Karputov