Используете правильно, но вероятно не учитываете, что если стоп на прошлой (или первой) свече не выставлялся, то там будет 0.
Вот к примеру код из стандартного трейла:

var lastStop = pos.GetStop(barNum);
if(lastStop == 0)
{
return stop;
}
return pos.IsLong ? Math.Max(stop, lastStop) : Math.Min(stop, lastStop);

Здесь проверяется, что если насчитанный stop хуже предидущего, то берется предидущий стоп.