то получите подробное уведомление на случай, если произошла ошибка при выполнении ArrayResize или ArrayCopy.
Это позволяет увидеть сложно идентифицируемые проблемы при передаче информации через массивы, но еще более важно - получить сообщение, что советник остановился из-за array out of range (не по вине автора советника). Например, из-за нехватки памяти или другого сбоя. Т.е. Вы будете сразу знать, что произошла нештатная остановка советника, а не случайно заметите это через несколько часов.
Библиотека HistoryTicks уже содержит эту строку (доп. прописывать не нужно), т.к. основная цель инструментария - боевые советники на реальных счетах.
то получите подробное уведомление на случай, если произошла ошибка при выполнении ArrayResize или ArrayCopy.
Это позволяет увидеть сложно идентифицируемые проблемы при передаче информации через массивы, но еще более важно - получить
сообщение, что советник остановился из-за
array out of range (не по вине автора советника). Например, из-за нехватки памяти или другого сбоя. Т.е. Вы
будете сразу знать, что произошла нештатная остановка советника, а не случайно заметите это через несколько часов.
В журнале Терминала была только такая запись в другом проекте.
MemoryException 4471871064 bytes not available, 0 heapmin result
Благодаря вставленной строке, в пользовательском журнале стали видны подробности произошедшего
Alert: ThirdPartyTicks - ERROR in int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint)! - see the logs.
int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 64: ::MQLInfoString(MQL_PROGRAM_PATH) = C:\Program Files\ICMarkets - MetaTrader 5\MQL5\Scripts\fxsaber\ThirdPartyTicks.ex5
PROGRAM_SCRIPTint ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 66: typename(T) = MqlTickint ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 67: sizeof(T) = 60int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 68: Res = -1int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 69: NewSize = 129140int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 70: Reserve = 74402041int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 71: ::ArraySize(Array) = 129139int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 72: PrevSize = 129139int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 73: NewSize*sizeof(T) = 7748400int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 74: PrevSize*sizeof(T) = 7748340int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 75: Reserve*sizeof(T) = 169155164int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 76: ::GetLastError() = 4004int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 77: DuringTime = 1195int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 79: ::TerminalInfoInteger(TERMINAL_BUILD) = 2138int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 80: ::TerminalInfoInteger(TERMINAL_DISK_SPACE) = 6344int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 81: ::TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL) = 16301int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 82: ::TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE) = 31530int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 83: ::TerminalInfoInteger(TERMINAL_MEMORY_TOTAL) = 32602int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 84: ::TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1072int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 86: ::ChartID() = 132088214536525342int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 87: ::PeriodSeconds() = 60int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 88: ::Symbol() = EURUSD
int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 89: ::TimeCurrent() = 2019.09.1019:49:15int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 90: ::TimeLocal() = 2019.09.1019:49:12int ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 94: ::SymbolInfoTick(_Symbol,Tick) = true
time = 2019.09.1019:49:13.178 bid = 1.10436 ask = 1.10439 last = 0.00000 volume = 02TICK_FLAG_BIDint ARRAYRESIZE::ArrayResize_Real<MqlTick>(MqlTick&[],constint,constint), Line = 97: ::ChartSetInteger(0,CHART_BRING_TO_TOP,true) = true
array out of range in 'Array.mqh' (11,10)
Два терминала подключены к одному и тому же счету. На обоих запущен индикатор HistoryTicks. Соответствующие файлы с собранными тиками
отличаются: то в одном, то в другом попадается отсутствие каких-нибудь тиков.
Получается, OnCalculate вызывается не на каждом тике в MT4.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
то получите подробное уведомление на случай, если произошла ошибка при выполнении ArrayResize или ArrayCopy.
Это позволяет увидеть сложно идентифицируемые проблемы при передаче информации через массивы, но еще более важно - получить сообщение, что советник остановился из-за array out of range (не по вине автора советника). Например, из-за нехватки памяти или другого сбоя. Т.е. Вы будете сразу знать, что произошла нештатная остановка советника, а не случайно заметите это через несколько часов.
Библиотека HistoryTicks уже содержит эту строку (доп. прописывать не нужно), т.к. основная цель инструментария - боевые советники на реальных счетах.
Привет, fxsaber,
Когда я компилирую HistoryTicks_Example с MT4, он компилируется нормально. Однако при компиляции с MT5 (2085) я получаю следующие ошибки
Когда я компилирую HistoryTicks_Example с MT4, он компилируется нормально. Однако при компиляции с MT5 (2085) я получаю следующие ошибки
Версия HistoryTicks, которую использую, значительно отличается от выложенной в паблик. Как руки дойдут, обновлю.
ЗЫ Библиотека все же в первую очередь предназначена для MT4.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: HistoryTicks
fxsaber, 2018.12.10 13:55
Если в любом MT4/5-советнике в начале прописать такую строкуто получите подробное уведомление на случай, если произошла ошибка при выполнении ArrayResize или ArrayCopy.
Это позволяет увидеть сложно идентифицируемые проблемы при передаче информации через массивы, но еще более важно - получить сообщение, что советник остановился из-за array out of range (не по вине автора советника). Например, из-за нехватки памяти или другого сбоя. Т.е. Вы будете сразу знать, что произошла нештатная остановка советника, а не случайно заметите это через несколько часов.
В журнале Терминала была только такая запись в другом проекте.
Благодаря вставленной строке, в пользовательском журнале стали видны подробности произошедшего
Сегодня после обновления MT4 (сборка 1210) сама ошибка компилятора как в посте №13. Для тех, у кого такая же проблема, решение можно скачать здесь:
Форум по торговле, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: TradeTransaction
fxsaber , 2019.07.09 13:01
Обойдя ошибку, замените Include \ fxsaber \ TradeTransactions \ Convert.mqh на прикрепленный.
Версия HistoryTicks, которую использую, значительно отличается от выложенной в паблик. Как руки дойдут, обновлю.
Обновил.
Столкнулся с такой ситуацией.
Два терминала подключены к одному и тому же счету. На обоих запущен индикатор HistoryTicks. Соответствующие файлы с собранными тиками отличаются: то в одном, то в другом попадается отсутствие каких-нибудь тиков.
Получается, OnCalculate вызывается не на каждом тике в MT4.
А не пробовали это проверить на MT5? Оно тоже страдает пропуском тиков? Или это только проблема 4 версии?
Не помню уже. Но почему-то осталось впечатление, что MT5-индикаторы не пропускают.