При написании кода обнаружил странную ситуацию, что метод CloseAtProfit - работает очень странно.
Например данный код работает корректно:
for (int bar = 0; bar < barsCount; bar++)
{
if (source.Positions.ActivePositionCount > 0)
{
var pLast = source.Positions.LastPosition;
pLast.CloseAtProfit(bar + 1, pLast.EntryPrice + 100, "Close" + bar);
}
if (bar == 10) source.Positions.BuyAtPrice(bar + 1, 1, source.Bars[bar].Close, "Buy1");
В этом случае тейк-профит работает успешно.
Однако код в котором есть 2 и более позиций работает странно:
if (source.Positions.ActivePositionCount > 0)
{
var pLast = source.Positions.LastPosition;
pLast.CloseAtProfit(bar + 1, pLast.EntryPrice + 100, "Close" + bar);
}
if (bar == 10) source.Positions.BuyAtPrice(bar + 1, 1, source.Bars[bar].Close, "Buy1");
if (bar == 11) source.Positions.BuyAtPrice(bar + 1, 1, source.Bars[bar].Close, "Buy2");
А именно, заявки по тейкпрофиту закрываются только в случае если свеча открылась по цене равной - pLast.EntryPrice + 100
В чем может быть ошибка? В документации про это ничего не сказано.
Пример работы во вложении: