У вас не стоит Flash Player
Настройки
#87046 - Fri Sep 03 2021 02:33 PM Запретить повторный вход
fastalgo Offline
stranger

Registered: Wed May 12 2021
Записи: 2
Здравствуйте, логика вроде очень простая.

Есть активная позиция && МА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;
	}
}

Наверх
#87047 - Fri Sep 03 2021 02:40 PM Re: Запретить повторный вход [Re: fastalgo]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8143
Простое пересечение выдаст не МА1 > MA2, а МА1 > MA2 && МА1[i-1] < MA2[i-1]
т.е. одиночный сигнал, таким образом до следующего пересечения открывать позиции не будет.
Либо использовать блок Перевернуть.
Но, тогда нужно будет придумать второе условие, до которого он будет держать сигнал.
Кубиками сделать можно.

Наверх
#87049 - Fri Sep 03 2021 09:00 PM Re: Запретить повторный вход [Re: ViL]
fastalgo Offline
stranger

Registered: Wed May 12 2021
Записи: 2
Спасибо, решил проще изменить условие входа.

Наверх


Moderator:  ViL, sar