Code:
public void Execute(IContext ctx, ISecurity sec)
        {
            for (var i = 5; i < ctx.BarsCount; i++)
            {
		var OpenPositionsALL = sec.Positions.GetLastPositionActive(i)
                var OpenPositions = sec.Positions.GetLastActiveForSignal("Long");
                if (OpenPositions == null)
                {
                    if (i = 100)
                    {
                        sec.Positions.BuyAtMarket(i, 2, "Long");
                    }
                }
                else
                {
                    if ( OpenPositions.EntryBar.Open > OpenPositions.EntryBar.Open + 200
                        && (в списке позиций OpenPositionsALL нет сигнала Take1) )
                        sec.Positions.SellAtMarket(i, 1, "Take1");
                    if ( OpenPositions.EntryBar.Open > OpenPositions.EntryBar.Open + 400
                        && (в списке позиций OpenPositionsALL нет сигнала Take2) )
                        sec.Positions.SellAtMarket(i, 1, "Take2");
                }
            }
         }


А если сделать так? Это будет работать (чтобы чистая позиция в итоге равнялась нулю)?
"(в списке позиций OpenPositionsALL нет сигнала Take1)" - как написать это кодом?