При написании кода обнаружил странную ситуацию, что метод CloseAtProfit - работает очень странно.

Например данный код работает корректно:

Code:
            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 и более позиций работает странно:

Code:
                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

В чем может быть ошибка? В документации про это ничего не сказано.


Пример работы во вложении:


Attachments
Безымянный.png (263 downloads)



Отредактировано Max Milovanov (Wed Jan 08 2014 06:14 PM)