Пользовательские индикаторы > vix-fix

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
nikkrav
Сообщения: 40
Зарегистрирован: 19 май 2016, 15:20
Благодарил (а): 66 раз

vix-fix

Непрочитанное сообщение nikkrav » 08 окт 2019, 09:24

https://ru.tradingview.com/script/TDxSL ... -Strategy/

Вот на мой взгляд достойная стратегия.Возможно ли реализовать ее на АД4?

Tshibo
Сообщения: 20
Зарегистрирован: 20 окт 2019, 20:07
Благодарил (а): 4 раза
Поблагодарили: 13 раз

Re: vix-fix

Непрочитанное сообщение Tshibo » 13 ноя 2019, 22:24

Это мой первый индикатор. Если я правильно понял их код, то получается это.

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

function Initialize()
{
   IndicatorName = "WVF";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = false;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
    AddSeries("WVF", DrawAs.Custom, Color.Lime ,AxisType.ZeroBased);   // Задаем вид линии индикатора
    AddSeries("High", DrawAs.Line, Color.Green,false);
    AddSeries("Low",DrawAs.Line, Color.Red,false);
    AddSeries("sDev", DrawAs.Line, Color.Red,false);
    AddSeries("sSMA", DrawAs.Line, Color.Gray,false);
    AddSeries("upperBand", DrawAs.Line, Color.Blue);
    AddSeries("lowerBand", DrawAs.Line, Color.Red);
    AddParameter("mult",2);
    AddParameter("Period", 22);   // Задаем имя изменяемого параметра и его значение
    AddParameter("PeriodBB", 20);
    AddGlobalVariable("SUM", Types.Double, 0.0);
    AddGlobalVariable("sSUM", Types.Double, 0.0);
    AddLevel(0, Color.Gray,"WVF");
}

function Evaluate()
{
High=Input.Close[0];
if ( CurrentIndex >= Period )
{
int i = 0;
for (i = 0; i < Period; i++)
High = Math.Max(Input.Close[i], High[0]);
}
Low = Input.Low[0];
WVF = ((High[0]-Low[0])/High[0])*100;
//WVF.DrawHistogram();


if ( CurrentIndex < PeriodBB )
{
sSUM = sSUM + WVF[0];
sSMA = sSUM / (CurrentIndex + 1);
}
else
{
sSUM = sSUM + WVF[0] - WVF[(int)(-PeriodBB)] ;
sSMA = sSUM/ Period;
}
//sSMA.DrawLine();

if ( CurrentIndex < PeriodBB )
{
    SUM = SUM + WVF[0];
var sma = SUM / (CurrentIndex + 1);
    sDev = 0.0;
}
else
{
SUM = SUM + WVF[0] - WVF[0-PeriodBB];
var sma = SUM/ PeriodBB;
var sigma = 0.0;
for (var i = 0; i < PeriodBB; i++ )
sigma = sigma + Math.Pow(WVF[-i]-sma, 2.0);
sDev = Math.Sqrt(sigma/PeriodBB);
}
//sDev.DrawLine();

lowerBand[0] = sSMA[0] - mult*sDev[0];
lowerBand.DrawLine();
upperBand[0] = sSMA[0] + mult*sDev[0];
upperBand.DrawLine();
if (WVF[0] > upperBand[0])
{
  WVF.DrawHistogram(Color.Lime);
}
else 
{
   WVF.DrawHistogram(Color.Gray);
}
}

Буду рад, если профессионалы оптимизируют код. У меня пока с преобразованием типов не получается.

Screenshot_GMKN.png

nikkrav
Сообщения: 40
Зарегистрирован: 19 май 2016, 15:20
Благодарил (а): 66 раз

Re: vix-fix

Непрочитанное сообщение nikkrav » 14 ноя 2019, 14:23

Спасибо!!! На вид круто получилось. Но не пойму что использовать как сигнал в стратегии. Подскажите пожалуйста.

Tshibo
Сообщения: 20
Зарегистрирован: 20 окт 2019, 20:07
Благодарил (а): 4 раза
Поблагодарили: 13 раз

Re: vix-fix

Непрочитанное сообщение Tshibo » 14 ноя 2019, 18:09

Как здесь пишут
col = WVF >= upperBand ? lime : gray
т.е. если индикатор Williams_Vix_Fix больше верхней границы своих полос Болингера, то это означает локальное дно инструмента, гистограмма окрашивается в цвет Lime . На счет выхода из позиции нужны уже другие сигналы.

Tshibo
Сообщения: 20
Зарегистрирован: 20 окт 2019, 20:07
Благодарил (а): 4 раза
Поблагодарили: 13 раз

Re: vix-fix

Непрочитанное сообщение Tshibo » 28 дек 2019, 19:59

Вот зеркальный аналог для нахождения вершин.
Его лучше использовать с WVF.
Вложения
LKOH.jpg
WVFC.zip
(1.02 КБ) 879 скачиваний


Вернуться в «Пользовательские индикаторы»

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

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