https://ru.tradingview.com/script/TDxSL ... -Strategy/
Вот на мой взгляд достойная стратегия.Возможно ли реализовать ее на АД4?
Пользовательские индикаторы > vix-fix
-
- Сообщения: 20
- Зарегистрирован: 20 окт 2019, 20:07
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: vix-fix
Это мой первый индикатор. Если я правильно понял их код, то получается это.
Буду рад, если профессионалы оптимизируют код. У меня пока с преобразованием типов не получается.
Код: Выделить всё
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);
}
}
Буду рад, если профессионалы оптимизируют код. У меня пока с преобразованием типов не получается.
-
- Сообщения: 41
- Зарегистрирован: 19 май 2016, 15:20
- Благодарил (а): 67 раз
- Поблагодарили: 1 раз
Re: vix-fix
Спасибо!!! На вид круто получилось. Но не пойму что использовать как сигнал в стратегии. Подскажите пожалуйста.
-
- Сообщения: 20
- Зарегистрирован: 20 окт 2019, 20:07
- Благодарил (а): 4 раза
- Поблагодарили: 13 раз
Re: vix-fix
Как здесь пишут
col = WVF >= upperBand ? lime : gray
т.е. если индикатор Williams_Vix_Fix больше верхней границы своих полос Болингера, то это означает локальное дно инструмента, гистограмма окрашивается в цвет Lime . На счет выхода из позиции нужны уже другие сигналы.
col = WVF >= upperBand ? lime : gray
т.е. если индикатор Williams_Vix_Fix больше верхней границы своих полос Болингера, то это означает локальное дно инструмента, гистограмма окрашивается в цвет Lime . На счет выхода из позиции нужны уже другие сигналы.
Вернуться в «Пользовательские индикаторы»
Кто сейчас на конференции
Сейчас этот форум просматривают: Majestic-12 [Bot] и 11 гостей