боюсь эта конструкция if(Time[0]>iTime(0,1440,60)) всегда будет возвращать истину, т.к. это iTime(0,1440,60) значение будет на 60 баров левее, чем Time[0]..
что показывает тест ?
Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах (60 см. ветку)в тестере стратегий.
if(Time[0]>iTime(0,1440,60))
если время(моделируемое) стало больше времени открытия 60-го бара на дневке тогда выполнить функцию что не так?!
верно, тогда вам заранее нужно определить время с которого советник должен начать тестирование.. так как вы знаете когда он должен его завершить, то делаете следующее
допустим тестирование заканчивается 2010.02.10 0:00
делаем скрипт из кода ниже
#property show_inputs// время окончания тестировани externstring endTestTime ="2010.02.10 0:00";// название парыexternstring symbolTest ="";// период на котором ищем нужное время по номеру testBarCount бара относительно времени endTestTimeexternint periodTest =0;// количество баров в прошлое относительно времени endTestTimeexternint testBarCount =60;int init(){if(symbolTest =="") symbolTest =Symbol();// искомое времяPrint(TimeToStr(iTime(symbolTest,periodTest,iBarShift(symbolTest,periodTest,StrToTime(endTestTime))+ testBarCount)));}
Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах в тестере стратегийотносительно текущего времени. Эти сорок баров могут быть на часовом, 4-х часовом, дневном или другом ТФ. Работает тестер стратегий: промежуток времени на котором он работае указывается на панели тестера. Этот способ задания времени работы не выполняет поставленной выше задачи - тест на 40-ка барах. Значит надо внести изменения в советника так, чтобы выполняя код не тестер определял время тестирования (его возможности не устраивают), а сам код.
Ваше предложение работать не будет, так как для тестера время, которое было N баров назад является текущим.
Т.К.
Для текущего времени тестер будет расчитывать время открытия указанного бара (назад) начиная от текущего. Т.е. опять не решит проблему. Надо же N баров назад от сегодняшнего(сиюсекундного) бара, а не от текущего времени тестера
keekkenen>>: допустим тестирование заканчивается 2010.02.10 0:00
делаем скрипт из кода ниже
Скрипт хорош, НО!! Он выдаст значение времени, которое в последствии надо "забить" в панели тестера. Это не очень... Но на малых ТФ и малом количестве баро он покажет такое время, которое невозможно будет "забить" в тестере, так как в тестере указывается дата и только. А тестирование проводится с 00:00 начальной даты до 00:00 конечной даты. А время, тем более в минутах, указать невозможно!!!!
то что не очень, с этим придется смириться по той простой причине, что тестер живет в своем времени, а мы и реальные котировки в другом и эти временные пространства пересекаются лишь в нашем воображении..
ничего страшного что нельзя в тестере забить точное время, ставьте начало текущего дня или дня до времени старта - это уже издержки..
этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..
Посмотрите на рисунок инд. начал отрисовку только со смещением в 60 баров на днях. Ниже часть кода. Вы хоть пробовали что то из того что рекомендовали? Пробуйте и у Вас все будет.
int start(){double stoch1,stoch2;int pos =Bars-IndicatorCounted();//----if(Time[0]>iTime(0,1440,60))for(int b=0; b<=pos;b++){
этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..
Я так понял, что советник будет обращаться в скрипт за данными, бары назад надо задавать в скрипте.
И! Я прошу прощения могли бы вы выложить полный код скрипта? К моему позору за полтора года работы с MQL ниразу не писал скрипты
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
боюсь эта конструкция if(Time[0]>iTime(0,1440,60)) всегда будет возвращать истину, т.к. это iTime(0,1440,60) значение будет на 60 баров левее, чем Time[0]..
что показывает тест ?
Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах (60 см. ветку)в тестере стратегий.
if(Time[0]>iTime(0,1440,60))
если время(моделируемое) стало больше времени открытия 60-го бара на дневке тогда выполнить функцию что не так?!
так как вы знаете когда он должен его завершить, то делаете следующее
допустим тестирование заканчивается 2010.02.10 0:00
делаем скрипт из кода ниже
этот скрипт позволяет найти время с которого нужно протестировать советник..
в советнике задаем пару переменных
этот скрипт позволяет найти время с которого нужно протестировать советник..
в советнике задаем пару переменных
в startTime заносим время полученное скриптом, а в endTime время заносимое в переменную endTestTime скрипта..Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах (60 см. ветку)в тестере стратегий.
if(Time[0]>iTime(0,1440,60))
если время(моделируемое) стало больше времени открытия 60-го бара на дневке тогда выполнить функцию что не так?!
так 60-й бар тоже модулируется относительно модулируемого 0-го бара
Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах в тестере стратегий относительно текущего времени. Эти сорок баров могут быть на часовом, 4-х часовом, дневном или другом ТФ. Работает тестер стратегий: промежуток времени на котором он работае указывается на панели тестера. Этот способ задания времени работы не выполняет поставленной выше задачи - тест на 40-ка барах. Значит надо внести изменения в советника так, чтобы выполняя код не тестер определял время тестирования (его возможности не устраивают), а сам код.
Ваше предложение работать не будет, так как для тестера время, которое было N баров назад является текущим.
Т.К.
Для текущего времени тестер будет расчитывать время открытия указанного бара (назад) начиная от текущего. Т.е. опять не решит проблему. Надо же N баров назад от сегодняшнего(сиюсекундного) бара, а не от текущего времени тестера
Правильно ли я понял.
допустим тестирование заканчивается 2010.02.10 0:00
делаем скрипт из кода ниже
Скрипт хорош, НО!! Он выдаст значение времени, которое в последствии надо "забить" в панели тестера. Это не очень... Но на малых ТФ и малом количестве баро он покажет такое время, которое невозможно будет "забить" в тестере, так как в тестере указывается дата и только. А тестирование проводится с 00:00 начальной даты до 00:00 конечной даты. А время, тем более в минутах, указать невозможно!!!!
то что не очень, с этим придется смириться по той простой причине, что тестер живет в своем времени, а мы и реальные котировки в другом и эти временные пространства пересекаются лишь в нашем воображении..
ничего страшного что нельзя в тестере забить точное время, ставьте начало текущего дня или дня до времени старта - это уже издержки..
этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..
Посмотрите на рисунок инд. начал отрисовку только со смещением в 60 баров на днях. Ниже часть кода. Вы хоть пробовали что то из того что рекомендовали? Пробуйте и у Вас все будет.
этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..
Я так понял, что советник будет обращаться в скрипт за данными, бары назад надо задавать в скрипте.
И! Я прошу прощения могли бы вы выложить полный код скрипта? К моему позору за полтора года работы с MQL ниразу не писал скрипты