Стратегии и роботы > Price Channel Breakouts

Обсуждение, описание стратегий и роботов, идеи для стратегий
Stranger
Сообщения: 2
Зарегистрирован: 13 апр 2019, 19:59
Благодарил (а): 1 раз

Price Channel Breakouts

Непрочитанное сообщение Stranger » 13 апр 2019, 21:08

Добрый день!

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

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

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Price Channel Breakouts

Непрочитанное сообщение evge » 13 апр 2019, 21:13

сдвигать ничего не надо, проверяйте с предыдущим

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

[0] - текущий

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

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

А код индикатора можно увидеть?
никогда такого не было и вот опять

Аватара пользователя
evge
Администратор
Сообщения: 1641
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 64 раза
Поблагодарили: 294 раза
Контактная информация:

Re: Price Channel Breakouts

Непрочитанное сообщение evge » 13 апр 2019, 21:18

в 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
никогда такого не было и вот опять

Stranger
Сообщения: 2
Зарегистрирован: 13 апр 2019, 19:59
Благодарил (а): 1 раз

Re: Price Channel Breakouts

Непрочитанное сообщение Stranger » 13 апр 2019, 21:36

Спасибо, помогло. Проблема была с именами выходных рядов. Видимо мануал к индикатору читал вверх ногами.


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя