Методология тестирования генетического компонента выходов 3





// выходим из сделок, используя модифицированный стандартный выход
// вместе с нейросетевым выходом
exitsignal = rulel[cb] && rule2[cb] && rule3[cb];
if(entryposted > 0} {
// инициализация и выходы для длинных позиций в день входа
limprice = entryprice + ptlim * exitatr[cb];
stpprice = entryprice - mmstp * exitatr[cb];
ts.exitlonglimit{'A' , limprice);
ts.exitlongstop('B', stpprice);
if(exitsignal) ts.exitlongclose('C') ;
}
else if{entryposted < 0) {
// инициализация и выходы для коротких позиций в день входа
limprice = entryprice - ptlim * exitatr[cb];
stpprice = entryprice + mmstp * exitatr[cb) ,•
ts.exitshortlimit('D', limprice);
ts.exitshortstop('E' , stpprice);
if(exitsignal) ts.exitshortclose('F') ;
}
else (
// выходы после дня входа
if(ts.position()> 0) [ // длинные позиции
ts.exitlonglimit('G' , limprice) ;
ts.exitlongstop('H', stpprice);
if(cb- entrybar >= maxhold)
exitsignal) ts.exitlongclose('I') ;
}
else if(ts.position() < 0) [ // короткие позиции
ts.exitshortlimit('J' , limprice);
ts.exitshortstop('K' , stpprice);
if(cb- entrybar >= maxhold
exitsignal) ts.exitshortclose('L');
}
)
} // обрабатываем следующий день
}

Вышеприведенный код демонстрирует логику как входов, так и выходов. Параметр modeltype управляет выбором длинных или коротких позиций для тестирования. Параметры ptlim и mmstp задают соответственно целевую прибыль и защитную остановку; они фиксированы на тех же уровнях, что и в предыдущем тесте нейронной сети. Каждое из трех правил рассчитывается как серия значений ИСТИНА/ЛОЖЬ, и если все три принимают значение ИСТИНА, то подается сигнал на выход exitsig. В текст программы добавлен оператор if, который подает сигнал на выход по цене закрытия, если (if) все три правила дают значение ИСТИНА (exitsig = ИСТИНА). Эволюция правил для длинных и коротких позиций проводилась аналогично эволюции правил для входов, описанной в гл. 12. Использовались 12 хромосом с тремя генами- правилами каждая. Для получения правил выхода из длинных и коротких позиций проводится эволюция 2500 поколений с использованием OptEvolve. Затем для тестирования в пределах и вне пределов выборки отбирались по 10 лучших длинных и коротких решений.