24398f5c

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


// копируем параметры в локальные переменные для удобного обращения mmstp = parms[1]; // используется для начальный защитной остановки stpa - parms[2]; // дополнительный параметр защитной остановки stpb = parms[3]; // дополнительный параметр защитной остановки ptlim = parms[6]; // целевая прибыль в единицах среднего истинного // диапазона modeltype = parms[7]; // тип используемой динамической защитной // остановки maxhold = parms[8]; // период максимального удержания позиции ranseed = parms[9]; // используется для инициализации случайной // последовательности // выполняем вычисления по всему объему данных AvgTrueRangeS{exitatr,hi,lo,cls,50,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] = 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); // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 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; rnum = ran2(&iseed); if(rnum < 0,025) signal = - 1 // случайный короткий вход else if(rnum > 0.975) signal = 1 // случайный длинный вход // входим в сделки по цене открытия entryposted = 0; if (ts.position() < = 0 && signal == 1) { ts.buyopen{'1' , ncontracts) ; entryposted - 1; entryprice = opn[cb+1]; entrybar = cb + 1; } else if(ts.position{} >= 0 && signal == - 1) { ts.sellopen{'2', ncontracts}; entryposted = - 1; entryprice = opn[cb+1]; entrybar = cb + 1; } Содержание Назад Вперед