Пожалуйста
Новичек и в роботах и в c#, где-то туплю, но где - не могу понять.
Собственно, ситуация. Написал следующий код:
for (int bar = 0; (bar < barsCount); bar++)
<Потом вычисления>
<Открытие позиции:>
===
IPosition LongPos = source.Positions.GetLastActiveForSignal("LN_1M");
if (LongPos == null)
{ <тут открываем позицию, неинтересно> }
else
{
<А вот тут ордер на закрытие>
stoplong =LongPos.EntryPrice - StopParam ;
if (ClosePrice > stoplong)
{LongPos.CloseAtStop(bar + 1, ClosePrice, "LX_1M");
}
else
{LongPos.CloseAtStop(bar+1, LongPos.EntryPrice - StopParam , "LX_1M") ;
}
}
===
В чем суть - есть стоп, которые вычисляется каждый интервал и выставляется, и есть некий минимальный стоп, который выставляется сразу и заменяется вычисляемым только когда вычисляемый больше него (при покупке). В тестировании все замечательно. Вот конкретно есть (в тестировании) сегодня сделка на покупку рим в 15:20 по 181400 и продаже в 19:50 по 183000. Все чудесно.
А вот как оно прошло в реале: покупка по 181405, все Ок, а вот уже на следующем интервале вышел сигнал на продажу "По рынку". курс был 181520. Очевидно, что обе цифры для стопа располагались ниже рынка, выставлялись лимитниками. тестирование показывает правильно все, а почему в реале так прошла сделка? Кто-нибудь подскажет где копать?
Мне кажется что я этот минимальный стоп как-то не так выставляю. У меня еще пара программок есть, где он таким же макаром стоит и где так же подозрительно быстро закрывались сделки по стопу. Пристально там еще не смотрел, все аналогично, с этим бы разобраться.