МТС "Combo_Right" - Исходники - Expert Advisors - Советники - Большой Forex - Каталог файлов - Большой Forex
Суббота, 11.09.2010, 01:26
 
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Категории каталога
Исходники [11]
Советники в исходных кодах
Откомпилированные [1]
Советники в откомпилированном виде
Мини-чат
200
Наш опрос
Что произойдет после обвала экономики США?
Всего ответов: 240
 Большой Forex - Каталог файлов
Главная » Файлы » Expert Advisors - Советники » Исходники

МТС "Combo_Right" Open Souce
[ · Скачать удаленно (5 kB) ] 24.02.2008, 17:36
Постановка задачи для данной МТС звучит так:

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

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

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

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

  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, загрузить в свойствах советника в тестере.

  • Переоптимизация советника выполняется в выходные, т.е. в субботу или (либо) в воскресенье, но только в том случае, если результаты предыдущей недели были убыточными. Наличие убытков говорит, что рынок изменился и необходима переоптимизация. Наличие прибыли, говорит о том, что МТС не нуждается в переоптимизации и достаточно хорошо распознает рыночные паттерны
Прим. адм. сайта: как правильно оптимизировать МТС читайте здесь. Особая благодарность за ссылку А. Зубрилову - Zubr

К сожалению в исходниках первоначальной версии, которая была выложена здесь содержалась ошибка: одна закрывающаяся фигурная скобка стояла не на месте. Поэтому просьба ко всем, кто скачал файл Combo.mq4, обновиться до версии Combo_Right

Категория: Исходники | Добавил: Reshetov | Автор: Yury V. Reshetov
Просмотров: 11993 | Загрузок: 2558 | Комментарии: 142 | Рейтинг: 4.9/20 |
Всего комментариев: 1421 2 3 ... 14 15 »
0  
142 Иван   (09.12.2009 16:10)
А за что отвечает перцептрон первого слоя, который на последнем этапе оптимизируется? Не совсем понятно)

0  
141 Павел   (13.10.2009 00:17)
Исправил:
//---- input parameters
extern bool Acc5Digits = true;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{

double MyPoint = Point;
if (Acc5Digits) MyPoint *= 10;

вместо Point ставим MyPoint


0  
140 Павел   (12.10.2009 23:47)
Здравствуйте!
Вижу, что советник некорректо работает с 5 знаками после запятой. Есть ли исправленная версия?

0  
139 Юрий Куркчи   (13.08.2009 17:43)
Согласен - бредовая идея. Спасибо!

0  
138 Сергей   (09.08.2009 04:21)
>Предлагаю вместо БТС использовать такую функцию:

>На мой взгляд нормальная трендовая стратегия, и оптимизировать не надо!
>У кого какие мнения?

Юрий Куркчи, это ты круто! Твоя функция после сокращений:

double basicTradingSystem() {
return (Close[0] - Open[28];);
}

И оптимизировать не надо :)


0  
137 Юрий Куркчи   (08.07.2009 19:21)
Предлагаю вместо БТС использовать такую функцию:

double basicTradingSystem() {
double w1 = 1;
double w2 = 1;
double w3 = 1;
double w4 = 1;
double a1 = Close[0] - Open[7];
double a2 = Open[7] - Open[14];
double a3 = Open[14] - Open[21];
double a4 = Open[21] - Open[28];
return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
}

На мой взгляд нормальная трендовая стратегия, и оптимизировать не надо!
У кого какие мнения?


0  
136 Юрий Куркчи   (06.07.2009 14:30)
Например вот так:

double basicTradingSystem() {
double MA1=iMA(NULL,0,18,0,MODE_EMA,PRICE_CLOSE,0);
double MA2=iMA(NULL,0,28,0,MODE_EMA,PRICE_CLOSE,0);
return(MA1-MA2);
}


0  
135 Юрий Куркчи   (06.07.2009 14:16)
Вставить МА вместо БТС не проблема, только значение МА всегда будет больше нуля. Нужно использовать хотя бы две МА, и уже МА1-МА2 сравнивать с нулем, тогда что-то получится.

0  
134 ira   (14.06.2009 11:05)
как вместо БТС добавить MA?

0  
133 Юрий Куркчи   (25.03.2009 22:44)
Для Perceptron: Плюсы ОГРОМНЫЕ !!! Дело в том что обычная ТС использует в своей работе обычные индикаторы МТ4 или собственные пользовательские. НО! Они всегда запаздывают, поэтому если входить в сделку по такой ТС, всегда будешь в минусах, потому что уже пора выходить. А эта нейроТС использует только цену для своей работы, поэтому запаздываний практически нет. И ты входишь в сделку Всегда вовремя. Разница между обычной ТС и этой огромна!!!

1 2 3 ... 14 15 »
Имя *:
Email:
Код *:
Форма входа
E-mail:
Пароль:
Поиск
Друзья сайта
FOREX MAGAZINE


Яндекс цитирования
Рейтинг Досок Объявлений
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0