в сделку, используя определенный тип


Глава 1 Глава 2 Глава 3
// генерируем торговые сигналы if (goodcycle) { domperiod = filter [domperndx- 1] .period() ; phase = (180.0 / PI) * atan2(inquad[domperndx] [cb], inphase[domperndx] [cb]); oldphase = (180.0 / PI) * atan2(inquad[domperndx] [cb- 1], inphase[domperndx] [cb- 1] ); phaseb - (phase<0.0) ? (360.0+phase) : phase; oldphaseb = (oldphase<0.0) ? (360.0+oldphase) : oldphase; sellphase = 0.0 - (disp + 180.0 / domperiod); buyphase = 180.0 + sellphase; if (phaseb > buyphase && oldphaseb <- buyphase) signal = 1; // сигнал на покупку if (phase > sellphase && oldphase <= sellphase)

signal = - 1; // сигнал на продажу } break; } limprice = 0.5 * (hi [cb] + lo [cb] ) ; stpprice = cls[cb] + 0.5 * signal * exitatr[cb]; // печатаем отладочную информацию #ifdef SIGNALDEBUG fprintf(fil, "%8d %8.1f %8d %8d %8d %8d\n", cb, cls[cb], signal, (int)filter[domperndx- 1].period(), (int)peakpower, {int)peaknoise); #endif // входим в сделку, используя определенный тип приказа if(ts.position() <= 0 && signal == 1) ( switch(ordertype) { // выбираем нужный вид приказа case 1: ts.buyopen('1', ncontracts); break; case 2: ts.buylimit ('2', limprice, ncontracts); break; case 3: ts.buystop('3', stpprice, ncontracts); break; default: nrerror("Invalid buy order selected"); } else if (ts.position() >= 0 && signal == - 1) { switch(ordertype} { // выбираем нужный вид приказа case 1: ts.sellopen('4', ncontracts); break; case 2: ts.selllimit('5', limprice, ncontracts); break; case 3: ts.sellstop('6', stpprice, ncontracts); break; default: nrerror("Invalid sell order selected"); } // симулятор использует стандартную стратегию выхода tmp = exitatr[cb]; ts.stdexitcls('X', ptlim*tmp, mmstp*tmp, maxhold); } // обрабатываем следующий день // закрываем, если в режиме отладки #ifdef SIGNALDEBUG fclose(fil); exit(0); #endif }
Содержание раздела