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

 
stringo:

И тик по одному инструменту всегда будет раньше, чем тик по другому инструменту, даже если они помечены одним и тем же временем.

спасибо за объяснение. всё понятно... буду оптимизировать по одному инструменту,
а потом перебирать все используемые инструменты и тестовыми прогонами определять лучший результат.
 
crOss:
спасибо за объяснение. всё понятно... буду оптимизировать по одному инструменту,
а потом перебирать все используемые инструменты и тестовыми прогонами определять лучший результат.

На опыте мультиков убедился что оптимальным вариантом будет тот что использует советник,

если расчет входа в торги идет с использованием цен открытия - то и тест должен по ним быть,

если все тики - то и тики, т.е. как собираешься торговать так и тестируй,


а если уж совсем в лом ждать то можно только цены открытия но тогда на истории нужно просматривать все

просадки большие т.к. может быть упущен момент

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
crOss:
буду оптимизировать по одному инструменту,
а потом перебирать все используемые инструменты и тестовыми прогонами определять лучший результат.

Не советую. Это будет не система, а черный ящик.

Отвяжитесь от тиков конкретного инструмента (OnTick) - это же мультивалютник! Работайте по таймеру или ловите момент образования бара на всех рабочих инструментах, это будет надежнее.

 
crOss:
буду оптимизировать по одному инструменту,
а потом перебирать все используемые инструменты и тестовыми прогонами определять лучший результат.

Не советую. Это будет не система, а черный ящик.

Отвяжитесь от тиков конкретного инструмента (OnTick) - это же мультивалютник! Работайте по таймеру или ловите момент образования бара на всех рабочих инструментах, это будет надежнее.


================================================================

Поддерживаю, но не обязательно на всех инструментах, достаточно одного, т.к. время везде

одинаковое ...мин 00сек а самый простой способ определения нового бара: (сам додумал очень простой и эффективный)

//--- в глобальной переменной
datetime time;

//--- в OnTick() 
    datetime net[1];
    CopyTime (Symbol1, NULL, 0, 1, net);
    if (net[0]>time)
     {
      time = net[0];
      ...
     }
и конструкцию в OnTick засунуть туда где собсно и нужно этот новый бар
 

Что означают числа

2011.08.18 21:43:08     Test (EURUSD,M15)       fabs((temp=-1.#IND)-(et=-1)) = f=1.#QNAN;
-1.#IND  ?????
1.#QNAN  ?????

И как избавиться от этой ошибки ????

По задумке temp должен быть равен -1.0 

ЗЫ у меня есть проверка на равенство нулю, но не знаю как проверить равенство этому -1.#IND

 
Urain:

Что означают числа

И как избавиться от этой ошибки ????

По задумке temp должен быть равен -1.0 

ЗЫ у меня есть проверка на равенство нулю, но не знаю как проверить равенство этому -1.#IND

На пальцах. Указанные числа - результат некой некорректной математической операции. Можно поиском посмотреть. У меня, в частности, значение #IND возникало в результате взятия корня из отрицательного числа. В свою очередь, отрицательное число под корнем образовывалось из-за погрешности вычислений разницы чисел типа double. Лечится нормализацией разницы.

Также проблемы могут быть при взятии логарифма из отрицательного числа, деления нуля на ноль и т.д. 

В Вашем случае "-1.#IND" - это может быть что-то типа "-1"+"#IND"

 
Im_hungry:

Отвяжитесь от тиков конкретного инструмента (OnTick) - это же мультивалютник! Работайте по таймеру или ловите момент образования бара на всех рабочих инструментах, это будет надежнее.

================================================================

Поддерживаю, но не обязательно на всех инструментах, достаточно одного


Недостаточно. Нужно дождаться бара именно на всех рабочих инструментах.
 
Renat:

Мы специально сделали отсечку последней даты, чтобы не было вопросов "почему два одинаковых прохода дали разные результаты". К сожалению, это массовая ситуация, влияющая также на все результаты оптимизации. От включения счета до последней минуты все получат слишком много проблем.

Про это уже были разговоры, и до сих пор происходит "борьба с ветряными мельницами". Нет такой проблемы, о которой Вы говорите. Пользователь сам в состоянии указать последнюю дату с отсечкой, если ему нужна отсечка. А если он хочет тестироваться по всем доступным данным, то указание любого времени, заведомо большего текущего, должно захватывать все имеющиеся данные. Это фактически и есть та опция, которую Вы "возможно" собираетесь делать в будущем - а она уже есть в программе, не нужно только искусственно мешать работать имеющимся опциям.
 
Yedelkin:

На пальцах. Указанные числа - результат некой некорректной математической операции. Можно поиском посмотреть. У меня, в частности, значение #IND возникало в результате взятия корня из отрицательного числа. В свою очередь, отрицательное число под корнем образовывалось из-за погрешности вычислений разницы чисел типа double. Лечится нормализацией разницы.

Также проблемы могут быть при взятии логарифма из отрицательного числа, деления нуля на ноль и т.д. 

В Вашем случае "-1.#IND" - это может быть что-то типа "-1"+"#IND"

Что такое #IND я знаю меня смутило -1.#IND.

Спасибо за ответ, да видимо где то взятие корня из отрицательного числа.

 
marketeer:
Недостаточно. Нужно дождаться бара именно на всех рабочих инструментах.

Приведи резкие доводы, я проверял на своем советнике - что по 2 парам (мультик) что

по одной результат теста с 2000г. на всех тиках ничем не отличается как и по 1 паре,

причем советники с разной стратегией!!!


А вот если расчет идет не на тек. баре а на истории 2 и более баров (хоть миллион)

то там уже необходим поиск бара по истории!

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