Страница 1 из 1

Price Channel Breakouts

Добавлено: 13 апр 2019, 21:08
Stranger
Добрый день!

Прошу помочь с реализацией входа по пересечению цены с индикатором 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();
}

Ошибок компиляции нет, но и сделки не проходят на тестировании. Не могу понять в чем ошибка.

Re: Price Channel Breakouts

Добавлено: 13 апр 2019, 21:13
evge
сдвигать ничего не надо, проверяйте с предыдущим

[1] - предыдущий бар

[0] - текущий

аналогично и для серий возвращаемых индикаторами.

Вижу используете GetValue "high" -1

А код индикатора можно увидеть?

Re: Price Channel Breakouts

Добавлено: 13 апр 2019, 21:18
evge
в PriceChannel (том что в библиотеке АД4) нет серии "high" на выходе

если у вас не модифицированный код, то проверять надо серии:

Upper и/или Lower

Код: Выделить всё

MY.PriceChannel(Bars, HighPeriod).GetValue("Upper", -1);

а лучше и проще так:

Код: Выделить всё

var PC = MY.PriceChannel(Bars, HighPeriod);

//и можно обращаться к сериям будет так:
// PC["Upper"][1] - значение серии Upper на предыдущем баре, возвращенной индикатором PriceChannel
// PC["Lower"][1] - значение серии Lower на предыдущем баре, возвращенной индикатором PriceChannel

Re: Price Channel Breakouts

Добавлено: 13 апр 2019, 21:36
Stranger
Спасибо, помогло. Проблема была с именами выходных рядов. Видимо мануал к индикатору читал вверх ногами.