Ваш скрипт неправильно написан, BuyIfGreater и CloseAtStop должны быть всегда по i+1, иначе вы по сути смотрите в будующее. Выставляете заявку уже по закрытому (прошедшему) бару. В лаборатории будут неверные результаты.

Что касается цены открытия - у вас явно таки написано:
ClosePrice = sec.OpenPrices[i] + 0.1d;

Однако закрытие по стопу означает, что цена должна равна или ниже указанной (для лонговой позиции). Что и происходит, система видит, что цена открытия всегда НИЖЕ вашей стоп заявки и закрывает ее. Чтобы и происходило, если бы отправили такую заявку на сервер.

Поменяйте на:
ClosePrice = sec.OpenPrices[i] - 0.1d;

Но еще раз повторяю, этот скрипт смотрит в будущее, при выставлении заявок необходимо указывать i+1.