в локальные переменные для удобного
if(strcmp(ts.symbol(), "SP") == 0) ( fil = fopen("yl5fac01.dat", "wt"); fprintf(fil, "%d\n%d\n", (int)18, (int)l); factcount = 0; } // записываем действительные факты в файл // делаем для каждого рынка в портфеле for(cb = 1; cb <= nb; cb++) ( if(dt[cb] < ISJATE) continue; // период анализа if(dt[cb+10] > OOS_DATE) break; // игнорируем данные вне пределов выборки fprintf(fil, "%6d", ++factcount) ; // номер факта PrepareNeurallnputs(var, cls, cb) ; for(k = 1; k <= 18; k++) fprintf(fil, "%7.3f", var[k]); // входные значения fprintf(fil, "%7.3f\n",revstoch[cb] ); // цель if((cb % 1000) == 1) printf("CB = %d\n", cb); // информация о прогрессе } // закрываем выходной файл и выходим после обработки последнего рынка if(strcmp(ts.symbol(), "LB") == 0) ( fclose(fil); exit(0); } } // моделируем торговлю с обученной нейросетью if(mode == 2) { // режим торгового симулятора (рб=2) // загружаем обученную сеть перед обработкой первого рынка if (strcmp(ts.symbol(), "SP") == 0) ( sprintf(netname, "/nets/nn%d.net", netnum); nnet = ntlload(netname) ; if(nnet == NOLL) nrerror(ntlerrm(ntlerrc())); } // проходим через дни, чтобы смоделировать реальную торговлю 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"); egcls[cb] = ts.currentequity(EQ_CLOSETOTAL); // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P- 500 от 12/31/98 ncontracts = RoundToInteger(5673 .0 / dlrv[cb]); if(ncontracts < 1) ncontracts = 1; // избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue;