Я так понимаю, что все вышеперечисленное касается только тестирования на всех тиках? Ведь при тестировании по контрольным точкам тестер ТОЧНО "подсматривает" в будущее (OHLC текущего бара) и моделирует развитие внутри него бара на основании движения меньших тайфреймов.
Я так понимаю, что все вышеперечисленное касается только тестирования на всех тиках? Ведь при тестировании по контрольным точкам тестер ТОЧНО "подсматривает" в будущее (OHLC текущего бара) и моделирует развитие внутри него бара на основании движения меньших тайфреймов.
Контрольные точки (ближайший меньший таймфрейм)
Метод моделирования контрольных точек предназначен для грубой оценки экспертов, торгующих внутри бара. Для этого метода необходимо наличие исторических данных ближайшего меньшего таймфрейма. В большинстве случаев имеющиеся данные меньшего таймфрейма не полностью покрывают временной диапазон тестируемого таймфрейма. При отсутствии данных меньшего таймфрейма развитие бара генерируется на основе цен закрытия 12 предыдущих баров. То есть, движение внутри бара повторяет движение цены за последние 12 периодов. Это и есть фрактальная интерполяция.
Данный метод генерации кардинально отличается от принятого в предыдущих версиях клиентского терминала волнового метода, который давал строго детерминированное развитие бара. Как только появляются исторические данные меньшего таймфрейма, фрактальная интерполяция применяется уже к этим данным. Однако используется уже не 12, а всего 6 предыдущих баров. Это значит, что воспроизводятся реально существующие цены Open, High, Low, Close плюс ещё две сгенерированных цены. Значение и местоположение этих двух сгенерированных цен зависит от движения цены на 6 предыдущих периодах.
Я так понимаю, что все вышеперечисленное касается только тестирования на всех тиках? Ведь при тестировании по контрольным точкам тестер ТОЧНО "подсматривает" в будущее (OHLC текущего бара) и моделирует развитие внутри него бара на основании движения меньших тайфреймов.
Контрольные точки (ближайший меньший таймфрейм)
Метод моделирования контрольных точек предназначен для грубой оценки экспертов, торгующих внутри бара. Для этого метода необходимо наличие исторических данных ближайшего меньшего таймфрейма. В большинстве случаев имеющиеся данные меньшего таймфрейма не полностью покрывают временной диапазон тестируемого таймфрейма. При отсутствии данных меньшего таймфрейма развитие бара генерируется на основе цен закрытия 12 предыдущих баров. То есть, движение внутри бара повторяет движение цены за последние 12 периодов. Это и есть фрактальная интерполяция.
Данный метод генерации кардинально отличается от принятого в предыдущих версиях клиентского терминала волнового метода, который давал строго детерминированное развитие бара. Как только появляются исторические данные меньшего таймфрейма, фрактальная интерполяция применяется уже к этим данным. Однако используется уже не 12, а всего 6 предыдущих баров. Это значит, что воспроизводятся реально существующие цены Open, High, Low, Close плюс ещё две сгенерированных цены. Значение и местоположение этих двух сгенерированных цен зависит от движения цены на 6 предыдущих периодах.
Не мешало бы добавить что всё вышеперечисленное справедливо только в последней версии MT4 Build 207
С каждым билдом мы делаем тестер все лучше и лучше. Осталось добавить моделирование реквотов в тестере торговых стратегий.
Не мешало бы добавить что всё вышеперечисленное справедливо только в последней версии MT4 Build 207
С каждым билдом мы делаем тестер все лучше и лучше. Осталось добавить моделирование реквотов в тестере торговых стратегий.
Ниже приведенный код показывает как тестер можит подглядывать
при тестировании все тики. Подсматривание идет с младшего таймфрейма
все старшие на тестируемой валютной паре.
//+------------------------------------------------------------------+ //| CheckBigTF_High.mq4 | //| Copyright © 2007, MetaQuotes Software Corp. | //| https://www.metaquotes.net/ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, MetaQuotes Software Corp." #property link "https://www.metaquotes.net/ru" int myPeriodNumber; //+------------------------------------------------------------------+ //| возвращает период в минутах | //+------------------------------------------------------------------+ int GetPeriod(int Number) { int res; //---- switch(Number) { case 0: res=PERIOD_M1; break; case 1: res=PERIOD_M5; break; case 2: res=PERIOD_M15; break; case 3: res=PERIOD_M30; break; case 4: res=PERIOD_H1; break; case 5: res=PERIOD_H4; break; case 6: res=PERIOD_D1; break; case 7: res=PERIOD_W1; break; case 8: res=PERIOD_MN1; break; default: res=Period(); } //---- return(res); } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- for (int i=0;i<9;i++) { if (GetPeriod(i)==Period()) break; } myPeriodNumber=i; Print("Родной период тестирования ",GetPeriod(myPeriodNumber)," минут"); //---- return(0); } //+------------------------------------------------------------------+ //| right comparison of 2 doubles | //+------------------------------------------------------------------+ bool CompareDoubles(double number1,double number2, int Dig,double accuracy) { if(NormalizeDouble(MathAbs(number1-number2),Dig)>=accuracy) return(true); else return(false); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- string Str; double myClose=Bid; for (int i=myPeriodNumber; i<9; i++) { if (CompareDoubles(myClose,iHigh(NULL,GetPeriod(i),0),Digits,Point)) { Str = TimeToStr(TimeCurrent()) + ", myHigh = " + DoubleToStr(myClose, Digits)+" High("+GetPeriod(i)+")="+iHigh(NULL,GetPeriod(i),0); Print(Str); } } //---- return(0); } //+------------------------------------------------------------------+
Ниже приведенный код показывает как тестер можит подглядывать
при тестировании все тики. Подсматривание идет с младшего таймфрейма
все старшие на тестируемой валютной паре.
2 HIDDEN
Насколько я понимаю, предложенный Вами тест с использованием слегка модифицированного советника Rosh'а, не вполне корректен. High старшего периода действительно не обязан все время быть равен Bid'у текущего т/ф.
Чтобы показать, что в тестере имеется возможность подсматривать в будущее, достаточно показать, что на начало свечи старшего периода его High больше, а Low - меньше, чем High(Low) этого старшего периода, но рассчитанные с текущего т/ф. А это значит следующее.
Допустим старший т/ф - Н1, а текущий - М1. В советнике должен быть организован контроль минут текущего т/ф и на каждое начало нового часа должны сбрасываться до величины Open первой минуты часа значения переменных H1High и H1Low. В этих переменных руками и потиково формируются High и Low для т/ф Н1. Дальше они, опять же потиково, сравниваются с данными, полученными с т/ф Н1 и, если равенство нарушается, то это и дает возможность подсматривать в будущее.
Такой тест позволит не только доказать возможность использовать данные будущего, но и покажет когда и как они возникают. Лично я полагаю, что High и Low старшего т/ф сразу приобретают свои значения при переходе к новой свече на этом старшем т/ф. То есть, что ситуация вообще разработчиками не предусмотрена. Но вполне может быть, что я ошибаюсь и расхождение со значениями текущего времени возникает где-то в середине времени жизни свечи в результате программного глюка. Тогда этот результат разраболтчикам будет весьма полезен.
Я мог бы, конечно, и сам все это проделать, но, в силу высказанной уже позиции, не считаю нужным. Вот с этим Вашим утверждением совершенно не могу согласиться.
На самом деле разработчики должны заботится о том что-бы мы такие результаты не получали.ИМХО - Это мы должны заботиться о том, чтобы не получать глупых или вредных результатов. А разработчики должны заботиться о том, чтобы у нас в работе было побольше позитивных возможностей. Вместо этого, получается, они должны тратить время и силы, чтобы перекрыть нам же (!) негативные возможности. Зачем ? Не пользуйтесь этим и все. Если кодер не понимает, что он пишет, то может быть ему стоит заняться собой, а не валить вину на разработчиков ?
Зачем вообще моделировать по тикам?
Достаточно в тестер посылать 4 числа OHLC в соответствии с их временем. То есть вариантов всего 2 : O-H-L-C или O-L-H-C.
Разве в этом случае будет что-то некорректно работать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
New article Тестер в терминале MetaTrader 4: Это необходимо знать has been published:
Продуманный интерфейс терминала MetaTarder 4 является фасадом, но кроме того терминал имеет в своем составе также тщательно проработанный тестер стратегий. И если достоинства МТ4 как торгового терминала являются очевидными, то оценка возможностей тестера по качественному тестированию стратегий приходит только с опытом. Эта статья показывает достоинства и преимущества тестирования именно в MetaTrader 4.
Да, возможность тестирования есть далеко не в каждой программе для технического анализа(ТА), тем более не в каждом терминале! И даже там, где тестер заявлен и возможность тестирования есть, возможны ошибки или архитектурные ограничения и запреты. Поэтому при разработке тестера для терминала MetaTrader 4 так важно было сразу заложить такие решения на уровне архитектуры, которые не позволяли бы существовать целому классу стратегий, основанных на знании будущего. Есть два пути при тестировании любой стратегии программно:
Треугольник "Current Time" обозначает место, где находится тестер в данный момент. В первом случае, существует Прошлое (Last), где тестер уже обработал данные, и Будущее (Future), куда тестеру еще предстоит прийти. И прошлое и будущее уже рассчитаны (индикаторы, цены закрытия, открытия, High и Low), тестер просто проходит по этой последовательности. И если есть лазейка для подглядывания в будущее (явная или ошибочная), то результаты тестирования на таком тестере требуют тщательной проверки. И закрытие известных лазеек не гарантирует, что не найдутся другие обходные пути. Это потенциально постоянная головная боль разработчика тестера и пользователей тестера.
Во втором случае мы имеем только Прошлое (Last), Будущего нет по определению(темный прямоугольник). При таком подходе мы всегда имеем информацию только о прошлом, но не имеем никакой информации о будущем, как и в реальной торговле. С приходом каждого нового тика (изменения цены) в тестере мы перемещаемся в настоящем, треугольник текущего времени смещается вправо на новое известное время и получает новые цены. Каждый новый тик строит Настоящее, увеличивается информация о Прошлом, но по-прежнему впереди темное неизвестное Будущее. Тестер в этом случае не имеет возможности заглянуть в будущее просто по определению, какие бы ошибки не допускал трейдер при написании своей стратегии.
Именно в этом и заключается разница в двух подходах. Первый путь создания тестера дает обманчивую легкость и скорость тестирования, второй дает уверенность в том, что все написанные стратегии будут вести себя в тестере абсолютно так же, как и в режиме торговли реального времени при одинаковых ценовых изменениях. Не случайно, смоделированные для тестера последовательности хранятся в виде файлов, содержащих снимки состояния бара (файлы с расширением fxt), которые можно открыть как и обычный график через меню "Файл" - >> "Открыть автономно".
Author: MetaQuotes Software Corp.