Наверное для того, чтоб маркет не кишил тестерными граалями =)
Да!!!
//+------------------------------------------------------------------+ //| 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?!
Это не позволит разместить сделку на моем 5-значном ECN-счете.
m
Это не позволит разместить сделку на моем 5-значном ECN-счете.
m
Если вы не торгуете - то конечно: это не повлияет :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Alexav SpeedUp M1:
Советник в момент формирования нового бара открывает две противоположные позиции.
Расчет на то, что одна из позиций закроется по Stop Loss, а вторая при помощи трейлинга выйдет в прибыль.
При тестировании не ленитесь проверить параметры в двух режимах генерации тиков ("Каждый тик на основе реальных тиков" и "Каждый тик"), так как открытие позиций осуществляется только на новом баре, но Trailing позиций идет на каждом тике (точнее проверяется возможность трейлинга на каждом тике). Пример такого казуса при тестировании на EURUSD,M1:
Автор: Vladimir Karputov