24398f5c

в локальные переменные для удобного


// копируем параметры в локальные переменные для удобного обращения thresh = parms[1]; // порог выходных значений нейронной сети ranseed = parms[2]; // используется для инициализации случайной // последовательности maxhold = 10; // период максимального удержания позиции ptlim =4.5; // целевая прибыль в единицах среднего истинного // диапазона mmstp = 1.5; // защитная остановка в единицах среднего истинного // диапазона // выполняем вычисления по всему объему данных AvgTrueRangeS(exitatr,hi,lo,cls,50,nb); // средний истинный // диапазон для выхода NeuralForecast(prd, cls, nb) ; // прогнозы // запускаем генератор случайных чисел // ... используем различные случайные последовательности для каждого рынка // ... ts.model() возвращает индекс рынка (SP- 1, YX- 2, ...) iseed = - (ranseed + 10 * ts.model{)};

rnum = ran2(&iseed); // проходим через дни, чтобы смоделировать реальную торговлю for(cb = 1; cb <= nb; cb++) ( // не открываем позиций до начала периода выборки // ... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) { eqcls[cb] = О.Э; 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); // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P- 500 от 12/31/98 ncontracts = RoundToInteger(5673.О / dlrv[cb]); if(ncontracts < 1) ncontracts = 1; // избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue; // генерируем "стандартные" случайные сигналы входа signal = 0; rnum = ran2(siseed); if (rnum < 0.025) signal = - 1; // случайный короткий вход else if (rnum > 0.975) signal = 1; // случайный длинный вход // входим в сделки по цене открытия entryposted = 0; if(ts.position() <= 0 && signal == 1) ( ts.buyopen('l', ncontracts); entryposted = - 1; entryprice = opn[cb+l]; entrybar = cb + 1; } else if (ts.position)) >= 0 && signal == - 1) ( ts.sellopen('2', ncontracts); entryposted = - 1; entryprice = opn[cb+l]; entrybar = cb + 1; ) Содержание Назад Вперед