Добрый день,
вопрос из разряда надоевших: про открытие позиции.
Статегия такая: если цена закрытия последнего бара выше определенной величины, то на открытии текущего бара выставляется рыночный ордер на покупку.
Когда у меня в свойствах стоит "Интервал пересчета" - Интервал, то Bar[i] - это последний закрывшийся бар, а Bar[i-1] - это предпоследний. Но я не могу сообразить, как тогда писать код:
if(source.Bars[i-1].Close >= dayhigh)
{
source.Position.BuyAtMarket(i, 1, "Long");
}
В этом случае позиция на тестере откроется задним числом - появится на открытии i-го бара, который уже закрылся, поскольку началось формирование бара i+1. Ну а на реальных торгах она, соответственно, не появится вообще.
Есть одна идея: если везде поставить i, то на тестере ордер размещается на открытии того же самого бара, который пробил значение dayhigh. Получается опять размещение задним числом, но я читал, что на реальной торговле TSLab исполнит заявку как раз на открытии следующего бара, что и нужно по условию.
Где я не прав и как быть?
Спасибо.