Всем привет! Переходим к следующему пункту плана.
Применить инструменты и методы технического анализа чтобы принять торговое решение.
В этот раз начну не с традиционной таблицы с функциями MQL, а с некоторых рассуждений.
Что за “торговое решение” обозначено в заголовке? Это ваше решение либо об открытии новой позиции, либо о закрытии текущей, либо о бездействии - “сидим на заборе” и ждем лучших условий для входа или выхода. Это решение мы рассматриваем только в контексте технического анализа.
Как я уже говорил, обучение премудростям технического анализа не входит в задачи этого сайта, но все же давайте перечислим основные технические инструменты.
Свечной график
Строго говоря, сами японские свечи, а также бары и прочие их аналоги уже сами по себе являются инструментами ТА. Удивил, да? Казалось бы, свечной график - это и есть исходная информация для технического анализа. Именно такое мнение может сложиться у большинства начинающих трейдеров, ведь первое, что они видят в торговом терминале - это свечной график той или иной валютной пары. Если не свечной, то линейный или баровый. Ну или как правильно назвать график с барами вместо свечей? Барный? :)
Все же самая полноценная история цены - тиковая, это абсолютно точная запись того, что делала цена в прошлом. Знаете, где в Metatrader-е тиковый график? Вот он:
| Скрин 1 |
Сразу отмечу, что это я присобачил на график черный эллипс, но о нем попозже.
Как видно на скрине, тиковый график в Metatrader находится в окне “Обзор рынка” на соответствующей закладке. Во закопали, да?
Обратите внимание, тиковый график не имеет разметки по горизонтальной оси. Точнее не имеет временной разметки, вместо нее разметка по количеству тиков, что логично, учитывая природу тикового графика.
Еще из особенностей - платформа показывает очень небольшой кусок тиковой истории. Это особенность самой платформы, а не тикового графика как такового. Буквально все, что есть в тиковой истории, поместилось на скрин, и промотать график влево невозможно. Получается, что разработчик платформы не считает тиковую историю ни основным, ни одним из основных инструментов трейдера. Может создаться впечатление, что нас лишили возможности полноценной работы с наиболее точными историческими данными. Вместо этого нам навязывают работу со сверткой истории - с дискретными графиками. Как к этому относиться?
В принципе для ручного трейдинга в подавляющем большинстве случаев знать детальную тиковую информацию и не требуется. Видимо именно поэтому стандартным видом графиков для форекс-платформ являются всем привычные свечные и их аналоги, имеющие дискретизацию по времени. Получается, разработчик Metatrader-а не сильно ловчит, пряча тиковый график и урезая его. И это действительно так, пока мы говорим только о ручной торговле, но для автоторговли существует большое НО. О нем чуть ниже, а пока мы не ушли далеко от тикового графика, давайте еще раз взглянем на Скрин 1.
Пункты: старые и новые
Я все время говорю о графике в единственном числе, но на скрине видно, что вообще-то графиков два. Это те самые Ask и Bid, о которых мы говорили в прошлый раз. Цена Ask выше - синий график, Bid ниже - красный. Разница между Ask и Bid - это уже знакомый нам спред.
На примере последнего тика можно увидеть, что спред составляет 0.0003 доллара (1.13180 минус 1.13150). При этом если вы спросите о размере спреда у самого терминала, то он вам ответит “30”:
| Скрин 2 |
Что же это за единицы измерения такие у терминала?
Дело в том, что изменения цены, то есть разницу между двумя ценами принято измерять в так называемых пунктах. За один пункт в случае со счетом, на котором установлена 5-значная точность измерения котировок (см. вторую строчку на Скрине 2), принимается величина 0.00001. Так вот таких пунктов в нашем спреде аж целых 30 штук, вот терминал и пишет нам “30”.
Аналогично на счетах с 4-значной точностью - размер пункта будет 0.0001. И тогда терминал скажет, что спред всего 3 пункта. Не путайтесь, это одно и то же, если перевести в десятичную дробь.
5-значные пункты появились относительно недавно, их потому условно называют новыми, а 4-значные - соответственно старыми. Такие названия часто можно встретить в трейдерском жаргоне.
Плавающий спред
А вот теперь давайте вернемся к ранее анонсированному черному эллипсу на Скрине 1.
Смотрите, в тот момент времени, куда я воткнул эллипс, цена Ask стоит практически на месте, а вот цена Bid делает сначала рывок вниз, а затем возврат обратно. Это значит, что спред в разные моменты времени разный - он плавающий. Как правило, спред расширяется при высокой волатильности рынка и, наоборот, сужается когда на рынке тишь да гладь.
Зачем нам знать про плавающий спред? Вот теперь давайте соберем воедино “НО” и плавающий спред.
Тиковая история и алготрейдинг
Итак, имеем следующие факты:
- Тиковой истории в терминале Metatrader практически нет. Тот “огрызок” в “Обзоре рынка” не в счет. И я не уверен, что в каком-либо другом форекс-терминале имеется полноценная тиковая история.
- Спред валютной пары может варьироваться.
- Вместо точной тиковой истории лучшее, что может предложить нам терминал, - это дискретная минутная (M1) история с параметрами OHLC+V плюс искусственно сгенерированные внутриминутные тики для каждой минутной свечи/бара. И, как правило, длина этой истории не превышает 3-5 месяцев.
Так вот, все эти нюансы могут очень существенно повлиять на результаты тестирования на исторических данных ваших роботов/советников. Очень, вплоть до получения абсурдных результатов. Забегая вперед, скажу, что историческое тестирование - обязательный этап роботостроения (окно “Тестер стратегий”). Без его проведения на реальный рынок лучше не соваться.
Вы очень легко можете столкнуться с ситуацией, когда “на истории” ваш робот показывает отличные результаты, а в реальной жизни уводит и уводит ваш депозит в минус. Тому может быть целый ряд причин, одна из основных - как раз неполноценная история котировок.
Тестер - это как машина времени. Он берет вашего робота, берет историю котировок и задним числом симулирует работу робота. По итогу тестер выдает вам отчет с кучей разных статистических параметров и графиком изменения баланса вашего воображаемого счета, на основе чего вы можете оценить заработал бы или нет ваш робот деньги, если бы реально работал в течение всего этого отрезка времени в прошлом. Если вам повезло и график баланса в отчете тестера стремится вверх, то есть робот оказался прибыльным, то дополнительно нужно оценить на сколько стабильно робот зарабатывал. Вообще критериев оценки множество и у каждого трейдера они свои, подробнее об этом когда-нибудь в другой раз.
Помните, я рассказывал о недостатках дискретного графика (раздел “Что нам не может показать свечной график?”)? Глядя на свечу, мы никогда не можем точно сказать каким именно путем цена внутри этой свечи прошла от цены Open до цены Close. Все, что мы знаем, - цена гуляла в пределах от High до Low.
- Прошла ли цена по маршруту Open>High>Low>Close или по Open>Low>High>Close?
- Сколько раз цена “сгуляла” от High до Low и обратно?
- Сколько раз цена обновляла High и Low?
Ни на один из этих вопросов свеча вам не ответит. Если вы рассматриваете графики с таймфреймом выше М1, то еще можно перейти на более мелкий ТФ для получения деталей. А если вы уже на М1, дальше “проваливаться” просто некуда. Дальше только тиковая история, которой, как мы выяснили, в терминале просто нет.
При этом тестер стратегий пытается изобразить, что тиковая история все же есть. Как? На основе цен OHLC с графиков М1 и, возможно, V, он по какому-то одним только разработчикам Metatrader-а известному алгоритму имитирует тиковый график. Какова вероятность, что такая имитация совпадет с реальной тиковой историей? Мне сложно это оценить, но уж точно не 100%, а некий X<100%. Так вот эта дельта (Delta=100%-X) и может кардинально испортить вам всю малину с историческим тестированием робота.
Вот пример отчета о смоделированных при тестировании тиках:
| Скрин 3 |
В данном случае на каждую свечу (=бар) было смоделировано примерно 50 тиков. Сам алгоритм оценил качество моделирования всего в 24.85%. Вы доверитесь такому низкому качеству? Конечно нет.
Чтобы не было путаницы, эта цифра в процентах не есть тот Х, о котором я говорил выше. Известны способы формально добиться качества моделирования 100%, но с применением сторонних и, как правило, платных источников тиковых данных. Ключевое слово здесь даже не “платные”, а “сторонние”. То есть это не будут данные от вашего брокера, они будут получены где-то на стороне. И сколь бы доверительным и авторитетным ни был этот сторонний источник, это все равно не ваш брокер, а жить вам, точнее вашему роботу предстоит с брокерскими ценами. Напомню, у разных брокеров история котировок может несколько отличаться.
Вывод: 100%-ное значение качества моделирования не означает 100%-ное соответствие тиковой истории вашего брокера, то есть Х в любом случае остается меньше, чем 100%.
Я бы даже принял следующее правило: “Х всегда меньше качества моделирования”. По крайней мере, я бы всегда из него исходил. На мой взгляд, когда дело касается трейдинга, лучше применять пессимистичный подход.
Продолжаем нагонять страху :)
Пусть даже сгенерированные на М1 тики почти на 100% совпадают с реальностью. Как я уже говорил, горизонт минутной истории, предоставляемой нам брокером, как правило, 3-5 месяцев, а то и меньше. А что, если вам нужно протестировать год или два? Оказывается и тут терминал знает, как выкрутиться. Просто для генерации тиков он берет не М1, а уже М5, М15 и так далее вверх - чем крупнее таймфрейм, тем больший период истории он покрывает. Сами понимаете, Delta при этом будет только увеличиваться, то есть качество моделирования будет еще ниже.
А еще мы знаем про плавающий спред. В идеале его бы тоже надо воспроизводить один в один как было в реальности, когда проводите тестирование, так как нужно знать не только точную цену Bid, но и Ask. От этого может зависеть момент входа в позицию и выхода из нее. Честно говоря, на текущий момент я не знаю как качественно моделировать спред, не изучал вопрос. Изучу, обязательно вам расскажу.
Ладно, пока хватить жути, хотя список еще не полный :)
Так как с этим всем безобразием жить?
В очередной раз поднимаю я этот вопрос. Казалось бы, все пропало, невозможно на 100% доказать прибыльность робота даже на истории. Что уж тогда говорить о его шансах заработать денег в будущем?
В принципе, я уже отвечал на этот вопрос. Мое личное мнение: понимая все перечисленные выше сложности, трейдер должен по максимум адаптировать к ним свой подход к алготрейдингу, в частности, к построению торговой стратегии.
Исходя из того, что мы уже успели к текущему моменту обсудить, можно обозначить как минимум два направления работ по адаптации:
- Обеспечение максимально близкого к 100% качества моделирования тиков при историческом тестировании роботов.
- Отказ от стратегий, ориентированных на мелкие таймфреймы и мелкие движения цены (например, скальпинг). Цель здесь - максимально защититься от особенностей тиковой истории своего брокера. Иначе не будет смысла в первом пункте. По моему опыту нет смысла ожидать стабильного успеха на таймфреймах ниже H1.
О других направлениях будем говорить в будущих статьях. Если у вас есть желание поделиться своими соображениями на этот счет, обязательно пишите в комменты.
Я как никогда ранее очень далеко ушел от исходной темы в этой статье, но, считаю, оно того стоило. Мы начали обсуждать виды инструментов технического анализа и сейчас говорим о свечном графике.
Итак, резюмируем:
- Свечи, равно как и бары, являются интерпретацией исходной тиковой истории с дискретизацией ее по времени.
- Все, что мы можем узнать про свечи, это пять параметров: Open, High, Low, Close и Volume.
Кстати, методы тех. анализа, использующие только свечную информацию называются общим термином Price Action. Гугл вам охотно про это расскажет.
Линии
Наконец-то мы добрались до второго инструмента. Тут я буду неожиданно краток :)
Линии обычно используются для определения некоторой воображаемой зоны сопротивления или поддержки для цены, соответственно говорят о линиях поддержки и сопротивления. Как правило, такие линии рисуются под некоторым углом к горизонтали.
Есть два частных случая:
- Угол равен 0 градусов. То есть линия горизонтальна, в этом случае ее называют уровнем, ценовым уровнем. Ну и соответственно говорят об уровнях поддержки и сопротивления.
- Угол равен 90 градусов. В этом случае линия никакого отношения к цене не имеет, а просто обозначает момент времени, в котором она пересекается с осью времени.
Бывают сложные технические инструменты, состоящие из нескольких линий - это разные каналы, веера и прочие вилы. Пожалуй самый популярный “комбайн” - это уровни Фибоначчи.
Технические индикаторы
Это наиболее сложные интерпретаторы истории котировок. Дискретной истории, не тиковой, то есть это, так сказать, “вторая производная” от моей любимой тиковой истории.
Приверженцы Price Action люто ненавидят индикаторы и всячески предают “индикаторщиков” анафеме. Главный их тезис - все индикаторы дают запаздывающие сигналы на вход и выход. Мол, индикаторщики приходят к шапочному разбору, когда все самое вкусное уже съели. В-целом, так оно и есть, но, как всегда, “есть нюансы” (с).
Функции MQL для работы с инструментами технического анализа
Уфф! Добрались.
Ручное действие
|
Возможность его автоматизировать
|
Посмотреть тиковый график
|
К сожалению, роботу тиковая история недоступна никак. Он может “видеть” только текущие тики, происходящие прямо сейчас. Но сожаление наше небольшое, потому как и трейдеру-человеку доступна лишь очень ограниченная часть тиковой истории. Но об этом я в деталях рассказал выше.
|
Получить OHLC параметры свечи
|
На самом деле об этом мы уже говорили в предыдущей статье. Это наши знакомые массивы переменных Open, High, Low и Close. Здесь же вспомним и Volume.
|
Работа с линиями и ценовыми уровнями
|
С уровнями все просто. С точки зрения робота (программы) это всего лишь одно число - значение цены, на которой стоит уровень. Программно определить касание ценой уровня или его пересечение и тому подобные события - задача примитивная. Здесь не требуются никакие особые функции.
Сложнее с наклонными линиями. Чтобы определить касание/пересечение, придется самостоятельно писать дополнительные функции. В штатном наборе таких нет, я не встречал. С другой стороны мат. аппарат очень простой - это всем известная со школы линейная функция y=a*x+b.
Штатно в MQL есть целое семейство функций для рисования и изменения линий и других графических объектов на графике, хотя в роботах это если и используется, то редко. Функции такие:
И так далее - семейство Object достаточно большое.
|
Добавить индикатор на график
|
Для каждого штатного для Metatrader индикатора существует соответствующая ему функция вида i<имя_индикатора>.
Например для любимых многими скользящих средних (Moving Average) есть функция iMA. Для MACD - iMACD.
Опять таки не буду перечислять все доступные функции, справка Metatrader-а к вашим услугам.
Отмечу только еще одну - iCustom.
Эта функция позволяет роботам обращаться к нештатным, самописным индикаторам, чтобы не дублировать их код в коде самого робота.
Ну и раз заговорили про самописные индикаторы, да, можно при желании и необходимости написать любой свой индикатор. Также можно взять и исправить под свои нужды код любого из штатных индикаторов. В общем, можно развлекаться как душе угодно.
|
Все, рука бойца колоть (читай “чепятать”) устала. До следующего раза!
С уважением,
Игорь Шепелев
Комментариев нет:
Отправить комментарий