Насколько я понял из форума, проблема stoploss & takeprofit немедленно после выставления заявки решается только с помощью использования второго источника данных с меньшим таймфреймом, чем таймфрейм на котором я захожу в позицию.

Нашел в API интерфейс IExternalScript2.

Соответственно метод public virtual void Execute(IContext ctx, ISecurity source, ISecurity source2) надо имплементировать.

Вопросы.

1. Вместо одного цикла по барам, теперь будет два, так?
Как организовать второй цикл внутри первого?

Допустим у меня есть 10-минутки и минутки для stoploss/takeprofit.

Я хочу, чтобы сигналы на вход были с 10-минуток.

for (int index = 0; (index < barsCount); index++ {
if (condition) {
// открываем сделку на следующем баре
source.Positions.{Buy,Sell}AtMarket(index + 1, 1, "open");
}
}

Как корректно поставить stop/take приказы на втором источнике(минутках)?

Я так понимаю, что нужно гарантировать следующие инвариант:

Приказы должны быть выставлены позже, чем мы войдем в позицию?