Библиотека польльских индикаторовзовате. БИБЛИОТЕКА ПОЛЬЗОВАТЕЛЬСКИХ ИНДИКАТОРОВ АЛЬФА-ДИРЕКТ4.0. Инструкция по созданию и импорту пользовательских индикаторов 4 библиотека пользовательских индикаторов 5
Скачать 1.9 Mb.
|
PriceChannel – Ценовой канал или Канал ДончянаЦеновой канал – это индикатор показывающий максимум и минимум за последний интервал изменения цен заданной длительности. Индикатор имеет 2 выходных ряда HighиLow. Для их вычисления используются следующие формулы: Hight = max(Ht, Ht-1, …, Ht-n+1), Lowt = max(Lt, Lt-1, …, Lt-n+1). Типовые параметры. Значение периода усреднения выбирается n = 20 для дневного тайм-фрейма. Сигналы. Если цена превышает предыдущее значение ряда High, то совершается покупка. Если цена падает ниже предыдущего значения ряда Low, то совершается продажа. Автор. Ричард Дончян (Richard Donchian). Первоисточник. Википедия. (ru.wikipedia.org/wiki/Канал_Дончяна) Код Альфа-Директ function Initialize() { // Определение параметров индикатора IndicatorName = "PriceChannel"; AddInput("Input", Inputs.Candle); AddParameter("Period", 50, 1); PriceStudy = true; AddSeries("Upper", DrawAs.Line, Color.Blue); AddSeries("Lower", DrawAs.Line, Color.Red); } function Evaluate() { // AlfaDirect. 2016. OX // Верхняя линия "Upper" - максимальная цена за Period // Нижняя линия "Lower" - минимальная цена за Period var high = Input.High[0]; var low = Input.Low[0]; if ( CurrentIndex >= Period ) { int i = 0; for (i = 1; i < Period; i++) high = Math.Max(Input.High[i], high); for (i = 1; i < Period; i++) low = Math.Min(Input.Low[i], low); } Upper = high; Lower = low; } KeltnerEMA (Keltner Channel on EMA) – Канал Кельтнера на EMAКанал Кельтнера – это канал, границы которого строятся как отклонение от МА (экспоненциального) на заданное число значений ATR. function Initialize() { IndicatorName = "KeltnerEMA"; PriceStudy = true; AddInput("Input", Inputs.Candle); AddSeries("Res", DrawAs.Line, Color.Blue); AddSeries("Sup", DrawAs.Line, Color.Blue); AddParameter("Period", 20, 1); AddParameter("Z", 2.0); } function Evaluate() { // AlfaDirect. 2015. OX. // KeltnerEMA - Keltner Channel on EMA. if (CurrentIndex < 1 ) { Res = Input.Close[0]; Sup = Input.Close[0]; } else { Res = EMA(Input.Close, Period)[0] + (Z*ATR(Input, Period)[0]); Sup = EMA(Input.Close, Period)[0] - (Z*ATR(Input, Period)[0]); } } KeltnerSMA (Keltner Channel on SMA) – Канал Кельтнера на EMAКанал Кельтнера – это канал, границы которого строятся как отклонение от МА (экспоненциального) на заданное число значений ATR. function Initialize() { IndicatorName = "KeltnerSMA"; PriceStudy = true; AddInput("Input", Inputs.Candle); AddSeries("Res", DrawAs.Line, Color.Gray); // Задаем вид линии индикатора Res AddSeries("Sup", DrawAs.Line, Color.Gray); // Задаем вид линии индикатора Sup AddParameter("Period", 20, 1); // Задаем имя изменяемого параметра и его значение AddParameter("Z", 2.0); // Задаем имя глобальной переменной и её значение } function Evaluate() { // AlfaDirect 2015. OX. // KeltnerSMA - Keltner Channel on SMA. if (CurrentIndex < Period ) { Res = Input.Close[0]; Sup = Input.Close[0]; } else { Res = SMA(Input.Close, Period)[0] + (Z*ATR(Input, Period)[0]); Sup = SMA(Input.Close, Period)[0] - (Z*ATR(Input, Period)[0]); } } ConvertSMA (Convert on SMA) – Конверт на SMAКонверт – это канал, границы которого строятся как отклонение от МА (простого) на заданное число процентных значений. function Initialize() { IndicatorName = "ConvertSMA"; // Задайте название индикатора и сохраните с данным именем AddInput("Input", Inputs.Price); AddParameter("Period", 20); AddParameter("K", 0.5); PriceStudy = true; AddSeries("Upper", DrawAs.Line, Color.LightBlue); // Задаем вид линии индикатора A AddSeries("Lower", DrawAs.Line, Color.LightBlue); // Задаем вид линии индикатора A } function Evaluate() { // AlfaDirect. 2014. OX // ConvertSMA - Convert on SMA (Конверт на SMA) if (CurrentIndex < Period) { Upper = Input[0] * (1.0 + (double) K / 100.0); Lower = Input[0] * (1.0 - (double) K / 100.0); } else { Upper = SMA(Input, Period)[0] * (1.0 + (double) K / 100.0); Lower = SMA(Input, Period)[0] * (1.0 - (double) K / 100.0); } } |