>null == position || position.EntryBarNum >= barNum

А может быть должно быть:
null == position || position.EntryBarNum > barNum

Дело в том, что stop-loss не выставляется на следующей после покупки свече, а только через свечу. Смотри скриншот.

Мне нужно, чтобы stop-loss не срабатывал на той же свече, что и покупка, но мог срабатывать на следующей.

Update:
То есть еще раз вся логика:

Code:
IPosition position = source.Positions.LastPositionActive;

if (
  position == null /* && other conditions*/
) {
  // try to buy or sell
} else {
   if (null == position || position.EntryBarNum >= currentBar)
     continue;
   
   if (/* condition */) {
	position.CloseAtMarket(nextBar, SignalUtils.CLOSE);
   } else {
        stopLoss.createOn(position, nextBar);
   }
}


То, есть здесь надо либо position.EntryBarNum > currentBar и stop на следующий бар.

Либо position.EntryBarNum >= currentBar но тогда stop на текущий бар.

Как правильно сделать, чтобы добиться следующего:

Мне нужно, чтобы stop-loss _не_ срабатывал на той же свече, что и покупка, но мог срабатывать на _следующей_.




Attachments
fuckup.JPG (202 downloads)



Отредактировано Sherman81 (Wed Apr 06 2011 02:24 PM)