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;
}
}