Методология тестирования лунных моделей 2





// Подсчитываем лунное (в зависимости от даты и фазы) скользящее среднее
// для каждого дня, основанное на предыдущих днях и (в некоторых случаях)
// на последующих днях с эквивалентной лунной фазой.
// Работаем на всех имеющихся данных.
//а - вывод: значения [1..n] лунного среднего
//v - ввод: исходный ценовой ряд данных [1..n]
// dt - ввод: соответствующие [1..n] данные
// mode - ввод: метод анализа:
// 1 = складной нож IS, все прошлые циклы 008
// 2 - фиксированный период в лунных циклах
//m - ввод: дата (для режима - 1) или период анализа (для режима = 2)
// n - ввод: количество дней во всех рядах
static int i, j, cnt;
static unsigned long k;
static float sum, sdate, tiny=l.OE- 20;
if(mode == 1) { // режим складного ножа
for(i = 1; i <= n; i++} { // для каждого текущего дня
sum = 0.0; cnt = 0;
for(j = 2; j < 1000; j++) { // двигаемся назад
sdate - LunarEquivDate {dt[i] , - j ) ; //к исходной дате
if(sdate < dt[3]) break; // переход к началу
hunt(dt, n, sdate, &k) ; // находим индекс
if (sdate > dt[k]) k++;
cnt++; sum += v[k] ; // накапливаем среднюю
}
for(j = 2; j < 1000; j ++) { // двигаемся вперед
sdate = LunarEquivDate {dt[i], j); //к исходной дате
if(sdate > m) break; // избегаем данных oos
hunt(dt, n, sdate, &k); // находим индекс
if(sdate > dt[k]) k++;
cnt++; sum +- v[k]; // накапливаем среднюю
}
a[i] = sum / (cnt + tiny); // заканчиваем среднюю
) // следующий день
}
else if(mode == 2) { // режим фиксированного периода анализа
for(i = 1; i <= n; i ++) { // для каждого текущего дня
sum =0.0; cnt = 0;
for(j =2;j<1000;j++) { // двигаемся назад
if(cnt >= m) break; // выполняем достаточные условия
sdate = LunarEquivDate(dt[i] , - j); // исходная дата
if (sdate < dt[3]) break; // идем к началу
hunt(dt, n, sdate, &k); // находим индекс
if{sdate > dt[k]} k++;
cnt++; sum +- v[k]; // накапливаем среднюю
}
for(j = 2; - j < 1000; j++) { // двигаемся вперед
if (cnt >= m) break; // выполняем достаточные условия
sdate = LunarEquivDate(dt[i] , j ) // исходная дата
hunt(dt, n, sdate, &k) ; // находим индекс
if (sdate > dt[k]} k++;
cnt++; sum += v[k]; // накапливаем среднюю
}
a[i] = sum / (cnt + tiny) // заканчиваем среднюю
} // следующий день
}
}
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) {