Ошибки, баги, вопросы - страница 1400

 

После обновления на новый билд (1178), при загрузке эксперта на график получаю вот такую ошибку в журнал с выгрузкой программы с графика:

2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        00: 0x00000000028E1F21
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F37 C6467000          mov        byte [rsi+0x70], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F30 C686AD02000000    mov        byte [rsi+0x2ad], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F2E 7CA0              jl         0x28e1ed0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F2C 39C3              cmp        ebx, eax
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F26 8B868B000000      mov        eax, [rsi+0x8b]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028E1F24 FFC3              inc        ebx
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)           crash -->  00000000028E1F21 FF5728            call       qword near [rdi+0x28]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        Access violation at 0x00000000028E1F21 read to 0x0000000D5D01E928 in 'D:\#MetaTrader\MetaTrader 5 Test\MQL5\Experts\#TestLibrary\Article02\TestLibrary.ex5'

//---

Насколько выяснил такая ситуация возникает при попытке скрыть графические объекты используя метод CChartObject::Timeframes(OBJ_NO_PERIODS).

P.S. Хотя нет, проблема скорее всего, по какой-то другой причине. Пытаюсь локализовать, продолжу в сервисдеске, открыл заявку.

 
transcendreamer:
автор уже в курсе и усиленно думает над этим как так могло получиться

автор усиленно подумал и исправил этот момент, появится в следующем обновлении

виноваты были неучтенные особенности брокера 

 
build 1178. Ошибка компиляции: 'B' - template mismatch
class A { template<typename T> A( T ) {} };
class B;
class B {};
а раньше все было нормально
 
A100:
build 1178. Ошибка компиляции: 'B' - template mismatch
а раньше все было нормально
Спасибо, проверим.
 
Почему событие OnTimer не запускается в индикаторах, вызываемых через iCustom?
 
Ilya Malev:
Почему событие OnTimer не запускается в индикаторах, вызываемых через iCustom?
Архитектурно событие таймера является событием чарта, соответственно в данном случае индикаторы его получать не могут.
 
Anton:
Архитектурно событие таймера является событием чарта, соответственно в данном случае индикаторы его получать не могут.
Как программно заставить индикатор, вызываемый через iCustom, отрисоваться (то есть спровоцировать вызов OnCalculate), в случае отсутствия поступления тиков (например, в выходные)?
 
Если в этом индикаторе в свою очередь вызываются другие индикаторы, то при первом автоматическом вызове OnCalculate сразу после выхода из OnInit данные этих индикаторов не будут рассчитаны, и более того, индикатор не сможет "подождать" их просчета не выходя из OnCalculate. А следующего вызова OnCalculate не будет до конца выходных, когда начнутся первые тики. При этом ни OnTimer, ни OnChartEvent в таком индикаторе не работают, чтобы вызвать перерисовку когда данные будут получены. В итоге единственный способ который я вижу - через DLL вызывать из контекстного меню окна пункт "Обновить" на графике - не думаю, что разработчики планировали именно этот способ для нормальной работы индикаторов в МТ5. Иначе пользователю придется куковать у графика нажимая эту кнопку, пока индикатор не отрисуется, что вряд ли его обрадует.
 
Ilya Malev:
Если в этом индикаторе в свою очередь вызываются другие индикаторы, то при первом автоматическом вызове OnCalculate сразу после выхода из OnInit данные этих индикаторов не будут рассчитаны, и более того, индикатор не сможет "подождать" их просчета не выходя из OnCalculate. А следующего вызова OnCalculate не будет до конца выходных, когда начнутся первые тики. При этом ни OnTimer, ни OnChartEvent в таком индикаторе не работают, чтобы вызвать перерисовку когда данные будут получены. В итоге единственный способ который я вижу - через DLL вызывать из контекстного меню окна пункт "Обновить" на графике - не думаю, что разработчики планировали именно этот способ для нормальной работы индикаторов в МТ5. Иначе пользователю придется куковать у графика нажимая эту кнопку, пока индикатор не отрисуется, что вряд ли его обрадует.

если для МТ4:

так не получится? https://www.mql5.com/ru/code/11678

ChartRefresh
ChartRefresh
  • голосов: 11
  • 2014.08.13
  • Alexandr Bryzgalov
  • www.mql5.com
Скрипт для принудительно обновления текущего графика.
 
Alexandr Bryzgalov:
так не получится? https://www.mql5.com/ru/code/11678

Этот скрипт для MetaTrader 4 :)

В МТ4 как раз все данные предупредительно рассчитываются терминалом до получения их в программах mql4

Причина обращения: