Прошу помочь с реализацией входа по пересечению цены с индикатором Price Channel.
Стратегия с такими входами есть у меня в WealthLab и прекрасно работает. А вот перевести код в скриптовый язык АД4 не получается.
Там условие входа определяется так:
Код: Выделить всё
// Создаем серию чисел по максимумам, период = 10, сдвигаем серию на один бар вперед
DataSeries LineToBuy = Highest.Series(High, 10) >> 1;
// Задаем условие входа в Long - пересечение максимумом цены линии LineToBuy
bool signalBuy = CrossOver(bar, High, LineToBuy);
// И покупаем по текущему значению линии LineToBuy
if (signalBuy) // При получении сигнала на вход в длинную позицию
{
BuyAtStop(bar, LineToBuy[bar]); //покупаем при пересечении верхнего уровня
}
В Альфа Директе вот эта штука (>> 1) сдвиг на один бар вперед, не работает. Ошибка при компиляции. Понятно что цена никогда не пересекает свой PriceChannel построенный по хаям, если не сдвинуть его.
Я пробовал получить значение индикатора на предыдущем баре, чтобы использовать это значения для пересечения с ценой, но сделок при тестировании не происходит.
Код: Выделить всё
// Глобальные переменные
AddGlobalVariable("SignalLong", Types.Boolean, false); // Условие открытия позиции Long
AddGlobalVariable("enterLong_Price", Types.Double, 0.0); // Цена открытия позиции Long
// Расчет уровня для открытия позиции
enterLong_Price = MY.PriceChannel(Bars, HighPeriod).GetValue("high", -1);
// Определение условий для открытия позиции Long
SignalLong = Bars.High[0] > enterLong_Price; /
// Пытаемся купить
if (SignalLong) // При получении сигнала на вход в длинную позицию
{
EnterLong();
}
Ошибок компиляции нет, но и сделки не проходят на тестировании. Не могу понять в чем ошибка.