в сделку, используя определенный тип
if(stoch[cb] > 75.0} signal = - 1; } break; case 4 : // пересечение с подтверждением и инверсией k = cb + disp; if{CrossesAbove(mal, ma2, k)) { if (stoch[cb] < 25.0) signal = 1; else if{stoch[cb] > 75.0} signal = - 1; } else if (CrossesBelow (rnal, ma2 , k) } { if (stoch[cb] > 75.0) signal = - 1; else if (stoch[cb] < 25.0} signal = 1; } break; ) limprice = 0.5 * (hi [cb] + lo [cb] ) ; stpprice = cls[cb] + 0.5 * signal * exitatr[cb] ; // входим в сделку, используя определенный тип приказа if (ts.position{) <= 0 && signal == 1) { switch(ordertype) { // select desired order type 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); } // обрабатываем следующий день }