Генератор торговых стратегий
| |
coaster | Дата: Пятница, 31.10.2008, 02:26 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 7
Статус: Offline
| В начале своей работы на Forex я уловил одну деталь: главное, чтобы была прибыльная торговая система. Много времени ушло на то, чтобы понять: системы, которая всегда будет приносить прибыль - не существует. Но, как оказалось, это смотря что понимать под словом система. Ведь систематическая смена системы в соответствии с определённым вышестоящим алгоритмом - это также система. В конце-концов пришлось прийти к выводу, что любая система должна иметь определённый гарантийный срок эксплуатации, после которого её можно смело выкинуть на помойку. Но как быть: если я за такой огромный срок так и не смог найти прибыльную систему, которой хоть немного смог бы доверять свои средства, а теперь получается, что мне их нужно просто таки "штамповать" как на конвейере. Идея пришла, после прочтения статьи о генетических алгоритмах. Саму реализацию этих алгоритмов я понял очень смутно, но так и не успел понять их до конца, ведь пришла идея! Речь идёт о включении в параметры тестера номеров булевых функций: Code extern int A=9; extern int B=26; extern int C=52; //---- параметры-номера булевых функций extern int P1=2; extern int P2=9; extern int P3=-5; extern int P4=0; extern int P5=-24; каждая из которой - есть определённое правило, знак "минус" - означает инверсию, нуль - означает отсутствие правила. Пример: Code bool Func (int ExtParam) { if (ExtParam==0) return (true); switch (ExtParam) { case 1: if (iIchimoku(NULL,0,A,B,C,MODE_TENKANSEN,1)>iIchimoku(NULL,0,A,B,C,MODE_KIJUNSEN,1)) return (true); else return (false); break; case -1: if (iIchimoku(NULL,0,A,B,C,MODE_TENKANSEN,1)<iIchimoku(NULL,0,A,B,C,MODE_KIJUNSEN,1)) return (true); else return (false); break; case 2: if (Close[1]>iIchimoku(NULL,0,A,B,C,MODE_TENKANSEN,1)) return (true); else return (false); break; case -2: if (Close[1]<iIchimoku(NULL,0,A,B,C,MODE_TENKANSEN,1)) return (true); else return (false); break; //----- и так далее... } } Добавлено (31.10.2008, 02:26) --------------------------------------------- А так будет выглядеть реализация открытия позиции в функции start(): Code int OpBuy, OpSell; static int BUYticket,SELLticket; OrdersPosition(555,OpBuy,OpSell); // возвращает количество открытых позиций //---- покупка if (Func(P1) && Func(P2) && Func(P3) && Func(P4) && Func(P5) && OpBuy==0) { if (OpSell>0) OrderClose(SELLticket,0.1,Ask,5,Red); BUYticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-StopLoss*Point,0,"",555,0,Blue); return(0); }
//---- продажа if (Func(-P1) && Func(-P2) && Func(-P3) && Func(-P4) && Func(-P5) && OpSell==0) { if (OpBuy>0) OrderClose(BUYticket,0.1,Bid,5,Blue); SELLticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Ask+StopLoss*Point,0,"",555,0,Red); return(0); } Что получается в итоге? А в итоге, после оптимизации "параметров" получаются оптимальные комбинации правил, которые осталось лишь выбрать по собственным статистическим критериям, протестировать их на различных временных участках и, с помощью математических статистических инструментов, определить вероятность их дальнейшей работоспособности. Вот здесь, конечно, и начинаются трудности. Во первых: показатели тестера абсолютно не устраивают, т.к. одна комбинация, к примеру, совершает 200 сделок в год, а другая - всего 3. Понятно, что при отборе оптимальных правил придётся учитывать и свопы, и спрэды и активность стратегии, и хотелось бы иметь множество своих собственных критериев отбора. Но основное неудобство, что всё это приходится уже делать вручную в Excele, а после всего, ведь необходимо ещё и протестировать выбранные правила на всеразличных временных участках. Надеюсь, что здесь мне удастся услышать здоровую критику и совместными усилиями доработать этот недоработанный "механический конвейер".
Сообщение отредактировал coaster - Пятница, 31.10.2008, 02:31 |
|
| |
Korey | Дата: Пятница, 28.11.2008, 00:15 | Сообщение # 2 |
Рядовой
Группа: Проверенные
Сообщений: 10
Статус: Offline
| для генерации ТС доступен NeuroShellTrader. - выбираете индикаторы, задаете условия, вписываетe дополнительные условия))) щелкаете мышкой. несколько секунд и это "смарт изи терминал" создает эксперта, оптимизирует его на истории(!) и выдает картинку со стрелочками - торгуй. правда в формате метастока и трэйд стайшэн. имеется порт к МТ-4 и т.д. ну в общем можно ничего не знать, мечта продюсера ....разработчиков может привлечь скорость проверки "новых идей"
Forex как и Судьба - Она.
|
|
| |
coaster | Дата: Пятница, 28.11.2008, 07:05 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 7
Статус: Offline
| Спасибо за рекомендации. Доберусь и до этого. Но поэтапно. Мне бы со статистикой разобраться, а граали штамповать на видимых участках уже умею, жаль только на будущих участках они не штампуются. Что порекомендуете по статанализу для МТ4?
|
|
| |
Korey | Дата: Пятница, 28.11.2008, 12:59 | Сообщение # 4 |
Рядовой
Группа: Проверенные
Сообщений: 10
Статус: Offline
| NS Trader у меня как и у всех крякнутый, но вот что поразительно - скоростьработы. Оптимизация занимает столькко же времени сколь в МТ-4 компиляция. MQL-4 ужасный тормоз, Если не лезть в дебри вычмата, т.е. если не перебирать алгоритмы и не пытаться самостоятельно их оценивать. тем более заново писать, то лучшее ( на мой взгляд)) будет : Библиотека Fortran => не мучатся => DLL .... посоветовать то я посоветовал, а вот сам статистику не использую, и даже фортран снес чтобы не отвлекал, чисто Фэн-Шуй - год не пользуешься - выкинь))) чем больше статистики этой - тем дальше от торговли. Можно веками сидеть в матлабе и точить матметоды для самоуспокоения. Можно радоваться Statistiсe 8, но где результат?
Forex как и Судьба - Она.
Сообщение отредактировал Korey - Пятница, 28.11.2008, 13:22 |
|
| |
coaster | Дата: Воскресенье, 30.11.2008, 06:05 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Сообщений: 7
Статус: Offline
| Как же без статистики? И по каким критериям определяете надежность ТС? На глазок? Работа - работой. Проги сами торгуют - и у меня принцип - если не свистят об ошибках, то до скончания отведённого ей времени я к ней не лезу. Ну а раз проги сами по себе работают, то есть свободное время для статистики. А чего: глядеть и нервничать как советник торгует? Зачем? Отторгует свое: тогда - разбор полётов. А чем ещё заниматься, кроме статистических расчётов? Вручную я не торгую. Направление меня не волнует. Психика - в порядке.
|
|
| |
Korey | Дата: Воскресенье, 30.11.2008, 16:20 | Сообщение # 6 |
Рядовой
Группа: Проверенные
Сообщений: 10
Статус: Offline
| генетические алгоритмы очень просты. Имеем несколько ТС, в этих ТС имеем сигналы, их сигналы - это некая логическая конструкция= составная функция с параметрами. 1. Классическая оптимизация: перебрать всевозможные комбинации сигналов и перебрать все возможные параметры. Это уходит в бесконечность. 2. Генетическое решение: найти хотя бы два(три и т.д.) субоптимальных варианта и ...случайным образом скомпоновать из них потомка (==скрещивание), далее провести оптимизацию параметров потомка. Т.е. генетика это модификация метода Монте Карло. Процесс останавливается когда не наблюдаются улучшения или когда не находится экземпляров для размножения. Реализовать это в Тестере стратений почти что возможно, тут сложность в том что и как может сохранить советник к следующему циклу оптимизации. но - главное - имея здоровую психику было бы лучше не портить нервы MQL-ем, а честно юзать в реальном Си. .... P.S. Одна из загадок: почему при описании Генетических алгоритмов избегают упоминание "Монте Карло"? Ведь это бы сразу же внесло математическую ясность, и не отпугивало бы... и у кибернетиков было бы меньше кибернетических же понтов. ..наверное опять математики поссорились....
Forex как и Судьба - Она.
Сообщение отредактировал Korey - Воскресенье, 30.11.2008, 16:31 |
|
| |
coaster | Дата: Воскресенье, 30.11.2008, 23:30 | Сообщение # 7 |
Рядовой
Группа: Проверенные
Сообщений: 7
Статус: Offline
| Quote (Korey) было бы лучше не портить нервы MQL-ем, а честно юзать в реальном Си. У меня по реальному СИ начинает уже книжная библиотека собираться. Но никакой среды для практики. Хотелось бы не зависеть от разработчиков, но применяю, то что уже знаю, т.е. MQL4. А с какой стороны подойти к Cи++ пока не знаю. Понимаю, что для Си++шников MQL4 будет выглядеть примитивом. Но для практического изучения Си++ необходимо по крайней мере свободное время, хотя желание есть огромное. Что Вы можете порекомендовать в качестве среды разработки кода в Си++? Желательно руссифицированной и интуитивно понятной.
|
|
| |
Korey | Дата: Понедельник, 01.12.2008, 01:23 | Сообщение # 8 |
Рядовой
Группа: Проверенные
Сообщений: 10
Статус: Offline
| С++/MQL-4 == выигрыш в скорости исполнения 80-120 раз и более. ==своя генетика в Тестере может не состояться из-за нехватки календарного времени на одну оптимизацию. тут много копий сломано, напрмер я устарел как мамонт и потому сторонник простых сред, = чтобы было время и поработать 1. т.е. С5++, С6++ - эти удобны своей простотой, их недостаток - трудности с большими объемами данных. 2. Borland C++ Builder6 - оптимально нет излишней сложности, нет ограничений по памяти, +небольшой объем для скачивания 600..800М, не то что у некоторых 12 G))) недостаток - чуть медленне чем С6++ , и в1,5 раза медленнее чем С# (((но этим советом я могу поднять бурю т.к. отверг ужасный С# ))) J++ не советую т.к. типа MQL-4, легко программировать, но тяжело исполняется. --- руссификация весьма относительна - это якобы руссфикация - подписи кнопок русские, а все хэлпы ангельские. т.е. руссификация языка пограммирования всегда недостаточна, и поэтому лучше руссификацию в языках не использовать.
Forex как и Судьба - Она.
|
|
| |
|