Код модели обращенного Медленного %К
static void PrepareNeurallnputs (float *var, float *cls, int cb) {
// Преобразование исходных цен закрытия
// во входную информацию для нейронной сети.
// var - вывод: массив [1..18] переменных для нейросети
// cls - ввод: массив [1..] цен закрытия
// cb - ввод: индекс текущего дня
static pbars[] = { 0, 0,1,2,3,4,5,6,8,10,12,16,20,24,32,34,
40,48,64,96 };
static float pfac[19], amp;
static int notfirstpass, k;
// инициализируем таблицу фактора корректировки разницы
if(notfirstpass == FALSE) (
for(k = 1; k <= 18; k++)
pfac [k] = 1.0 / sqrt (pbars [k+1] - pbars[k]);
notfirstpass = TRUE;
}
// считаем откорректированные ценовые разницы и квадраты амплитуды
amp = 0.0;
for (k = 1; k <= 18; k++) (
var [k] = pfac [k] *
(cls[cb - pbars[k]] - cls (cb - pbars[k+1] ]);
amp += var [k] * var [k] ;
}
// нормирование вектора ценовых разниц к единице амплитуды
amp = 1.0 / sqrt(amp);
for(k = 1; k <= 18; k++)
var[k] = amp * var[k];
}
static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM its, float *eqcls) (
// Выполняет простую торговую модель на нейросетях. Она
// торгует с помощью предсказания обратного Медленного %К.
// File = xl5modOl.c
// parms - набор [1..MAXPRM] параметров
// dt — набор [1..nb] дат в формате ГГММДД
// орn - набор [l..nb] цен открытия
// hi — набор [l..nb] максимальных цен
// 1о — набор [l..nb] минимальных цен
// cls - набор [l..nbj цен закрытия
// vol — набор [l..nb] значений объема
// oi — набор [l..nb] значений открытого интереса
// dlrv - набор [1..пЬ] средних долларовой волатильности
// nb — количество дней в наборе данных
// ts — ссылка на класс торгового симулятора
// eqcls — набор [l..nb] уровней капитала при закрытых позициях
//объявляем локальные переменные
static int rc, cb, ncontracts, maxhold, ordertype;
static int mode, signal, factcount, k, netnum;
static FILE *fil;
static NEURALNET *nnet; static char netname [20];
static float thresh, netout, var[19];
static float mmstp, ptlim, stpprice, limprice, tmp;
static float exitatr[MAXBAR+1], revstoch[MAXBAR+1];