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

 
stringo:
А Вы можете практически обосновать выражение x = x++; Чего сказать-то хотели? Почему не использовать инкремент без последующего присвоения x++; Как это обычно используется.
Вышло случайно - не каждый день пишешь на C-подобных языках, забыл, что есть просто x++. Ожидал, что будет аналог x = x + 1. Результат получился забавный...
 
GODZILLA:

Да нет! Ну нет данных, ещё раз их запросил... с пятого запроса получил и поехал, а тут молчит и усё!!

 

Для экспертов и пользовательских индикаторов лучше использовать событийную модель обработки. Если при обработке события OnTick() или OnCalculate() не удалось получить все необходимые данные требуемой таймсерии, то следует выйти из обработчика события, рассчитывая на появление доступа к данным при следующем вызове обработчика. 

я тоже это читал и так считал, но вот что дает, например, такой код:

int handle;
datetime inittime;
void OnInit(){

  
  handle = iCustom( "GBPUSD", PERIOD_M2, "examples\ATR", 14 );
  Print("Handle=", handle);
  inittime = TimeCurrent();
}
bool isfirst = true;
void OnTick()
  {
    double val[1];
    int start_pos = 1;
    if( isfirst || TimeCurrent()-5*60 > inittime ){
      int n = CopyBuffer( handle, 0, start_pos , 1, val );
      Print("Получено n=", n, 
        (n==-1)?" ошибка при получении данных из индикатора, ":" нет ошибки при получении данных из индикатора",
        " значение ", val[0] );
    }
    isfirst = false; 
  }

 

жду 5 минут, после этого на каждом тике получаю значение индикатора( часть логов вырезал ):

2010.10.14 15:47:09 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:47:03 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:10 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:05 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:02 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:01 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:45:00 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:58 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:54 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:08 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:27 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:25 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:24 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:23 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:04 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:43:01 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:59 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:51 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:47 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:43 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:42:04 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0006792857142856462
2010.10.14 15:41:25 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:41:22 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:41:01 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:59 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:57 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:54 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:41 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:40 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:38 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:36 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:26 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007028571428570865
2010.10.14 15:40:18 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:14 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:13 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:07 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:04 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:59 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:56 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:54 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:52 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:51 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:50 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:49 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:46 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:43 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:42 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:39:39 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007364285714285289
2010.10.14 15:34:38 tstincl (EURJPY,M1) Получено n=1 нет ошибки при получении данных из индикатора значение 0.0007357142857142544
2010.10.14 15:34:35 tstincl (EURJPY,M1) Handle=10

которое должно менятся каждые две минуты, как видим гдето с 45 минуты новые бары на м2 недоступны, ни после первого, ни после второго, ни после десятого к ним обращения.

может и у Вас что то похожее?

в этой связи вопрос к разработчикам: как правильно вызывать CopyBuffer? Каждый раз перед ее вызовом синхронизировать таймсерию? тогда нужно знать к какой таймсерии и символу относится handle инидкатора, чтобы это знать, нужно где то хранить и передавать эти сведения во все места где вызывается CopyBuffer:  код усложняется и загромождается. 

 

Вопрос по тестеру.

Как часто сохраняются результаты проходов тестера?

По журналу видно, что если результаты хранятся в кэше, они берутся оттуда без перерасчета, экономя время. Столкнулся с ситуацией, когда в ходе достаточно длительной оптимизации компьютер аварийно выключился (причина не важна). При следующем запуске оптимизации того же эксперта с теми же параметрами оказалось, что не сохранилось ничего - время потрачено зря. Есть конечно подстраховка - периодически останавливать оптимизацию и перезапускать заново, но это не очень удобно. Build 342.

 
Ashes:

Вопрос по тестеру.

Как часто сохраняются результаты проходов тестера?

По журналу видно, что если результаты хранятся в кэше, они берутся оттуда без перерасчета, экономя время. Столкнулся с ситуацией, когда в ходе достаточно длительной оптимизации компьютер аварийно выключился (причина не важна). При следующем запуске оптимизации того же эксперта с теми же параметрами оказалось, что не сохранилось ничего - время потрачено зря. Есть конечно подстраховка - периодически останавливать оптимизацию и перезапускать заново, но это не очень удобно. Build 342.

Результаты оптимизации записываются в файл по окончании оптимизации. При аварийном отключении результаты не запоминаются.

Мы подумаем, что можно сделать. 

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo:

Результаты оптимизации записываются в файл по окончании оптимизации. При аварийном отключении результаты не запоминаются.

Мы подумаем, что можно сделать. 

Хорошо бы.

Попутно, хотелось бы сохранять результаты оптимизации в каком-либо пригодном для обработки виде, а не только картинки. Или я не нашел заветной кнопки?

 
Ashes:

Хорошо бы.

Попутно, хотелось бы сохранять результаты оптимизации в каком-либо пригодном для обработки виде, а не только картинки. Или я не нашел заветной кнопки?

tester\cache\<ea_name>.<symbol>.<period>.<mode>.xml
 
Ashes:

Хорошо бы.

Попутно, хотелось бы сохранять результаты оптимизации в каком-либо пригодном для обработки виде, а не только картинки. Или я не нашел заветной кнопки?

и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.
 

sergey1294:
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

Просто нажимаете кнопку start.
 
stringo:
tester\cache\<ea_name>.<symbol>.<period>.<mode>.xml

И еще статья MQL5: Руководство по тестированию и оптимизации советников:

После окончания оптимизации вы можете заглянуть в папку "MQL5\Tester\cache", где вы обнаружите файл cci_ma_ea.EURUSD.H1.2.xml, в котором содержатся численные значения всех параметров и характеристик, полученных в результате оптимизации.

Результаты оптимизации сохраняются в файле: ExpertName.SYMBOL.PERIOD.GenerationMode.xml, где:

  • ExpertName - наименование оптимизируемого эксперта;
  • SYMBOL - символ;
  • PERIOD - таймфрейм (M1,H1,...);
  • GenerationMode - режим генерации тиков (0 - "Каждый тик", 1 - "OHLC на M1", 2 - "Только цены открытия".

Этот файл можно открыть в Excel для последующего анализа.

 
stringo:
Просто нажимаете кнопку start.
То есть тестер должен автоматически загрузить список прошлых прогонов во вкладку "Результаты оптимизации" и продолжить оптимизацию с того места где остановился?
Причина обращения: