ну ничего удивительного. То что бросилось в глаза сразу:
1) это обсчитывается на каждом баре заново. То есть если позиция ведется долго и период трейла большой то получаем тьму повторных расчетов одного и тогоже. Это очень печально.
Code:
double num1 = TrailStop.CalcATR(security, this.ATRperiod, barNum, 0);


2) На каждом баре получаем расчет этих двух параметров. Дико непроизводительно!
Code:
double num2 = lowPrices[pos.FindLowBar(barNum)];
double num3 = highPrices[pos.FindHighBar(barNum)];


3) тоже не прибавляет скорости.
Code:
TrailStop.IsStopStoned(pos, this.BarsForStopStep, barNum))


Можно ли сделать иначе? Вопрос другой. На эту тему я голову не включал, предлагаю подумать самостоятельно.
_________________________
__