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





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

// запись фактов в файл
for(cb = 1; cb <= nb; cb++) {
if(dt[cb] < IS_DATE) continue; // период анализа
if(dt [cb+10] > OOS_DATE) break; // игнорируем данные вне пределов
// выборки
if(opn[cb+l] >= Lowest (opn, 3, cb)}
continue; // пропускаем эти факты
fprintf(fil, "%6d", ++factcount); // номер факта
PrepareNeurallnputs{var, els, cb) ;
for(k = 1; k <= 18; k++)
fprintf(fil, "%7.3f", var[k] ); // стандартные входные данные
if(opn[cb+l] < Lowest {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+1] < Lowest (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] ;