case 6: // недавние новые максимумы
1bl = 2 + (int)BiasedPosScale(v2, 48.0);
1b2 = 1 + (int)BiasedPosScale(v3, 8.0);
for(cb=lbl+3; cb<=nb; cb++)
IsNewHigh[cb] = hi [cb] > Highest(hi, 1b1, cb- 1);
for(cb- maxlb; cb<=nb; cb++)
ans[cb] = EventPresent(IsNewHigh, 1b2, cb) ;
break;
case 7: // недавние новые минимумы
1bl = 2 + (int)BiasedPosScale(v2, 48.0);
1b2 = 1 + (int)BiasedPosScale(v3, 8.0);
for(cb=lbl+3; cb<=nb; cb++)
IsNewLow[cb] = lo[cb] < Lowest(lo, 1b1, cb- 1) ;
for(cb=maxlb; cb<=nb; cb++)
ans[cb] = EventPresent(IsNewLow, 1b2, cb);
break;
case 8: // среднее направленное движение
thrl = LinearScale(v2, 5.0, 50.0);
thr2 = thrl + LinearScale(v3, 5.0, 20.0);
AvgDirMov{hi, lo, cls, nb, 14, Serl);
for(cb=maxlb; cb<=nb; cb++)
ans [cb] = (Serl[cb] > thrl && Serl [cb] < thr2)
&& Compare (Serl[cb] , Serl[cb- l], v4- 500.0);
break;
case 9: // Медленный %К
thr = LinearScale(v2, 5.0, 95.0);
fac = LinearScale(v3, 1.0, 20.0);
thrl = thr - fac;
thr2 = thr + fac;
StochOsc(Serl, hi, lo, cls, 2, 10, nb) ;
for(cb=maxlb; cb<=nb; cb++)
ans [cb] = (Serl[cb) > thrl && Serl [cb] < thr2)
&& Compare(Serl[cb], Serl[cb- 1], V4- 500.0);
break ;
case 10: // направление наклона MACD
lb1 = 2 + (int)BiasedPosScale(v2, 18.0);
lb2 = lbl + 1 + (int)BiasedPosScale(v3, 48.0);
MacdOsc(Serl, cls, 1, lbl, lb2, nb) ;
for(cb=maxlb; cb<=nb; cb++)
ans[cb] = Compare(Serl[cb], Serl[cb- 2], v4- 500.0),•
break;
default:
nrerror("Undefined rule template selected");
break;
]
// первые maxlb элементов результата должны иметь значение ЛОЖЬ
memset (&ans [1] , 0, sizeof(*ans) * maxlb);
#undef BiasedPosScale
#undef LinearScale
}
static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM &ts, float *eqcls) {
// Генетическая эволюция модели входа, основанной на правилах.
// File = xl6modOl.c
// parms — набор [1..MAXPRM] параметров
// dt — набор [1..nb] дат в формате ГГММДД
// орn - набор [l..nb] цен открытия
// hi — набор [l..nb] максимальных цен
// 1о — набор [l..nb] минимальных цен
// cls - набор [l..nb] цен закрытия
// vol — набор [l..nb] значений объема
// oi - набор [l..nb] значений открытого интереса
// dlrv — набор [l..nb] средней долларовой волатильности
// nb — количество дней в наборе данных
// ts — ссылка на класс торгового симулятора
// eqcls — набор [l..nb] уровней капитала при закрытых позициях