Здравствуйте. Мой индикатор не проходит валидацию в Маркете по какой-то странной причине. Началось с того, что валидация ругалась на array
out of range, в модуле PeakZigZag.mqh, там где раньше у меня при отладках и при работе с данным модулем всегда было всё в порядке.
После вылетания валидации с array out of range я прописал проверку длины массива следующим образом:
То есть, видно что, если
то сразу функция завершается и доступ к массиву peaks.data
исключён. Почему же при следующей валидации мне всё равно выдало array
out of range?
Я исключил доступ к массиву но управление всё равно передаётся к нему и проверка ругается.
Просто раньше у меня данный модуль использовался на одном символе и одном таймфрейме. А сейчас он работает в мультивалютном, мультисимвольном
индикаторе. Думаю, данный баг возникал из-за того, что история иногда синхронизируется не на всех символах и таймфреймах...
Просто раньше у меня данный модуль использовался на одном символе и одном таймфрейме. А сейчас он работает в мультивалютном, мультисимвольном индикаторе. Думаю, данный баг возникал из-за того, что история иногда синхронизируется не на всех символах и таймфреймах...
При чем раньше вроде все работало. Но спустя 10 обновлений , перестало. И вот теперь пытаюсь сравнить коды и найти, где я допустил ошибку. Потому что история вроде у всех загружается нормально и мультивалбтники работают нормально.
Vladislav Andruschenko: Я тоже бьюсь над
проблемой мультивалютного эксперта и историей.
При чем раньше вроде все работало. Но спустя 10 обновлений , перестало. И вот теперь пытаюсь сравнить коды и найти, где я допустил
ошибку. Потому что история вроде у всех загружается нормально и мультивалбтники работают нормально.
Иногда ошибка глупая и по не внимательности.
Попробуйте:
if(Bars(symbol, timeframe) == 0) { // история не синхронизирована// 1. исправление данных (если нужно)// 2. выход
}
Здравствуйте. Написал мультивалютный, мультисимфольный индикатор для MT5. Всё работает как надо. Попробовал портировать на МТ4. Данный индикатор у
меня есть и для этого терминала, только мультисимвольная, мультитаймфреймная часть отсутствует. Вот её я и решил портировать на MQL4.
Вроде получилось, но только по началу. Вот такой дополнительный функционал получается в основном индикаторе на MT4:
По клику мыши на соответствующей пиктограмме индикатор меняет символ и таймфрейм чарта на соответствующий, с помощью
функции ChartSetSymbolPeriod(). Щелкаю по серой пиктограмме, в виде песочных часов (это значит, что бары не прогружены, нет
синхронизации но данному символу и таймфрейму) и индикатор вылетает с "Access violation read to 0xАдрес". Данного бага в MQL5 программе, с
которой сделан порт, я не наблюдал. Почему же он возникает в портированной версии?
И главное, видимых причин для AV в журнале нет. Было бы, например, array out of range или invalid pointer какой-нибудь... Но нет. Только
Access violation. При нормальном запуске (запуск терминала или бросание индикатора
на график) индикатор отлично стартует. Но когда щелкаю по пиктограмме, то AV и всё. Может быть ChartSetSymbolPeriod()
инициирует создание индикатора в MT4 не так как обычно? Потому как простая смена таймфрейма, а также смена символа чарта не вызывает ничего
подобного и индикатор продолжает работать. Но стоит прибегнуть к ChartSetSymbolPeriod() и инициировать смену символа и таймфрейма с её
помощью, как тут же AV.
Здравствуйте. Мой индикатор не проходит валидацию в Маркете по какой-то странной причине. Началось с того, что валидация ругалась на array out of range, в модуле PeakZigZag.mqh, там где раньше у меня при отладках и при работе с данным модулем всегда было всё в порядке. После вылетания валидации с array out of range я прописал проверку длины массива следующим образом:
То есть, видно что, если
то сразу функция завершается и доступ к массиву peaks.data исключён. Почему же при следующей валидации мне всё равно выдало array out of range?
Я исключил доступ к массиву но управление всё равно передаётся к нему и проверка ругается.а может там 0-1 = -1? отрицательный элемент массива?
а может там 0-1 = -1? отрицательный элемент массива?
И такое может быть. Сейчас проверю.
а может там 0-1 = -1? отрицательный элемент массива?
Сделал следующим образом:
Работает.
Просто раньше у меня данный модуль использовался на одном символе и одном таймфрейме. А сейчас он работает в мультивалютном, мультисимвольном индикаторе. Думаю, данный баг возникал из-за того, что история иногда синхронизируется не на всех символах и таймфреймах...
Сделал следующим образом:
Работает.
Просто раньше у меня данный модуль использовался на одном символе и одном таймфрейме. А сейчас он работает в мультивалютном, мультисимвольном индикаторе. Думаю, данный баг возникал из-за того, что история иногда синхронизируется не на всех символах и таймфреймах...
Я тоже бьюсь над проблемой мультивалютного эксперта и историей.
Попробуйте:
Попробуйте:
В рабочих программах (а не учебных примерах) это не предел :)
подписался до сигнала, но MQL5.com не корректно копирует сделки, что делать? (вместо 0,02 копирует 0,01)
подписался до сигнала, но MQL5.com не корректно копирует сделки, что делать? (вместо 0,02 копирует 0,01)
1. прочитать справочную тему FAQ по сервису Сигналы
2. обязательно читать все сообщения сервиса Сигналы во вкладке терминала "Журнал".Здравствуйте. Написал мультивалютный, мультисимфольный индикатор для MT5. Всё работает как надо. Попробовал портировать на МТ4. Данный индикатор у меня есть и для этого терминала, только мультисимвольная, мультитаймфреймная часть отсутствует. Вот её я и решил портировать на MQL4. Вроде получилось, но только по началу. Вот такой дополнительный функционал получается в основном индикаторе на MT4:
По клику мыши на соответствующей пиктограмме индикатор меняет символ и таймфрейм чарта на соответствующий, с помощью функции ChartSetSymbolPeriod(). Щелкаю по серой пиктограмме, в виде песочных часов (это значит, что бары не прогружены, нет синхронизации но данному символу и таймфрейму) и индикатор вылетает с "Access violation read to 0xАдрес". Данного бага в MQL5 программе, с которой сделан порт, я не наблюдал. Почему же он возникает в портированной версии?
И главное, видимых причин для AV в журнале нет. Было бы, например, array out of range или invalid pointer какой-нибудь... Но нет. Только Access violation. При нормальном запуске (запуск терминала или бросание индикатора на график) индикатор отлично стартует. Но когда щелкаю по пиктограмме, то AV и всё. Может быть ChartSetSymbolPeriod() инициирует создание индикатора в MT4 не так как обычно? Потому как простая смена таймфрейма, а также смена символа чарта не вызывает ничего подобного и индикатор продолжает работать. Но стоит прибегнуть к ChartSetSymbolPeriod() и инициировать смену символа и таймфрейма с её помощью, как тут же AV.