Пара вопросов по тестированию эксперта

 
1) Правильно ли я понимаю, что тестер в режиме "все тики", при нехватке данных более мелкого уровня, показывает наихудшие возможные результаты? тоесть я имею бар low 1.5 high 2.0 и стоп лосс в 30п., buy order открылся на 1.9. Тестер должен показать закритие по стоп лоссу, верно?

2) Есть проблема с открытием нескольких ордеров одновременно. Эксперт контролирует время после закрытия предыдущего ордера с помощью:
if (OrderSelect(OrderTicket(),SELECT_BY_TICKET,MODE_HISTORY)==true)
{
datetime ctm=OrderCloseTime();
if(ctm>0)
{
if((CurTime()-ctm)<14400)
{
return(0);
}
}
}

и обычно вроде нормально работает, но на некоторых свечах показывает открытие нескольких ордеров. В чем может быть проблема такого поведения?
 
1) Правильно ли я понимаю, что тестер в режиме "все тики", при нехватке данных более мелкого уровня, показывает наихудшие возможные результаты?


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

то есть я имею бар low 1.5 high 2.0 и стоп лосс в 30п., buy order открылся на 1.9. Тестер должен показать закритие по стоп лоссу, верно?
нет еще имеет значение время открытия позиции и установки стопа, а также характер движения цены внутри бара. Поясню если цена в начале бара была у лоу, а потом двигалась только по направлению к хай то стопа не будет если после открытия позы цена не опускалась на 30 пунктов

2) Есть проблема с открытием нескольких ордеров одновременно. Эксперт контролирует время после закрытия предыдущего ордера с помощью:
if (OrderSelect(OrderTicket(),SELECT_BY_TICKET,MODE_HISTORY)==true)
        {
         datetime ctm=OrderCloseTime();
         if(ctm>0)
           { 
            if((CurTime()-ctm)<14400)
                {
                return(0);
                }
           }     
        }



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

, а у тебя не видно где ты сравниваешь время закрытых ордеров и берешь время самого последнего по времени закрытого ордера, может этот ордер закрыт раньше чем закрытый последний по времени?
т.е. нужно еще
//------- блок определения локальных переменных
datetime ctm, LastCTime;
//------ конец блока определения локальных переменных
...
начало цикла по истории
if (OrderSelect(OrderTicket(),SELECT_BY_TICKET,MODE_HISTORY)==true)
        {
         ctm=OrderCloseTime();
         if(ctm>0)
           { 
              if(ctm>LastCTime) LastCTime=ctm;
              if((CurTime()-LastCTime)<14400) return(0);
           }     
        }
конец цикла по истории
 
причем код в предыдущем посте ориентирован на последнее закрытие, а тебе судя по тексту нужно чтобы ориентация была на время последнего открытого ордера, так что код нужно менять
 
нет еще имеет значение время открытия позиции и установки стопа, а также характер движения цены внутри бара. Поясню если цена в начале бара была у лоу, а потом двигалась только по направлению к хай то стопа не будет если после открытия позы цена не опускалась на 30 пунктов


так я как раз имел ввиду ситуацию, когда тестер не может оценить характер движения цены внутри бара - нет данных болеее мелкого тайм фрейма. Элементарный пример - часовой бар двухлетней давности, поминутных данных нету, а на пятиминутках он такой же большой как и на часовиках (тоесть тоже динамику не оценить), однако тестер показывает закрытие по стоп лоссу

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

стоит также заметить, что вопросы которые я поднял, разрешились - я установил поминутки на все время тестирования эксперта, и 1) ордера перестали закрываться по стоп лоссу на длинных барах, что подтверждает использование худшего сценария событий при отсутствии подробных данных и 2) перестали открываться по несколько ордеров в одном баре, что для меня конечно хорошо, но в целом такое поведение тестера довольно странно и, думаю, требует внимания разработчиков