2010.01.31 12:19:02 DemarkTrendLines (GBPUSD,D1) Access violation write to 0xBFF00000 in 'F:\metatrader52\MQL5\Indicators\DemarkTrendLines.ex5'
выполнение скрипта
ENUM_TIMEFRAMES TFMigrate(int tf) { switch(tf) { case 0: return(PERIOD_CURRENT); case 1: return(PERIOD_M1); case 5: return(PERIOD_M5); case 15: return(PERIOD_M15); case 30: return(PERIOD_M30); case 60: return(PERIOD_H1); case 240: return(PERIOD_H4); case 1440: return(PERIOD_D1); case 10080: return(PERIOD_W1); case 43200: return(PERIOD_MN1); case 2: return(PERIOD_M2); case 3: return(PERIOD_M3); case 4: return(PERIOD_M4); case 6: return(PERIOD_M6); case 10: return(PERIOD_M10); case 12: return(PERIOD_M12); case 16385: return(PERIOD_H1); case 16386: return(PERIOD_H2); case 16387: return(PERIOD_H3); case 16388: return(PERIOD_H4); case 16390: return(PERIOD_H6); case 16392: return(PERIOD_H8); case 16396: return(PERIOD_H12); case 16408: return(PERIOD_D1); case 32769: return(PERIOD_W1); case 49153: return(PERIOD_MN1); default: return(PERIOD_CURRENT); } } double iHigh(string symbol,int tf,int index){ if(index < 0) return(-1); double Arr[]; ENUM_TIMEFRAMES timeframe=TFMigrate(tf); if(CopyHigh(symbol,timeframe, index, 1, Arr)>0) return(Arr[0]); else return(-1); } double High( int i ){ return( iHigh( NULL, 0, i ) ); } void OnStart(){ for(int i=10; i>0; i--){ Print( "high=", High(i) ); } }
приводит к крешу терминала
выполнение скрипта
приводит к крешу терминала
Сообщите дополнительные сведения, пожалуйста. На Windows XP с терминалом билд 242 креш не воспроизводится.
билд, скачанный по ссылке, указанной в посте:
Alexander 2010.01.29 18:43 #
MetaTrader 5 Client Terminal build 242
в ветке https://www.mql5.com/ru/forum/23/page3
по кнопке about дает
при старте терминала попытался скачать билд 242, выдал ошибку, больше попыток не делает.
после замены
в скрипте строки
double High( int i ){ return( iHigh( NULL, 0, i ) ); }
на
double High( int i ){ return( iHigh( Symbol(), 0, i ) ); }
все работает нормально, в том числе ушла ошибка, указанная в первом посте.
может быть я и не прав( в справке не сказано, что можно передавать NULL ) в функцию CopyHigh, но это не должно приводить к крешу.
в отладчике
это выглядит так:
при вызове функции iHigh передаются параметры
NULL, 0, i
где i == 10
в теле iHigh получает параметры см. Expression отладчика:
NULL, 10, 0
как так?
![Список изменений в билдах MetaTrader 5 Client Terminal Список изменений в билдах MetaTrader 5 Client Terminal](/i/community/logo_mql5_small.png)
- www.mql5.com
в 242 билде конструкция
double High( int i ){ return( iHigh( NULL , 0, i ) );
работает, возвращает, как и ожидалось, значения для символа графика, на котором исполняется скрипт.
тему можно сносить
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
билд 240, при навешивании индикатора на график выдается сообщение
2010.01.31 12:19:02 DemarkTrendLines (GBPUSD,D1) Access violation write to 0xBFF00000 in 'F:\metatrader52\MQL5\Indicators\DemarkTrendLines.ex5'
, что это значит?
в тексте есть строка:
printf( "for shift = %i", shift );
если ее закомментировать, то ошибка исчезает.