В таком случае нужно применить компрессию, что бы пересчет произошем например через минуту, в таком случае алгоритм увидит одну открытую позицию и следовательно новую открывать не будет (если конечно в алгоритме написано такое условие) В любом случае новый пересчет произойдет только с новой свечей.
Например так:

Code:

  #region Сброс параметров
			
		signalLong = false; // изначально нет длинной позиции
                signalShort = false; // изначально нет короткой позиции
  #endregion
  #region Сигналы на вход в позицию
            
            if (LongPos == null // Нет длинной позиции
		&& ShortPos == null // Нет короткой позиции
		&& Остальныу есловия входа)
            	 {
		signalLong = true; // Если все условия выше выполнениы подается сигнал на открытие длинной позиции
		 }
            if (LongPos == null // Нет длинной позиции
		&& ShortPos == null // Нет короткой позиции
		&& Остальные условия входа )
                  {
		 signalShort = true; // Если все условия выше выполнениы подается сигнал на открытие короткой позиции
	          }
  #endregion
				
 			    // Исполнение сигналов
				
 #region Выполнение сигналов для длинной позиции
			    
			   LongPos = source.Positions.GetLastActiveForSignal("OpenLong",bar); // Условие идентификации длинной позиции
			   	   
			  if (LongPos == null) // Если нет активной длинной позиции
				{
					if (signalLong) // Если есть сигнал Buy,
					{
					source.Positions.BuyIfGreater (bar+1,Lot,точка входа, "OpenLong"); // Выдаем ордер на открыте новой длинной позиции
					}
				}
			 else
				{
			   	LongPos.CloseAtStop(bar+1,точка выхода,"Stop_Long" ); // Если есть открвтая длинная позици пробуем выйти по стоп лос ордеру
				}
							
#endregion
		  
#region Выполнение сигналов для короткой позиции
			
			  ShortPos = source.Positions.GetLastActiveForSignal("OpenShort",bar); // Условие идентификации короткой позиции
			 
			 if (ShortPos == null) // Если нет активной короткой позиции
				{
					if (signalShort) // Если есть сигнал Short
					{
						source.Positions.SellIfLess(bar+1,Lot, точка входа, "OpenShort"); // Выдаем ордер на открыте новой короткой позиции.
					}
			    }
			else 
				{
				ShortPos.CloseAtStop(bar+1, точка выхода, "Stop_Short"); // Пытаемся выйти по стоп лос ордеру
				}
	          
			}
			
 #endregion