class A { public:
int m;
A() { Alert("A"); m=1; }
};
class B { public:
B() { Alert("B"); static A a; Alert("a.m==",a.m); Alert("&a==",&a);}
};
B b;
voidOnStart()
{
};
При выполнении получаем следующий порядок алертов:
B a.m==0 &a==0 A
Т.е. статическая переменная ещё не инициализирована к моменту доступа к ней. Даже указатель нулевой. Её типа перескочили, и благополучно пошли дальше.
Такого безобразия быть не должно. Либо инициализируем переменную и идём дальше, либо прерываем компиляцию с ошибкой.
Здесь естественно она должна быть проинициализирована. А вот в случаях, если образуется рекурсия из взаимно ссылающихся классов, то надо стопорить компиляцию.
'??????????????????????????t????…' - identifier is too longmas.dat11
'' - unknown symbolmas.dat13015
Ваш скрипт должен сформировать файл mas.mqh, в котором будет размещаться массив типа uchar, содержащий байты ваших данных. Например, если файл размером три байта, содержимое файла mas.mqh должно быть следующим:
uchar mass[3] = {25, 127, 89};
Сгенерированный массив mass Вы и должны использовать в своей программе.
Вряд ли придётся считывать файл с диска десятки тысяч раз. Для этого существует дисковый кэш. Хотя я конечно не знаю, используется ли оно в данном конкретном случае, но надо проверить, сделать замеры, прежде чем изобретать костыли.
Пишу эксперт, вызывающий ex5 индикатор. Эксперт, в тестере стратегий работает правильно, но если запустить оптимизацию, агенты в конце прогона начинают крешится:
Если нажимаю кнопку закрыть, через некоторое время агент перезапускается и берет новый прогон, после чего снова вылетает.
Анализ логов ничего не дал:
NR 015:51:49.391 Tester register MQL5.community account and use MQL5 Cloud Network to speed up optimizations
RE 015:51:49.412 Tester Experts\PowerTrender.ex5 on RTS Splice,H1 from2016.01.0100:00 to 2016.08.0100:00
QJ 015:51:49.514 Tester RTS Splice: history data begins from2007.08.2300:00
QP 015:51:49.514 Tester complete optimization started
RF 015:51:49.514 Tester size of initial task batch is10
IS 015:51:49.523 Tester file cache Z:\MetaTrader 5\tester\cache\PowerTrender.RTS Splice.H1.2.xml found
HS 015:51:49.523 Tester file cache contains 18 records
CD 015:51:49.544 Core 1 agent process started
GD 015:51:49.544 Core 1 connecting to 127.0.0.1:3000
EQ 015:51:49.547 Core 2 agent process started
JI 015:51:49.547 Core 2 connecting to 127.0.0.1:3001
NN 015:51:49.549 Core 3 agent process started
PJ 015:51:49.549 Core 3 connecting to 127.0.0.1:3002
GK 015:51:49.552 Core 4 agent process started
FO 015:51:49.552 Core 4 connecting to 127.0.0.1:3003
OG 015:51:49.555 Core 5 agent process started
OS 015:51:49.555 Core 5 connecting to 127.0.0.1:3004
CD 015:51:49.558 Core 6 agent process started
DD 015:51:49.558 Core 6 connecting to 127.0.0.1:3005
OQ 015:51:49.560 Core 7 agent process started
QI 015:51:49.560 Core 7 connecting to 127.0.0.1:3006
EN 015:51:49.563 Core 8 agent process started
QJ 015:51:49.563 Core 8 connecting to 127.0.0.1:3008
DK 015:51:53.654 Core 5 connected
FR 015:51:53.685 Core 5 authorized (agent build 1375)
CH 015:51:53.740 Core 5 common synchronization completed
IN 015:51:54.152 Core 6 connected
OR 015:51:54.154 Core 2 connected
JJ 015:51:54.155 Core 6 authorized (agent build 1375)
FN 015:51:54.156 Core 7 connected
IO 015:51:54.158 Core 2 authorized (agent build 1375)
NI 015:51:54.163 Core 1 connected
LS 015:51:54.169 Core 7 authorized (agent build 1375)
JK 015:51:54.208 Core 6 common synchronization completed
GR 015:51:54.210 Core 2 common synchronization completed
HI 015:51:54.220 Core 1 authorized (agent build 1375)
QE 015:51:54.237 Core 7 common synchronization completed
KL 015:51:54.275 Core 1 common synchronization completed
JI 015:51:55.202 Core 8 connected
QS 015:51:55.205 Core 8 authorized (agent build 1375)
JE 015:51:55.223 Core 3 connected
HD 015:51:55.249 Core 3 authorized (agent build 1375)
KM 015:51:55.259 Core 2 connection closed
FH 015:51:55.265 Core 8 common synchronization completed
GP 015:51:55.272 Core 1 connection closed
IS 015:51:55.276 Core 4 connected
LJ 015:51:55.288 Core 4 authorized (agent build 1375)
GP 015:51:55.298 Core 3 common synchronization completed
QH 015:51:55.334 Core 4 common synchronization completed
KP 015:51:55.375 Core 7 connection closed
JO 015:51:55.403 Core 6 connection closed
GE 015:51:56.045 Core 8 connection closed
CP 015:51:56.107 Core 3 connection closed
ON 015:51:56.151 Core 4 connection closed
LE 015:52:02.092 Core 5 connection closed
CN 015:52:11.964 Core 1 agent process started
GJ 015:52:11.964 Core 1 connecting to 127.0.0.1:3000
FK 015:52:11.966 Core 2 agent process started
IO 015:52:11.966 Core 2 connecting to 127.0.0.1:3001
QH 015:52:11.969 Core 6 agent process started
RP 015:52:11.969 Core 6 connecting to 127.0.0.1:3005
GE 015:52:11.971 Core 7 agent process started
IE 015:52:11.971 Core 7 connecting to 127.0.0.1:3006
LQ 015:52:12.975 Core 3 agent process started
RI 015:52:12.975 Core 3 connecting to 127.0.0.1:3002
CN 015:52:12.979 Core 4 agent process started
JJ 015:52:12.979 Core 4 connecting to 127.0.0.1:3003
RK 015:52:12.983 Core 8 agent process started
FO 015:52:12.983 Core 8 connecting to 127.0.0.1:3008
GH 015:52:15.857 Core 2 connected
MP 015:52:15.864 Core 2 authorized (agent build 1375)
JJ 015:52:15.914 Core 2 common synchronization completed
EK 015:52:16.367 Core 1 connected
RR 015:52:16.375 Core 1 authorized (agent build 1375)
DF 015:52:16.385 Core 6 connected
LF 015:52:16.392 Core 6 authorized (agent build 1375)
LL 015:52:16.433 Core 1 common synchronization completed
JG 015:52:16.465 Core 6 common synchronization completed
GQ 015:52:16.922 Core 8 connected
OH 015:52:16.924 Core 8 authorized (agent build 1375)
DL 015:52:16.957 Core 7 connected
PQ 015:52:16.957 Core 3 connected
GH 015:52:16.967 Core 7 authorized (agent build 1375)
RQ 015:52:16.968 Core 3 authorized (agent build 1375)
FM 015:52:16.975 Core 8 common synchronization completed
LE 015:52:17.023 Core 3 common synchronization completed
DL 015:52:17.029 Core 7 common synchronization completed
DD 015:52:17.530 Core 6 connection closed
PR 015:52:17.566 Core 1 connection closed
JD 015:52:17.966 Core 4 connected
ID 015:52:17.969 Core 4 authorized (agent build 1375)
QM 015:52:17.971 Core 8 connection closed
PK 015:52:18.010 Core 4 common synchronization completed
EP 015:52:18.010 Core 3 connection closed
KO 015:52:18.025 Core 7 connection closed
GE 015:52:18.503 Core 2 connection closed
HM 015:52:18.971 Core 5 agent process started
HM 015:52:18.971 Core 5 connecting to 127.0.0.1:3004
OG 015:52:19.524 Core 4 connection closed
FP 015:52:21.647 Core 5 connected
FI 015:52:21.649 Core 5 authorized (agent build 1375)
NE 015:52:21.679 Core 5 common synchronization completed
GO 015:52:23.410 Core 5 connection closed
MH 015:52:33.652 Core 1 agent process started
RP 015:52:33.653 Core 1 connecting to 127.0.0.1:3000
KE 015:52:33.655 Core 6 agent process started
LE 015:52:33.655 Core 6 connecting to 127.0.0.1:3005
PR 015:52:33.658 Core 8 agent process started
DF 015:52:33.658 Core 8 connecting to 127.0.0.1:3008
HP 015:52:33.828 Tester file cache used 18 times
LG 015:52:33.828 Tester optimization finished, total passes 31
FP 015:52:33.828 Statistics optimization done in0 minutes 44 seconds
MD 015:52:33.828 Statistics local 13 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
ER 215:52:33.878 Core 1 failed to send stop command
FE 015:52:33.878 Core 1 connection closed
HN 215:52:33.928 Core 6 failed to send stop command
OH 015:52:33.928 Core 6 connection closed
EJ 215:52:33.978 Core 8 failed to send stop command
FL 015:52:33.978 Core 8 connection closed
DH 015:52:33.979 Tester 13 records written to file cache Z:\MetaTrader 5\tester\cache\PowerTrender.RTS Splice.H1.2.xml
EG 315:52:33.979 Tester stopped by user
Сигнатура ошибки следующая:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: metatester64.exe
Версия приложения: 5.0.0.1375
Отметка времени приложения: 00623e00
Имя модуля с ошибкой: StackHash_ef12
Версия модуля с ошибкой: 6.1.7601.17514
Отметка времени модуля с ошибкой: 4ce7c8f9
Код исключения: c0000374
Смещение исключения: 00000000000c40f2
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: ef12
Дополнительные сведения 2: ef1284acb2700557506bfd58d3b2b94d
Дополнительные сведения 3: e9c5
Дополнительные сведения 4: e9c5ba00b1c29dae6bd463df717d650f
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Попробовал заккоментировать создание хендла индикатора. Ошибка исчезла и эксперт отработал все прогоны нормально, хотя впустую.
Поэтому прежде чем обратиться в сервисдеск пишу сюда: может быть есть какая-то фишка при работе с индикаторами в тестере стратегий? Может быть надо где-то вызвать IndicatorRelease? В общем если кто-то что-то знает, как потенциально это можно исправить - напишите.
Пишу эксперт, вызывающий ex5 индикатор. Эксперт, в тестере стратегий работает правильно, но если запустить оптимизацию, агенты в конце прогона начинают крешится:
Если нажимаю кнопку закрыть, через некоторое время агент перезапускается и берет новый прогон, после чего снова вылетает.
Анализ логов ничего не дал:
Сигнатура ошибки следующая:
Попробовал заккоментировать создание хендла индикатора. Ошибка исчезла и эксперт отработал все прогоны нормально, хотя впустую.
Поэтому прежде чем обратиться в сервисдеск пишу сюда: может быть есть какая-то фишка при работе с индикаторами в тестере стратегий? Может быть надо где-то вызвать IndicatorRelease? В общем если кто-то что-то знает, как потенциально это можно исправить - напишите.
Лучше в сервисдеск со всеми подробностями, разберемся.
Серьёзные баги со статическими переменными. Рассмотрим такой код:
При выполнении получаем следующий порядок алертов:
B
a.m==0
&a==0
A
Т.е. статическая переменная ещё не инициализирована к моменту доступа к ней. Даже указатель нулевой. Её типа перескочили, и благополучно пошли дальше.
Такого безобразия быть не должно. Либо инициализируем переменную и идём дальше, либо прерываем компиляцию с ошибкой.
Здесь естественно она должна быть проинициализирована. А вот в случаях, если образуется рекурсия из взаимно ссылающихся классов, то надо стопорить компиляцию.
Как к советнику подключить файл с массивом?
Сначала скрипт записывает массив:
В советнике подключаю файл:
При компиляции, ошибки:
'??????????????????????????t????…' - identifier is too long mas.dat 1 1
'' - unknown symbol mas.dat 1 3015
Ваш скрипт должен сформировать файл mas.mqh, в котором будет размещаться массив типа uchar, содержащий байты ваших данных. Например, если файл размером три байта, содержимое файла mas.mqh должно быть следующим:
Сгенерированный массив mass Вы и должны использовать в своей программе.
Не думаю, в оптимизаторе файл придётся десятки тысяч раз открывать-читать-закрывать.
В режиме отладки на исторических данных MQLInfoInteger(MQL_VISUAL_MODE) всегда возвращает true.
Пишу эксперт, вызывающий ex5 индикатор. Эксперт, в тестере стратегий работает правильно, но если запустить оптимизацию, агенты в конце прогона начинают крешится:
Если нажимаю кнопку закрыть, через некоторое время агент перезапускается и берет новый прогон, после чего снова вылетает.
Анализ логов ничего не дал:
Сигнатура ошибки следующая:
Попробовал заккоментировать создание хендла индикатора. Ошибка исчезла и эксперт отработал все прогоны нормально, хотя впустую.
Поэтому прежде чем обратиться в сервисдеск пишу сюда: может быть есть какая-то фишка при работе с индикаторами в тестере стратегий? Может быть надо где-то вызвать IndicatorRelease? В общем если кто-то что-то знает, как потенциально это можно исправить - напишите.
Пишу эксперт, вызывающий ex5 индикатор. Эксперт, в тестере стратегий работает правильно, но если запустить оптимизацию, агенты в конце прогона начинают крешится:
Если нажимаю кнопку закрыть, через некоторое время агент перезапускается и берет новый прогон, после чего снова вылетает.
Анализ логов ничего не дал:
Сигнатура ошибки следующая:
Попробовал заккоментировать создание хендла индикатора. Ошибка исчезла и эксперт отработал все прогоны нормально, хотя впустую.
Поэтому прежде чем обратиться в сервисдеск пишу сюда: может быть есть какая-то фишка при работе с индикаторами в тестере стратегий? Может быть надо где-то вызвать IndicatorRelease? В общем если кто-то что-то знает, как потенциально это можно исправить - напишите.
Когда в MT4 появится возможность из журнала копировать строку и не получать при вставке другую кодировку:
2016.08.03 00:03:36.699 2013.04.26 10:15 Kamikadze_MA_V_04_42_Fibo_05_Regressor_T_K GBPUSD,M15: Magic=111Îðäåð 322 SELLSTOP íå ìîäèôèöèðîâàí. Bid (1.5448) ìåíüøå öåíû îòêðûòèÿ (1.5498)