Ничего не делайте! Место для


Глава 1 Глава 2 Глава 3
// выполняем вычисления для всех данных AvgTrueRangeS(exitatr,hi,lo,cls,50,nb) ; // средний истинный диапазон для // выхода switch (modeltype) [ case 1: // Ничего не делайте! Место для будущего кода, break ; default: nrerror ("Invalid model type"); ) // проходим через дни, чтобы смоделировать реальную торговлю for(cb = 1; cb <= nb; cb++) { // не открываем позиций до начала периода выборки // ... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) 1 egcls[cb] = 0.0; continue; ) // выполняем ожидающие приказыи сохраняем значение капитала rc = ts.update (opn [cb] , hi [cb] , lo [cb] , cls [cb] , cb) ; if(rc != 0) nrerror{"Trade buffer overflow");

eqcls[cb] = ts.currentequity(EQ_CLOSETOTAL); //не торгуем в последние 30 дней выборки // оставляем место в массивах для будущих данных if(cb > nb- 30) continue; // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P- 500 от 12/31/98 ncontracts = RoundToInteger(5673 . О / dlrv[cb] ) ; if (ncontracts < 1) ncontracts = 1; // избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+1] == lo[cb+1]} continue; // генерировать входные сигналы, цены стоп- и лимитных приказов signal = 0; switch (modeltype) { case 1: // ищем хороший цикл для торговли domperndx = 0; peakpower = - 1.0; for(k = 1; k <= fcount; k++) { if(power[k][cb] > peakpower) { peakpower = power[k][cb]; domperndx = k; } goodcycle = FALSE; if(domperndx > 3 && domperndx < fcount- 1) { peaknoise = 0.0; for(k = 1; k <= fcount; k++) { if (abs(k - domperndx) > 2) { if (power[k] [cb] > peaknoise) peaknoise - power[k] [cb] ; } if(peakpower > 1.5 * peaknoise) goodcycle = TRUE; }
Содержание раздела