Главная | Новости FX CLUB | Торговые условия | Торговые платформы | Обучение трейдингу
О компании
Торговые условия
Открыть демо-счет
Открыть реальный счет
Ввод средств на счет
Вывод средств со счета
Торговая платформа
  Торговые платформы
Платформа Libertex
Платформа MetaTrader4™
Платформа Rumus
  Аналитика
Видеообзор рынков
Видео от FX CLUB
Аналитика Forex
Экономический календарь
  Обучающие материалы
Обучение Forex
Статьи форекс
Статьи forex











 





Поиск информации по сайту:
Пользовательского поиска

генетический оптимизатор в работе

В общем, генетические оптимизаторы — предпочтительные методики для систем с множеством правил или параметров; они особенно полезны, если необходимо найти глобальное решение или работать с весьма сложными (прерывистыми и недифференцируемыми) функциями пригодности или расходов. Хотя специализированные оптимизаторы могут обгонять генетические на избранных задачах, для многоцелевой оптимизации генетический метод — один из самых мощных доступных инструментов.

На что похож генетический оптимизатор в работе? Мы перевели на C++ код для системы с пересечением скользящих средних, упоминавшейся ранее, чтобы при помощи C- Trader toolkit решать задачу оптимизации двух параметров — LenA и LenB. LenA, период первой скользящей средней, исследовался при значениях от 2 до 50, так же как и LenB — период второй скользящей средней. Оптимизация велась по показателю общей прибыли, чтобы можно было напрямую сравнивать результаты с полученными ранее методом оптимизации с лобовым подходом. Ниже приведен код для системы пересечения скользящих средних, написанный на C++:

static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, int nb, TRDSIM &ts, float *eqcls) {

// Выполнение тестирования всех моделей скользящих средних,

// используя следующие аргументы:

// parms — набор [1..MAXPRM] параметров

// dt -  набор [l..nb] дат в формате ГГММДД

// орn — набор [1..nb] цен открытия

// hi -  набор [l..nb] максимальных цен

// 1о — набор [1..nb] минимальных цен

// cls -  набор [1..nb] цен закрытия

// vol — набор [1..nb] значений объема

// oi — набор [1..nb] значений открытого интереса

// nb -  количество дней в наборе данных

// ts — ссылка на класс торгового симулятора

// eqcls — набор [1..nb] уровней капитала по ценам закрытия

//объявляем локальные переменные и макрофункции

static int cb, LenA, LenB;

static float MavgA[MAXBAR+1] , MavgB[MAXBAR+1] ;

#define CrossesAbove(a,b) ( (a[cb]>=b[cb])&&{a[cb- l]

#tdefine CrossesBelow(a,b) ((a[cb]=b[cb- l]))

//очищаем счет и снимаем неисполненные приказы

ts.clear{);

//считаем скользящие средние, используя серии (наборы} функций

LenA = parms[1];

LenB = parms[2];

Averages(MavgA, cls, LenA, nb);//Первая скользящая средняя

Averages(MavgB, cls, LenB, nb);//Вторая скользящая средняя

//проходим через дни, чтобы моделировать реальную торговлю

for (cb = 1; cb <= nb; cb++) {

//не открываем позиций в прошлом периоде

if(dt[cb] < 910302) { eqcls[cb] = 0.0; continue; }

//выполняем ожидающие ордера и считаем кумулятивный капитал

ts.update(opn[cb], hi[cb], lo [cb], cls [cb], cb) ;

eqcls [cb] = ts.currentequity(EQ_CLOSETOTAL);

//правило торговой системы пересечения двух скользящих средних

if (CrossesAbove(MavgA, MavgB)) ts.buyopen('A', 1);

if (CrossesBelow(MavgA, MavgB)) ts.sellopen('B', 1);

Для поиска оптимальных параметров путем оптимизации с лобовым подходом потребовалось бы провести 2041 тест, т.е. около 56 минут работы TradeStation согласно опыту прошлого тестирования небольшой выборки. Генетический оптимизатор справился с заданием за минуту. Кроме того, генетический оптимизатор был остановлен после проведения всего лишь 133 тестов, что должно значительно ухудшить его результат.

Данные генетического оптимизатора приведены в табл. 3- 2, где Р1 — период первой скользящей средней, Р2 — период второй скользящей средней, ЧИСТ. — чистая прибыль, Д.ЧИСТ, — чистая прибыль для длинных позиций, К.ЧИСТ. — чистая прибыль для коротких позиций, Ф.ПРИБ — фактор прибыли, ДОХ % — доходность в процентах годовых, МаксПК — максимальное падение капитала, СДЕЛ — количество совершенных системой сделок, ПРИБ% — процент выгодных сделок, Сред.рез. — прибыль или убыток от средней сделки и ПРИГ. — пригодность решения (в данном случае — просто общая прибыль). Как и в случае с данными лобовой оптимизации в табл. 3- 1, генетические данные были рассортированы по эффективности (общей прибыли) и показаны только 25 лучших.

Сравнение результатов генетической оптимизации и оптимизации с лобовым подходом (табл. 3- 1 и 3- 2 соответственно) показывает, что генетический оптимизатор обнаружил решение, для которого общая прибыль была выше ($172,725 против $145,125). Это неудивительно, поскольку исследовалось большое поле вариантов и скорость оптимизации не была ограничена последовательными шагами. Удивительно скорее то, что решение было обнаружено так быстро, несмотря на прерванный преждевременно эволюционный процесс. Подобные результаты демонстрируют невероятную мощь генетической оптимизации.

Статья размещена в рубрике: Торговые системы



 

Главная Софт Литература Читайте на сайте Советы новичкам Контакты

Copyright © 2007 fx-trader.ru