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

vix-fix

Добавлено: 08 окт 2019, 09:24
nikkrav
https://ru.tradingview.com/script/TDxSL ... -Strategy/

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

Re: vix-fix

Добавлено: 13 ноя 2019, 22:24
Tshibo
Это мой первый индикатор. Если я правильно понял их код, то получается это.

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

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

Re: vix-fix

Добавлено: 14 ноя 2019, 14:23
nikkrav
Спасибо!!! На вид круто получилось. Но не пойму что использовать как сигнал в стратегии. Подскажите пожалуйста.

Re: vix-fix

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

Re: vix-fix

Добавлено: 28 дек 2019, 19:59
Tshibo
Вот зеркальный аналог для нахождения вершин.
Его лучше использовать с WVF.