![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
по лонгам:
по шортам:
Вы должны заплатить денег тому, кто проверит Вашего советника. У Вас в голове каша. И в исходном тексте тоже каша.
Спрашивается, зачем Вы вызываете RefreshRates в цикле выборки ордеров и не вызываете RefreshRates в цикле модификации ордеров. Ну это так, фигня.
Я отформатировал Ваш исходный текст. Вот что получилось.
Ответ лежит на поверхности.
Вот кусок кода модификации длинных позиций
Вот кусок кода модификации коротких позиций
Видите разницу?
Спрашивается, зачем Вы вызываете RefreshRates в цикле выборки ордеров и не вызываете RefreshRates в цикле модификации ордеров. Ну это так, фигня.
пробовал конечно, это проблему никак не решало.
Видите разницу?
за исключением по-другому расставленных скобок разницы никакой :))
Slawa судя по логам, код функций трейлингования и модификации ордеров рабочий!
проблема в том что после того как по сигналу функции TrailingCounting() функция MSL() передвигает как положено стоп. прога не обращая внимания на код советника продолжает двигать стоп за ценой вверх вниз хотя этого быть не должно т.к. вот эти условия для шортов:
а вот эти для лонгов:
явно предусматривают перемещение стопов только в сторону увеличения профита!!!
еще вызывает небольшое подозрение такая ситуация когда OrderModify() возвращает false а код ошибки при этом = 0 т.е. нет ошибки эт как? в течении 5 попыток OrderModify() не срабатывает и ошибки не возвращает
Print отрабатывает по условию, а Ваша функция MSL в любом случае
Надо бы вот так сделать:
Опять не видите разницу?
Рекомендуется ли всегда делать RefreshRates( ) перед выполнением торговых функций, MarketInfo( OrderSymbol( ), MODE_BID ), MarketInfo( OrderSymbol( ), MODE_ASK ) ?
Заметила, что без RefreshRates( ) зацикленные скрипты плохо получают котировки.
Из каких соображений следует выбирать время задержки для void Sleep( int milliseconds) ?
Спасибо.
При долговременной работе эксперта, когда ценовые данные меняются, необходимо вызывать перед торговой операцией. (Например, почитайте "MQL4: Ошибки исполнения")
Скрипты могут получить самые свежие ценовые данные ("свои" Open[], High[], Low[], Close[], Time[], Volume[], Bars, Bid, Ask) только с помощью RefreshRates. Получение отдельных данных при помощи MarketInfo, либо ценовых данных другого символа/периода не требует вызова функции RefreshRates.
Время задержки между чем и чем? Если между торговыми операциями, то органолептически, чтобы не досадить брокера слишком частыми запросами.
Большое спасибо за обстоятельный ответ.
Из каких соображений следует выбирать время задержки void Sleep( int milliseconds) для зацикленных скриптов ?
Зацикленные скрипты, продолжающие работать при переключении периода - это фантастика ? Очень бы хотелось.
Здесь есть нюансы. При смене таймфрейма зацикленный скрипт как можно скорее должен закончить свою работу и выполнить функцию deinit. После смены таймфрейма конечно же надо будет запустить функцию init и сразу start. С какого места, с начала или с прерванного? "И того, и другого, и можно без хлеба" (ц)
Скрипты изначально задумывались как одноразовые утилиты, всей рутинной работой должны заниматься эксперты.