Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
МTC Сombo - эксперт для MetaTrader 4
- Просмотров:
- 21509
- Рейтинг:
- Опубликован:
- 2008.02.27 08:54
- Обновлен:
- 2016.03.29 11:53
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Пусть у нас есть некая базовая торговая система - БТС. Необходимо спроектировать и обучить нейросеть таким образом, чтобы она могла делать то, на что неспособна БТС. В результате чего должна получиться торговая система из двух комбинированных и взаимнодополняющих друг друга БТС и НС.
Или говоря по простонародному, незачем изобретать велосипед, коли он уже давно изобретен. Ведь зачем пытаться научить кого либо быстро бегать, если есть автомобиль или летать, если есть вертолет?
Если у нас есть трендовая ТС, то необходимо обучить нейросеть только контртрендовой стратегии. Потому что, система предназначенная для трендов не в состоянии адекватно торговать в трендах боковых, распознавать откаты или развороты. Можно, конечно взять две МТС, одну потрендовую, вторую контртрендовую и поставить торговать на один чарт. Но с другой стороны, также можно и обучить нейронную сеть дополнять какую либо торговую систему.
Для этой цели была спроектирована двуслойная нейронная сеть, состоящая из двух перцептронов нижнего слоя и одного перцептрона в слое верхнем.
Выход нейросети имеет три состояния:
- Вход в рынок длинной позицией
- Вход в рынок короткой позицией
- Неопределенное состояние
Собственно третье состояние - это передача управления БТС, в то время, как в первых двух торговые сигналы выдаются нейросетью.
Обучение нейросети разделено на три этапа, на каждом из которых обучается один перцептрон. И на любом этапе обязательно присутствует оптимизированная БТС, чтобы перцептроны знали, на что она способна.
Раздельное обучение перцептронов генетическим алгоритмом связано с недостатком этого самого алгоритма, а именно ограничением количества входных параметров, подбираемых с его помощью. Впрочем, каждый этап обучения логически последователен и размер нейросети не слишком велик, поэтому весь процесс оптимизациии проходит за вполне приемлемое время.
Но самый первый этап, предваряющий обучение НС, состоит в оптимизации БТС.
Чтобы не запутаться, номер этапа заносится во входной параметр МТС 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, загрузить в свойствах советника в тестере.
- Переоптимизация советника выполняется в выходные, т.е. в субботу или (либо) в воскресенье, но только в том случае, если результаты предыдущей недели были убыточными. Наличие убытков говорит, что рынок изменился и необходима переоптимизация. Наличие прибыли, говорит о том, что МТС не нуждается в переоптимизации и достаточно хорошо распознает рыночные паттерны
Мультитаймфреймный индикатор. Показывает напраление тренда нескольких временных графиков в отдельном окне.
FFS_CrossTimingИндикатор FFS CrossTiming. Показывает тренд всех cros'ов, связанных с рассматриваемой парой. Далее см. в код индикатора.
Индикатор BB-Squeeze. Модифицированная версия. Для работы нужен индикатор bbsqueeze.
up3x1_premium_v2MЭта торговая механизированная система предназначена для работы по валютной паре eur/usd на часовом графике. Отличные результаты.