Модели на основе точки разворота 2





Поскольку код для модели, прогнозирующей минимумы, почти идентичен коду модели на основе обращенного во времени Медленного %К, выше приведены только два измененных блока. В первом блоке обращенный Медленный %К не используется, а вместо этого рассчитывается цель — серия нулей или единиц, указывающая на наличие (1) или отсутствие (0) минимумов. При записи фактов вместо значения Медленного %К записываются значения цели. Во втором блоке вводятся правила для сравнения выхода нейронной сети с соответствующим порогом и генерации собственно сигналов входа в рынок. В обоих блоках включен код, препятствующий записи фактов и использованию прогнозирования в случае, когда завтрашняя цена открытия не может образовать минимум согласно правилам. В коде ниже приведены аналогичные правила прогнозирования максимумов.



if(dt[cb+10] > OOS_DATE) break; / / игнорируем данные вне пределов
// выборки
if(opn[cb+l] <= Highest(opn, 3, cb))
continue; // пропускаем эти факты
fprintf{fil, "%6d", ++factcount); // номер факта
PrepareNeurallnputs(var, cls, cb) ;
for (k = 1; k <= 18; k++)
fprintf(fil, "%7.3f", var[k]); // стандартные входные значения
if{opn[cb+l] > Highest(opn, 9, cb+10))
netout = 1.0; else netout =0.0; // считаем цель
fprintf(fil, "%6.1f\n", netout); // цель
if({cb % 500) == 1)
printf("CB = %d\n", cb); // информация о прогрессе
}
// генерируем входные сигналы, цены лимитных приказов и стоп- приказов
signal=0;
if(opn[cb+l] > Highest(opn, 3, cb)) { // запускаем только эти
PrepareNeurallnputs{var, cls, cb) ; // обрабатываем данные
ntlset_inputv(nnet, &var[l]); // передаем в сеть входные значения
ntlfire (nnet); // запускаем сеть
netout = ntlget_output(nnet, 0); // получаем выходные значения
netout *= 100.О; // переводим в проценты
if(netout > thresh) signal = - 1; // сигнал на продажу
}
limprice = 0.5 * (hi[cb] + lo[cb]);
stpprice = cls[cb] + 0.5 * signal * exitatr[cb];

мЮВЮКН