Конкурс советников внутри советника
Господа разработчики и исследователи биржевых пространств!
Зачастую многие торговые системы (ТС) обладают стабильностью на определенных временных интервалах, но спустя некоторое время кривая баланса начинает двигаться вниз. Трейдер разочаровывается, начинает придумывать новые граали, оптимизировать параметры и т.д.
Предлагаю вашему вниманию инструмент для совершения виртуальных сделок VirtualTrend.mqh. С помощью предлагаемых мною функций можно открывать, закрывать и тралить виртуальные сделки.
Полезность данного инструмента заключается в следующем:
- Возможность создавать адаптивные советники, которые будут включать или выключать реальные сделки в зависимости от ранее проведённых торгов.
- Вести рейтинг между несколькими торговыми системами (ТС) (в данном примере представлено 5 торговых систем) в процентном соотношении в зависимости от прибыльности. По итогам виртуального конкурса устанавливается предпочтительная торговая система для дальнейших торгов на реальном рынке.
- Возможность внедрять торговые стратегии, использующие несколько одновременно открытых сделок по одному инструменту, в торговую платформу Meta Trader 5, которая использует совокупные позиции (эта возможность не описана в данной статье, а предлагается, как вариант использования).
Остановимся на первых двух высказываниях.
Для примера адаптивного советника рассмотрим код Competition_v1.0.mq4, в котором на конкурсной основе производится выбор, какой торговой системой воспользоваться. В советнике используются 5 торговых систем (при желании можно добавить), выбранных мной случайно, которые более-менее стабильно работают на дневном графике EURUSD .
Важно! Необходимо использовать именно стабильные торговые системы, которые способны либо стабильно приносить прибыль, либо стабильно сливать на определённом промежутке времени.
Например, торговая система, череда выигрышей которой имеет вид : «ПППППППУУУУУУУУППУПППППППП» подходит для использования в данном советнике, а если порядок результатов сделок имеет вид: «УУППУПУУПППУУПУППУПУПУУУППУПУ», то не подходит («У» – убыточная сделка, «П» – прибыльная сделка).
Т орговая система, в которой убыточные сделки происходят чаще, чем прибыльные, но при этом прибыльные сделки покрывают все предыдущие убыточные, т.к. советник просто не успеет адаптироваться на прибыльность.
Стабильность торговой системы определяется «на глаз» по результатам тестов, выполненных за максимальный период (всю историю) в тестере. По полученному графику изменения баланса определяется средневзвешенное количество сделок по истечении которых происходит изменение тенденции. Например: Торговая система совершила следующую серию сделок: ППППППППУУУУУУПППППППППУПУУУУУУУУУУУПППППППУУУУУУУУУУУУУППППППУУУУУУУУУУПУПППУУПППППП. Тенденция баланса меняется примерно через 6-8 сделок. Период усреднения баланса при расчёте рейтинга рекомендуется устанавливать половине количества этих сделок. То есть 3 или 4.
Включение или отключение рейтинговой системы, помогающей советнику адаптироваться к изменению характера прибыльности, управляется параметром RatingON. С помощью её можно легко подобрать период усреднения баланса и установить его в параметр T х. PeriodRating.
Каждую из торговых систем можно включать или отключать по желанию с помощью параметра Tх.Enabled, где х – номер ТС.
Все нижеприведённые тесты торговых систем выполнены на инструменте EURUSD (таймфрейм D 1) на периоде с 1999.01.01 по 2010.06.01.
Торговая система №1
- Условие входа: пересечение быстрой скользящей среднюю медленную (см. функцию T1_SignalOpen()).
- Условие выхода: обратное пересечение (см. функцию T1_SignalClose()).
Рисунок 1. Тест торговой системы №1 без адаптации (RatingON = false )
По результатам тестирования можно сделать вывод, что после каждых 18-20 сделок данная торговая стратегия меняет свой характер прибыльности.
Поэтому в параметр T1.PeriodRating устанавливается значение 20.
Рисунок 2. Тест торговой системы №1 с включенной адаптацией (RatingON = true )
Торговая система №2
- Условие входа: Пересечение индикатором CCI определённого уровня сверху вниз. (См. функцию T2_SignalOpen())
- Выход: появление сигнала в другом направлении. (См. функцию T2_SignalClose ())
При проведении теста за тот же период узнаём, что стабильность примерно равна 10 сделкам.
Рисунок 3. Тест торговой системы №2 без адаптации
Рисунок 4. Тест торговой системы №2 с включенной адаптацией
Торговая система №3
Логика входа и выхода такая же, как и у ТС №1, только периоды усреднения скользящих средних другие.
Небольшое отступление: можно вообще переписать весь Competition_v1.0.mq4 и собрать его из стратегий, которые будут содержать только скользящие средние с разными периодами.
Это интересное исследование я ещё не проводил, но если проведу, дам знать.
Рисунок 5. Тест торговой системы №3 без адаптации
Эта ТС совершает очень мало сделок за длительный период (почти 11 лет). В реальной торговле эту стратегию использовать я не рекомендую из-за катастрофически малого количества сделок в тестере.
В данную статью я её добавил для наглядности, чтобы примерно показать, как работает моя разработка адаптации. Для этой ТС параметр T3.PeriodRating устанавливается равным 2.
Рисунок 6. Тест торговой системы №3 с включенной адаптацией
Торговая система №4
Эта стратегия не раз попадалась мне на глаза в литературе.
Она кажется привлекательной и без адаптации, но чтобы использовать её в торговле – автоматического трейдинга не требуется из-за её долгосрочности.
- Вход совершается при выстраивании трёх скользящих средних по порядку, и если MACD выше определённого уровня T4.LimitMACD. (см. функцию T4_SignalOpen())
- Выход, если цена пересекает вторую скользящую среднюю (см. функцию T4_SignalClose()).
Рисунок 7. Тест торговой системы №4 без адаптации
Эта торговая стратегия имеет постоянную стабильность, поэтому период обработки данных для расчёта рейтинга должен быть не менее 20 сделок. Я устанавливаю T4.PeriodRating=20.
Рисунок 8. Тест торговой системы №4 с включенной адаптацией
Торговая система №5
Эту ТС разработал я сам и хочу ею поделиться с вами таким вот изощренным способом.
- Покупку совершаем, если индикатор CCI пересекает определённый уровень T5.LevelCCI снизу вверх. (см. функцию T5_SignalOpen()) . Устанавливаем уровень закрытия сделки MyLevel на T5.TralingCCI индикаторных пунктов ниже, чем уровень открытия T5.LevelCCI. Наблюдаем за индикатором CCI и подтягиваем уровень закрытия MyLevel с определёнными шагами, таким образом, чтобы расстояние между текущим значением индикатора CCI и уровнем MyLevel было не больше двойного T5.TralingCCI.
- Закрываем открытую покупку, если индикатор CCI пересёк уровень MyLevel сверху вниз. (см. функцию T5_SignalClose()).
Рисунок 9. Тест торговой системы №5 без адаптации
Такой график даже можно не адаптировать, но для приличия установим T5.PeriodRating=10.
Рисунок 10. Тест торговой системы №5 с включенной адаптацией
Мультисистемный советник
Выше было продемонстрировано, как работают 5 торговых советников без ограничения сделок и с включенной адаптацией.
Сейчас предлагается рассмотреть пример совместной работы всех этих советников:
EURUSD (Euro vs US Dollar)
День (D1) 1999.05.24 00:00 — 2010.07.05 00:00 (1999.01.01 — 2010.07.05)
Контрольные точки (очень грубый метод, результаты нельзя принимать во внимание)
RatingON=false; FastTest=true; file=»virtual.csv»; MinRating=50; _tmp1_=»—- Торговая система 1 —-«; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_=»—- Торговая система 2 —-«; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_=»—- Торговая система 3 —-«; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_=»—- Торговая система 4 —-«; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_=»—- Торговая система 5 —-«; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;
Советник High Frequency – прибыльный высокочастотник для конкурсов и не только
Развитие розничного рынка форекс делает старые разработки снова актуальными. Если раньше за большой поток ордеров дилер мог запросто забанить трейдера, перестав принимать ордера, то современная рыночная схема напрямую зависит от проторгованного объема. В статье мы рассмотрим один из таких советников, пусть и не относящийся непосредственно к HFT, но с достаточно большой частотой сделок.
Описание стратегии советника High Frequency
Советник High Frequency торгует в сторону импульса цены. Когда на рынке появляется резкое движение вверх или вниз, советник устанавливает отложенный ордер в сторону этого движения. Кто торговал на новостях, знает, что попытка войти в рынок на импульсе может закончиться неудачей, особенно если входить по рынку или стоп-ордерами. Главная проблема здесь – это проскальзывание. С другой стороны, если импульс достаточно большой, то, даже открывшись с проскальзыванием, вы все равно получите прибыль.
Но остается вопрос фиксации прибыли. Важно успеть зафиксировать плюс, пока цена не развернулась обратно. Для закрытия позиций в советнике HF используется примитивный метод по общей прибыли. Когда общая прибыль по всем позициям достигает определенного значения, все ордера закрываются, а отложенные – удаляются. Преимущество этого метода в простоте и предсказуемости прибыльности. Минус же в том, что советник не управляет отдельными ордерами, из-за чего убыток по единственному ордеру будет тянуть счет вниз, а позиции могут очень долго не закрываться.
Как определяется импульс для открытия позиции?
Период N (допустим, 10 секунд) в параметрах советника определяет период перерасчета показателей. Грубо говоря, это внутренний таймфрейм советника. Каждые 10 секунд советник вычисляет, в какую сторону сдвинулась цена относительно предыдущего значения и на сколько. Если размер движения оказался больше среднего и при этом больше значения минимального сдвига min_range, то открывается Buy Stop или Sell Stop ордер, в зависимости от направления сдвига. Также учитывается положение индикатора ROC относительно нуля. Покапаем только тогда, когда его значение больше нуля и продаем только когда ROC меньше нуля.
В советнике High Frequency нет ограничения на количество ордеров, поэтому следует внимательно следить за размером свободной маржи. Если ордеров накопилось слишком много, лучше вручную закрыть все текущие позиции, даже если по ним имеется небольшой убыток.
Настройки советника
- ROC_Period – период расчета индикатора ROC.
- IND_TF – таймфрейм индикатора.
- lot – фиксированный лот для отложенного ордера.
- profit – тейкпрофит по прибыли.
- N – период в секундах для внутренних расчетов.
- K – период усреднения.
- min_range – минимальный импульс цены.
- range_stop – расстояние в пунктах для установки ордера от текущей цены.
- magic – уникальный номер советника.
Тестирование советника High Frequency
При тестировании высокопроизводительных советников стоит принимать во внимание, что тестер MetaTrader 4 не учитывает проскальзывания, реквоты и плавающий спред. Поэтому, любой тест может дать лишь примерное представление о том, как советник поведет себя на реальном счете.
Для чего может пригодится тестирование в тестере?
В любом случае, перед тем как ставить подобного робота на реальный счет, нужно определиться с примерными настройками и валютными парами для торговли. То есть, для начала нужно выяснить потенциал торговых инструментов. Для тестирования можно ограничиться только мажорными парами. Кросс-курс дает мало информации для теста, потому что легко рассчитывается из тех же мажоров.
Мы будем проводить оптимизацию советника по двум параметрам: периоду ROC и расстоянию для установки ордера. Торговый таймфрейм M1. Тест будет проводиться за июнь 2016. Давайте рассмотрим результаты оптимизации по основным валютам. В данном случае, насыщенный зеленый цвет на графиках оптимизатора означает наибольшую прибыль (но не обязательно наименьшую просадку).
EURUSD
Безусловным лидером оказался результат с ROC(20) и range_stop, равному 4 пунктам. Видимо, сказывается относительно небольшая волатильность EURUSD, из-за чего абсолютная величина импульса тоже достаточно небольшая.
Тест с указанными параметрами показал достаточно стабильный рост доходности, с небольшой просадкой.
GBPUSD
Не зря эти валюты называют братьями-близнецами. Как и по евро, по фунту мы видим четко прочерченную границу выше наиболее оптимальных 4 пунктов. Соответственно, значения в 8 и 2 пункта для range_stop будут самыми неподходящими. Лучшие периоды для индикатора ROC в порядке убывания – 15, 10 и 20.
Тест по оптимальным значениям доходности к риску.
USDCHF
К сожалению, как и по USDJPY, по франку не удалось получить хороших результатов.
Тем не менее, лучшим оказался проход с ROC(20) и range_stop, равный 4 пунктам, что обеспечило достаточно высокую частоту сделок.
USDCAD
Канадец показывает явное преимущество больших расстояний. А вот положительных результатов с параметром range_stop ниже 6 пунктов вообще не оказалось.
Итого, оптимальными параметрами для канадца являются период в 20 пунктов и расстоянием до ордера в 10 пунктов.
AUDUSD
Прибыльных результатов по австралийцу оказалось гораздо больше. Что интересно, лучший результат по прибыли почти аналогичен EURUSD.
Тем не менее, оптимальный результат с наименьшей относительной просадкой был получен с range_stop равным 10 пунктам и 20-ти периодным ROC.
NZDUSD
Для новозеландца типичны редкие, но более заметные импульсы. По-видимому, в связи с этим, лучший результат и оптимальное значение доходности к риску было получено с ROC(25) и range_stop равным 10 пунктам.
Тест показал одну из наименьших просадок из тестируемых пар.
Итоги исследования
Перед использованием советника High Frequency на реальном счете нужно учесть несколько факторов:
- Во-первых, на сервер отправляется большое количество ордеров. Если вы торгуете в диллинговом центре (ДЦ), скорее всего, вас будут часто реквотить. В крайнем случае, за такую торговлю могут даже заблокировать. Если заметили проблемы с исполнением, попробуйте увеличить параметр N. Чем больше его значение, тем меньше частота ордеров.
- Во-вторых, советник очень чувствителен к проскальзываниям. Стоит учитывать, что он использует стоповые ордера, а значит даже на рыночном исполнении могут быть большие проскальзывания. Очевидного решения здесь нет. Как вариант, можно попробовать другого брокера.
- В-третьих, учитывая небольшие цели, торговые издержки (спред и комиссия) должны быть минимальными. Суммируя эти данные, приходим к выводу, что для работы советника лучше всего подойдет ECN-брокер. В идеале, нужно протестировать работу советника сразу в нескольких конторах, так как далеко не всегда брокеры используют одних и тех же поставщиков котировок, а здесь очень кстати придется LMAX с его почти гарантированным исполнением.
Другие советники
- Советник Profit Pacman — мартингейл для новичков
- Советник Aeron JJN Scalper EA – скальпинг внутри дня
- Советник Robot – стохастики + искусственный интеллект
- Советник Ilan 1.6 Dynamic – советник для разгона бонусов
Программирование
- Битва роботов: купить советника форекс или скачать бесплатно?
- Сервис myfxbook: учимся читать мониторинг советников правильно. Часть 1
- Создаем торгового эксперта MQL4: открываем новые перспективы в торговле на Форекс
Fortrader Suite 11, Second Floor, Sound & Vision House, Francis Rachel Str. Victoria Victoria, Mahe, Seychelles +7 10 248 2640568
Комментарии (2)
Почему когда я его запускаю, у меня появляется в окне всего один отложенный ордер, а в истории счета постоянно появляются закрытые отложенные ордера без прибыли (без цифр) и так ни одной сделки. Что не так?
Источник https://www.mql5.com/ru/articles/1578
Источник https://fortrader.org/forex-ea-testing/sovetnik-high-frequency-pribylnyj-vysokochastotnik.html