в локальные переменные для удобного
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; )