Добрый день. А не могли бы написать индикатор Random Walk Index (RWI) (к примеру как здесь http://www.fxcodebase.com/code/viewtopi ... =17&t=1166) ?
спасибо.
Пользовательские индикаторы > Random Walk Index (RWI)
Re: Очень нужен индикатор VWAP
JASON писал(а):Добрый день. А не могли бы написать индикатор Random Walk Index (RWI) (к примеру как здесь http://www.fxcodebase.com/code/viewtopi ... =17&t=1166) ?
спасибо.
Подтверждаю:
На tradingview.com тоже несколько пользовательских вариантов есть.
Сделал два варианта: 1 - сильно упрощенная версия, 2 - более правильная, но ресурсоемкая (может тут кто-то пооптимизирует):
v.1
Код: Выделить всё
function Initialize() {
IndicatorName = "Random Walk Index_tview1";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("Period", 14);
AddSeries("RWI_High", DrawAs.Line, Color.Green);
AddSeries("RWI_Low", DrawAs.Line, Color.Red);
}
function Evaluate() {
// 09.2020 dev by maks v.1
var D = ATR(Input, Period)[0] * Math.Sqrt(Period);
RWI_High = (Input.High[0] - Input.Low[Period]) / D;
RWI_Low = (Input.High[Period] - Input.Low[0]) / D;
}
v.2
Код: Выделить всё
function Initialize() {
IndicatorName = "Random Walk Index_tview2";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("PeriodMi", 9);
AddParameter("PeriodMa", 40);
AddSeries("RWI_High", DrawAs.Line, Color.Green);
AddSeries("RWI_Low", DrawAs.Line, Color.Red);
}
function Evaluate() {
// 09.2020 dev by maks v.2
if (CurrentIndex >= PeriodMa) {
double D = ATR(Input, PeriodMi)[0] * Math.Sqrt(PeriodMi);
RWI_High = (Input.High[0] - Input.Low[PeriodMi]) / D;
RWI_Low = (Input.High[PeriodMi] - Input.Low[0]) / D;
for (double i = PeriodMi + 1; i <= PeriodMa; i++) {
D = ATR(Input, i)[0] * Math.Sqrt(i);
double rwi_h = (Input.High[0] - Input.Low[i]) / D;
double rwi_l = (Input.High[i] - Input.Low[0]) / D;
if (RWI_High < rwi_h) RWI_High = rwi_h;
if (RWI_Low < rwi_l) RWI_Low = rwi_l;
}
}
}
- Вложения
-
- Random Walk Index_tview2.zip
- (608 байт) 1487 скачиваний
-
- Random Walk Index_tview1.zip
- (500 байт) 1522 скачивания
-
- Сообщения: 41
- Зарегистрирован: 19 май 2016, 15:20
- Благодарил (а): 67 раз
- Поблагодарили: 1 раз
Re: Random Walk Index (RWI)
Maks спасибо за Вашу работу. Но в конструкторе оба варианта не компилируются. Посмотрите что там не так, пожалуйста.
Re: Random Walk Index (RWI)
всё компилируется, друзья
Код: Выделить всё
function Initialize() {
IndicatorName = "Random_Walk_Index_tview2";
AddInput("Input", Inputs.Candle);
PriceStudy = false;
AddParameter("PeriodMi", 9);
AddParameter("PeriodMa", 40);
AddSeries("RWI_High", DrawAs.Line, Color.Green);
AddSeries("RWI_Low", DrawAs.Line, Color.Red);
}
function Evaluate() {
// 09.2020 dev by maks v.2
if (CurrentIndex >= PeriodMa) {
double D = ATR(Input, PeriodMi)[0] * Math.Sqrt(PeriodMi);
RWI_High = (Input.High[0] - Input.Low[PeriodMi]) / D;
RWI_Low = (Input.High[PeriodMi] - Input.Low[0]) / D;
for (double i = PeriodMi + 1; i <= PeriodMa; i++) {
D = ATR(Input, i)[0] * Math.Sqrt(i);
double rwi_h = (Input.High[0] - Input.Low[i]) / D;
double rwi_l = (Input.High[i] - Input.Low[0]) / D;
if (RWI_High < rwi_h) RWI_High = rwi_h;
if (RWI_Low < rwi_l) RWI_Low = rwi_l;
}
}
}
Вернуться в «Пользовательские индикаторы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей