Ну, код, мягко говоря, не очень. Видимо получен из автоматически генерируемого TSLab`ом временного файла.

Много лишнего.

В коде используются переменные "Source" и "source". Не понятно: это опечатка или так и задумано. Размер, в данном случае, имеет значение smile. Очень похожие имена лучше не использовать, можно легко ошибиться.

Повторное:
count--;
это скорее всего ошибка.

В строчках:
Code:
  if ((source.IsLastBarUsed == false))
    barsCount--;
  for (int bar = ctx.TradeFromBar; bar < barsCount; bar++)

похоже ошибка. Если "IsLastBarUsed == false" то скрипт будет выставлять последнюю заявку на ПОСЛЕДНИЙ бар, а не на следующий за ним, что не правильно (в реале сделок не будет вообще, насколько я понимаю).

Что еще? Обработка ошибок (try...catch) не нужна. TSLab сам все перехватит.

Да, параллельно ведутся ДВЕ позиции, с именами: "LN" и
"SN". Сигналов рассчитывается тоже 2 и они не связаны. Это означает, что не исключена ситуация когда будет два сигнала и две открытые позиции: лонг и шорт. Скорее всего сигналы взаимоисключающиеся, но из отрывка кода этого не ясно.

Ну и раз уж я все равно это сделал, прикреплю свой вариант форматирования кода, вдруг да окажется полезным:
Click to reveal..

Code:
      // Make 'log_long' item data
      int count = nRange.Count;
      var log_long = new bool[count];
      if (Source.IsLastBarUsed == false)
        count--;

      for (int bar = 1; bar < count; bar++)
        log_long[bar] = "условие";

      // Make 'log_short' item data
      var log_short = new bool[count];
      if (source.IsLastBarUsed == false)
        count--;
      for (int bar = 1; bar < count; bar++)
        log_short[bar] = "условие";

      //.........................
      //Декомпрессия индикаторов

      //.........................
      //Проход по барам

      if (source.IsLastBarUsed == false)
        barsCount--;
      
      for (int bar = ctx.TradeFromBar; bar < barsCount; bar++) {
        var LongPos = source.Positions.GetLastActiveForSignal("LN");
        var ShortPos = source.Positions.GetLastActiveForSignal("SN");
        // Торговля
        if (LongPos == null) {
          if (log_long[bar])
            source.Positions.BuyAtMarket(bar + 1, 1, "LN");
        } else {
          if (LongPos.EntryBarNum <= bar)
            if (log_short[bar])
              LongPos.CloseAtMarket(bar + 1, "LX");
        }

        if (ShortPos == null) {
          if (log_short[bar])
            source.Positions.SellAtMarket(bar + 1, 1, "SN");
        } else {
          if (ShortPos.EntryBarNum <= bar)
            if (log_long[bar])
              ShortPos.CloseAtMarket(bar + 1, "SX");
        }
      }
    }



Как там сестру таланта зовут?
smile
_________________________
Не пишите мне! Никому ничего делать не буду.