#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