Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
что есть AG?
Как "что есть AG" ? :))
AG - это приложение AutoGraf 4 - самый лучший AutoGraf из всего семейства AutoGraf-ов.
Произведение искусства, непревзойдённая по своей красоте MQL-роспись по MetaTrader-у:)
Вот же: https://forum.mql4.com/ru/12195.
см. пост выше.
осознал уже и просветлился :))
Моделирование на разных тайм-фреймах тестируемого инструмента
Тестер в MetaTrader 4 позволяет видеть не только тестируемый тайм-фрейм, но и другие старшие и младшие тайм-фреймы. Таким образом, если мы тестируем советника на EURUSD M15, то можем смотреть значения индикаторов для EURUSD H1 или EURUSD M5. А также видеть максимальную и миимальную цену текущего нулевого бара на любом доступном тайм-фрейме EURUSD. Если нам необходимо получить максимальную цену текущего дня, мы просто смотрим значение iHigh(NULL,PERIOD_D1,0). Также как и при торговле в онлайне. И не имеет значения на каком периоде мы тестируем советника, или на график какого тайм-фрейма он прикреплен в режиме реального времени.
Важно: моделирование всех тайм-фреймов родного инструмента происходит также корректно - цены Open, High, Low и Close моделируются 100% корректно. Объемы старших тайм-фреймов также моделируются 100% корректно.
2. Не обманываем себя - индикатор, наброшенный на график визуализации, работает с реальными данными, и не надо их давать эксперту (чтоб не смотреть в будущее). Индикатор, вызванный через iCustom, работает с тестируемыми данными, и не подсматривает в будущее (если специально какую-нибудь хитрость не придумать). Если есть сомнения по этому пункту, тщательно проверяем и выкладываем результаты здесь.
1. Учим матчасть
Угу.
Я уже сказал, что был бы рад ошибиться. Но пока не вижу ошибки.
1. Учим матчасть - Тестер в терминале MetaTrader 4: Это необходимо знать:......
...............тщательно проверяем и выкладываем результаты здесь.
Андрей, все что мне необходимо знать для грамотного применения ВСЕХ функций языка, должно быть описано в справке по применению, а не в топиках и статьях, ну хотя бы как в нелюбимом и распятом VB. А в этой справке, также как и в учебнике (при всем уважении к SK - "нельзя объять необъятное") за кадром не фрагменты, а пласты целые остаются, причем, не самые простые для понимания. Теперь добавьте сюда отсутствие элементарного отладчика и нормальную логику программиста - прежде всего баг в своем коде найти, а потом уже со средой разработки разбираться..... Ладно, это эмоция :). Вот пример, который непосредственно темы касается:
Есть индикаторы, которые при полной функциональности на реальном графике, категорически не работают (или среднюю темп. по палате показывают) в режиме визуализации тестирования. При разборке след. выяснилось. Рисуем простейший индюк, который ничего не делает, а просто выведет на экран Time[0] и соответствующие TimeCurrent().
Кладем его на график (здесь к H1 прикреплялся) в режиме визуализации тестирования любого эксперта, и получаем следующую картинку:
Пояснения не нужны, видимо. А теперь смотрим справку по функции:
datetime TimeCurrent( )
Возвращает последнее известное время сервера (время прихода последней котировки) в виде количества секунд, прошедших после 00:00 1 января 1970 года.
Замечание: при тестировании последнее известное время сервера моделируется.
Пример:
if(TimeCurrent()-OrderOpenTime()<360) return(0);
Собственно, это полбеды. У меня так вышло, что через Time[0] - эту мелочь обойти еще и лучше получилось :).
А теперь представьте, что вам потребовалось на 0-м баре рабочего ТФ (пусть H1) что-то обсчитать на младшем (пусть М1) - не надуманная ситуация, действительно нужно. Вы не сможете этого сделать, т.к. без TimeCurrent не будете знать какое количество периодов младшего уже сформировано. И просто программно это никак не решить. Здесь три варианта:
- перенести всю работу на М1 (что и делается, судя по некоторым высказываниям на форуме);
- смириться с дискретностью расчетов, равной одному периоду рабочего ТФ;
- взять это количество наугад, рискуя подсмотреть будущее :).
- использовать глобальные переменные.... но это означает,- вы жестко привяжете индикатор к эксперту, что само по себе неверно
Мне это не нравится.
Приблизительно такая же беда и при обращении к ДРУГИМ таймфреймам и инструментам. Тесткод не привожу - не сохранился, а по новой делать лениво :). Просто, там действительно обращение идет не к моделируемым данным, а к истории. Ничего страшного, вот только прописать это все в справке как-то нужно.
Индикатор, наброшенный вручную на график в режиме тестирования некоторые данные берёт из реала. Этого просто нельзя делать.
Попробуйте этот индикатор вызывать по iCustom(). Возможно, в данном случае это и есть причина.
--
Интуитивно ожидается, что в тестере все данные будут тестерные. К сожалению, в МТ4 это не всегда так.
Надемся, что в МТ5 эта концепция будет изменена.
Интуитивно ожидается, что в тестере все данные будут тестерные.
Моя очередь про ключевую фразу говорить :).....
Во всех причинах разобрался уже. Это не вопрос - разъяснение было.
Пока TimeCurrent выполняется в индикаторе никакой icustom не поможет - всегда будет последнее известное реальное время сервера (время последней котировки) и нигде об этом не написано.
Что касается iHigh, iLow и т.д., то там просто номер бара надо по времени, через ibarshift считать, тогда и подглядывания никакого не будет, пока специально подсмотреть кто-нить не захочет....
Правильно, в общем, все работает, только "интуиция" у всех разная :)..... это как с любой софтиной: если у нее интуитивно-понятный интерфейс, то нафига полторы тысячи страниц описания? )
Что касается iHigh, iLow и т.д., то там просто номер бара надо по времени, через ibarshift считать, тогда и подглядывания никакого не будет, пока специально подсмотреть кто-нить не захочет....
Валера, я без претензий ;) Про справку и поведение визуализатора однозначно согласен.
А вот последнее утверждение я бы проверил еще раз - разработчики прямо заявляют что подсмотреть будущее из эксперта (например, через iHigh в iCustom-е) невозможно. И я склонен верить им. Надо бы поэксперементировать...
...но при условии, то мы тестируем(и кодируем и-Хаем) ЭКСПЕРТА. В случае теста индикатора - посыл выше не верен(что совершенно верно было замечено далее по тексту цитируемого сообщения).
Зависит от способа кодирования индикатора. При применении любой синтаксически разрешенной конструкции(т.е. вызове вообще любой ф-ии описанной в доках) - да, гонятся реальные данные. Но можно обойти(хоть и точно муторно и в ряде случаев сильно не тривиально).
:))) Очередная ключевая фраза. Правильная ее редакция:
Замечание: при тестировании ЭКСПЕРТА последнее известное время сервера моделируется для кода этого ЭКСПЕРТА. При совместном тестировании наряду с последним любого индикатора моделирование времени сервера для ИНДИКАТОРА не гарантируется.
Нельзя, простите, что? С реала брать котировки? Это конечно нет! Или же набрасывать график на тест-чарт?? Ну тут нееет... что ж это за "визуализация в слепую" тогда у нас получится?
Это как это? :) Вы хотите что бы эксперт рисовал кривую вместо индикатора? Нам же линия на чарте нужна... Не просто поток цифр из iCustom.
Тут действительно нужен краш-тест. Осмелюсь предречь ему... провал. Основание: на текущий момент нет никаких сомнений, что в тестере для эксперта и индикатора цены моделируются по разному. Однако дополнительная проверка связки expert->iCustom(call)->indicator(return iHigh) для подтверждения моей теории нужна!
Про подглядывание через icustom, честно говоря, протупил малость - мозги индикатором безотносительно к эксперту заняты.... через такой вызов действительно подсмотреть нельзя, но для того, чтобы и индюк в эксперте и, накладываемый для визуализации, идентично работали без ibarshift все равно не обойтись ((
Кстати, может чуть не в тему, - ссылочка Несколько зигзагов в одном окне.... когда на график при визуализации положите, слюнки потекут - на себе испытал :)
Это не совсем по ihigh ilow, но то что заглянуть индикатором, без особых изысков, куда угодно можно - лучше наглядного пособия не придумать. Только автор тут не виноват - он просто картинку делал :)
to komposter - вы его хорошо знаете, он тут частенько прогуливается ;)