Здравствуйте, логика вроде очень простая.

Есть активная позиция && МА1 > МА2 - то заходим в лонг + трейлинг стоп вешаем.

Сейчас проблема, когда выходит по трейлингу, то он сразу же открывает лонг, тк МА1 > MA2 до сих пор. А нужно запретить повторный вход, пока не придет обратный сигнал.

Ниже прилагаю, как вижу я это в коде. Можно ли подобное реализовать кубиками? Спасибо!
Code:
bool КОНСТАНТА_КОТОРУЮ_ДОБАВИТЬ = false;
bool ЗАКРЫЛИСЬ_ПО_ТРЕЙЛ_СТОПУ = false;

string ОткрПозиПоРынкSignalName = "ОткрПозиПоРынк";
ОткрПозиПоРынк = Источник.Positions.GetLastActiveForSignal(ОткрПозиПоРынкSignalName, i);
// Point.1
ЕстьАктивПозиц = this.ЕстьАктивПозиц_h.Execute(Источник, i);
ЛогичесФормула = КОНСТАНТА_КОТОРУЮ_ДОБАВИТЬ == false && ЕстьАктивПозиц==false&&SMA[i]>SMA[Math.Max(0,i-1)];
ЕстьАктиДлинПози = this.ЕстьАктиДлинПози_h.Execute(Источник, i);
ЛогичесФормула1 = ЕстьАктиДлинПози&&SMA[i]<SMA[Math.Max(0,i-1)];
ТрейлСтопАбс = this.ТрейлСтопАбс_h.Execute(ОткрПозиПоРынк, i);

if (ЛогичесФормула1 && ЗАКРЫЛИСЬ_ПО_ТРЕЙЛ_СТОПУ)
{
	КОНСТАНТА_КОТОРУЮ_ДОБАВИТЬ = false;
	ЗАКРЫЛИСЬ_ПО_ТРЕЙЛ_СТОПУ = false;
}

if ((ОткрПозиПоРынк == null))
{
	// Point.2
	if (ЛогичесФормула)
	{
		if (((ОткрПозиПоРынк == null) 
			&& (context.TradeFromBar <= i)))
		{
			Источник.Positions.OpenAtMarket(((bool)(this.ОткрПозиПоРынк_Long.Value)), i+1, 1D, ОткрПозиПоРынкSignalName, null, TSLab.Script.PositionExecution.Normal);
			КОНСТАНТА_КОТОРУЮ_ДОБАВИТЬ = true;
		}
	}
}
else
{
	if ((ОткрПозиПоРынк.EntryBarNum <= i))
	{
		if (ЛогичесФормула1)
		{
			ОткрПозиПоРынк.CloseAtMarket(i+1, "ЗакрПозиПоРынк", null, TSLab.Script.PositionExecution.Normal);
			КОНСТАНТА_КОТОРУЮ_ДОБАВИТЬ = false;
		}

		ОткрПозиПоРынк.CloseAtStop(i+1, ТрейлСтопАбс, "ЗакПозПоStoLos");
		if (ЕСЛИ МЫ ЗАКРЫЛИСЬ ПО ТРЕЙЛ СТОПУ)
			ЗАКРЫЛИСЬ_ПО_ТРЕЙЛ_СТОПУ = true;
	}
}