MQL4 - automated forex trading   /  

Code Base

Code Base  Советники  МTC "Сombo" Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот индикатор для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
МTC "Сombo" [ en ]
Автор: Reshetov (27.02.2008 09:54)
Рейтинг: 9
Скачано: 8604
Скачать:
 Combo_Right.mq4 (4.6 Kb) View
Постановка задачи для данной МТС звучит так:

Пусть у нас есть некая базовая торговая система - БТС. Необходимо
спроектировать и обучить нейросеть таким образом, чтобы она могла
делать то, на что неспособна БТС. В результате чего должна получиться
торговая система из двух комбинированных и взаимнодополняющих друг
друга БТС и НС.

Или говоря по простонародному, незачем изобретать велосипед, коли он
уже давно изобретен. Ведь зачем пытаться научить кого либо быстро
бегать, если есть автомобиль или летать, если есть вертолет?

Если у нас есть трендовая ТС, то необходимо обучить нейросеть только
контртрендовой стратегии. Потому что, система предназначенная для
трендов не в состоянии адекватно торговать в трендах боковых, распознавать
откаты или развороты. Можно, конечно взять две МТС, одну потрендовую, вторую контртрендовую и поставить торговать на один чарт. Но с другой стороны, также можно и обучить нейронную сеть дополнять какую либо торговую систему.

Для этой цели была спроектирована двуслойная нейронная сеть, состоящая
из двух перцептронов нижнего слоя и одного перцептрона в слое верхнем.
Выход нейросети имеет три состояния:

  1. Вход в рынок длинной позицией
  2. Вход в рынок короткой позицией
  3. Неопределенное состояние

Собственно третье состояние - это передача управления БТС, в то время, как в первых двух торговые сигналы выдаются нейросетью.

Обучение нейросети разделено на три этапа, на каждом из которых
обучается один перцептрон. И на любом этапе обязательно присутствует
оптимизированная БТС, чтобы перцептроны знали, на что она способна.

Раздельное обучение перцептронов генетическим алгоритмом связано с
недостатком этого самого алгоритма, а именно ограничением количества
входных параметров, подбираемых с его помощью. Впрочем, каждый этап
обучения логически последователен и размер нейросети не слишком велик,
поэтому весь процесс оптимизациии проходит за вполне приемлемое время.

Но самый первый этап, предваряющий обучение НС, состоит в оптимизации БТС.

Чтобы не запутаться, номер этапа заносится во входной параметр МТС c
идентификатором - pass. А идентификаторы входных параметров,
соответствующих номеру этапа заканчиваются на число равное этому самому
номеру.

Итак, предварительная подготовка к оптимизации и обучению НС. В в
тестере в свойствах эксперта, вкладка "Тестирование" установим
начальный депозит $1000000 (так, чтобы не создать искуственного
маржинколла во время оптимизации), оптимизируемый параметр "Balance" и
включим генетический алгоритм.

Переходим во вкладку "Входные параметры" свойств советника.
Устанавливаем размер лота открываемых позиций, присвоив идентификатору
lots значение 1.

Оптимизацию будем проводить по модели: "По ценам открытия (Быстрый метод на сформировавшихся барах, только для советников с явным контролем открытия баров).", поскольку такой контроль в алгоритме МТС присутствует.

Первый этап оптимизации. Оптимизация БТС:

Входному параметру pass устанавливаем значение 1.
Оптимизируем только входные параметры соответствующие первому этапу,
все идентификаторы которых заканчиваются единичкой, а следовательно
устанавливаем только на них галочки, оптимизации, и удаляем галочки со
всех остальных параметров.

tp1 - тейкпрофит БТС. Оптимизируется значениями от 10 до 100 с шагом 1
sl1 - стоплосс БТС. Оптимизируется значениями от 10 до 100 с шагом 1
p1 - период осциллятора CCI, который применяется в БТС. Оптимизируется значениями от 3 до 100 с шагом 1

После оптимизации БТС получаем результаты:


Второй этап. Обучение перцептрона отвечающего за короткие позиции:

Входному параметру pass придаем значение 2, т.е. соответствующее номеру этапа.
Убираем галочки оптимизации, выставленные на предыдущем этапе. Сохраняем, на всякий случай входные параметры, полученные на предыдущем этапе в файл.

Устанавливаем галочки оптимизации для параметров второго этапа, т.е. идентификаторы которых заканчиваются двойкой:

x12, x22, x32, x42 - весовые коэффициенты перцептрона, распознающего короткие позиции. Оптимизируются значениями от 0 до 200 с шагом 1.
tp2 - тейкпрофит позиций, открываемых перцептроном. Оптимизируется значениями от 10 до 100 с шагом 1
sl2 - стоплосс позиций, открываемых перцептроном. Оптимизируется значениями от 10 до 100 с шагом 1
p2 - период значений разницы цен, который анализируется перцептроном. Оптимизируется значениями от 3 до 100 с шагом 1.

Запустим обучение через оптимизацию ГА. По завершении получаем результаты:

Третий этап. Обучение перцептрона отвечающего за длинные позиции:

Входному параметру pass придаем значение 3, т.е. соответствующее номеру этапа.
Убираем галочки оптимизации, выставленные на предыдущем этапе.
Сохраняем, на всякий случай входные параметры, полученные на предыдущем
этапе в файл.

Устанавливаем галочки оптимизации для параметров второго этапа, т.е. идентификаторы которых заканчиваются тройкой:

x13, x23, x33, x43 - весовые коэффициенты перцептрона, распознающего длинные позиции. Оптимизируются значениями от 0 до 200 с шагом 1.
tp3 - тейкпрофит позиций, открываемых перцептроном. Оптимизируется значениями от 10 до 100 с шагом 1
sl3 - стоплосс позиций, открываемых перцептроном. Оптимизируется значениями от 10 до 100 с шагом 1
p3 - период значений разницы цен, который анализируется перцептроном. Оптимизируется значениями от 3 до 100 с шагом 1.

Запустим обучение через оптимизацию ГА. По завершении получаем результаты:



Завершающий четвертый этап. Обучение первого слоя, т.е. перцептрона, который находится в верхнем слое:

Входному параметру pass придаем значение 4, т.е. соответствующее номеру этапа.
Убираем галочки оптимизации, выставленные на предыдущем этапе.
Сохраняем, на всякий случай входные параметры, полученные на предыдущем
этапе в файл.

Устанавливаем галочки оптимизации для параметров второго этапа, т.е. идентификаторы которых заканчиваются четверкой:

x14, x24, x34, x44 - весовые коэффициенты перцептрона первого слоя. Оптимизируются значениями от 0 до 200 с шагом 1.
p4 - период значений разницы цен, который анализируется перцептроном. Оптимизируется значениями от 3 до 100 с шагом 1.

Запустим обучение через оптимизацию ГА. По завершении получаем результаты:


Все, нейронная сеть обучена.

У МТС есть еще один неоптимизируемый входной параметр mn - магический номер, т.е. идентификатор позиций, чтобы торговая система не путала свои ордера с ордерами открытыми вручную или другими МТС. Значение магического номера должно быть уникальным и не совпадать с магическими номерами позиций которые не были открыты данным советником.

P.S.

  • Размер начального депозита определяется как абсолютная просадка умноженная на два, т.е. с запасом прочности.
  • Советник в исходниках не оптимизирован
  • Если возникнет необходимость заменить встроенную БТС , алгоритмом другой торговой системы, то необходимо изменить содержимое функции basicTradingSystem()
  • Чтобы не вводить вручную начальные, конечные значения и размеры шагов оптимизации, можно взять готовый файл combo.set и поместив его в папку \tester MT4, загрузить в свойствах советника в тестере.

  • Переоптимизация советника выполняется в выходные, т.е. в субботу или (либо) в воскресенье, но только в том случае, если результаты предыдущей недели были убыточными. Наличие убытков говорит, что рынок изменился и необходима переоптимизация. Наличие прибыли, говорит о том, что МТС не нуждается в переоптимизации и достаточно хорошо распознает рыночные паттерны
К сожалению? в начальную, выложенную здесь версию исходников закралась досадная ошибка: одна из закрывающихся фигурных скобок стояла не на месте, из-за чего 4 этап обучался и интерпретировался не корректно. Просьба ко всем, кто скачал файл Combo.mq4 обновиться до версии Combo_Right.


43 комментария: 1 2 3 4 5   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий
Serg_ASV писал(а):
Надеюсь Ваш очередной перцептрон все-же будет работать более устойчиво, чем предыдущие версии. Ибо зачастую после ошеломляющих результатов он давал слив депо через некоторое время, а иногда и сразу.
Надеюсь, что Вы не будете в дальнейшем завышать риски? Любая торговая стратегия может дать просадку,  причем в самом неожиданном месте (см. на графики и на отчеты, там она тоже имеет место). А если превышены допустимые пределы риска, то и в маржинколл.

Мне пока еще неизвестна такая торговая стратегия, которая абсолютно во всех рыночных ситуациях будет давать только стабильную прибыль.

Конечно же, кто не рискует, тот не пьет шампанского. Поэтому  я предпочитаю коньяк.
27.02.2008 15:28 Reshetov
Надеюсь Ваш очередной перцептрон все-же будет работать более устойчиво, чем предыдущие версии. Ибо зачастую после ошеломляющих результатов он давал слив депо через некоторое время, а иногда и сразу.
27.02.2008 13:31 Serg_ASV
Если кому интересны комментарии к советнику, то их можно посмотреть по ссылке: http://bigforex.biz/load/2-1-0-171, там советник был выложен немного раньше

Таким образом можно узнать ответы на уже заданные вопросы, чтобы их заново здесь не дублировать и не ждать ответов


27.02.2008 12:53 Reshetov