Soft
September 9, 2024
Индикатор WilliamsR+Divergence
Подробное описание и принцип работы индикатора.
К стандартному индикатору добавлены сигналы точек входа в покупку-продажу и дивергенции с точками вероятных изменений цены.
- Индикатор не является указанием к действию, тк это индикатор моментума и экстремумы не являются пределами цены и точками разворота. Аналог стохастика или RSI.
- Лучше использовать в паре с другим индикатором, типа MACD или любым, для подтверждения.
- Индикатор хорошо отрабатывает по тренду! Определять движение цены и тренда лучше или любым индикатором или просто EMA200. Против тренда движение может быть очень коротким и иногда нет смысла входить в позицию. Возможны ложные сигналы.
Пример, как отрабатывают сигналы дивергенций, в паре с MACD
Настройки можно использовать по-умолчанию. Но для своих таймфреймов можно подогнать период на графике истории. Период стандартный 14-35(в дефолте у Williams стоит 14, но я ставлю 34 или 21. Линии в пределах -80-90 и -10-20. Настройки определения Дивергенций стоят 5 периодов вправо и влево и максимальный 30. Можно поменять( уже в самом скрипте а не в настройках) на 5-10 и макс 20-100
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Only
//@version=5
indicator("Williams oscillator + divergence", shorttitle="W%R osc+divergence", overlay=false)
// Input settings
Length = input.int(34, title="W Length", minval=1)
obLevel = input.int(-20, title="OB Level", minval=-100, maxval=0)
osLevel = input.int(-80, title="OS Level", minval=-100, maxval=0)
hh = ta.highest(high, Length)
ll = ta.lowest(low, Length)
wr = -100 * (hh - close) / (hh - ll)
// Plot
plot(wr, title="W%R+", color=#ba68c8, linewidth=1)
hline(obLevel, "OB Level", color=#6b6b6b)
hline(osLevel, "OS Level", color=#6b6b6b)
// Generate Buy and Sell signals
buySignal = ta.crossover(wr, osLevel)
sellSignal = ta.crossunder(wr, obLevel)
// Plot Buy and Sell signals on the chart
plotshape(
buySignal,
style=shape.triangleup,
location=location.bottom,
color=#02d437,
title="Buy Signal")
plotshape(
sellSignal,
style=shape.triangledown,
location=location.top,
color=#df0000,
title="Sell Signal")
level_ob = obLevel
level_obwr = wr > level_ob ? wr : level_ob
level_os = osLevel
level_oswr = wr < level_os ? wr : level_os
p1 = plot(level_ob, display=display.none)
p2 = plot(level_obwr, display=display.none)
p3 = plot(level_os, display=display.none)
p4 = plot(level_oswr, display=display.none)
fill(p1, p2, color=#ff181841, title='OverBought')
fill(p3, p4, color=#00bd0641, title='OverSold')
//-------------------------------------------------
// Divergence
Right = 5
Left = 5
rangeUpper = 30
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
plFound = na(ta.pivotlow(wr, Left, Right)) ? false : true
phFound = na(ta.pivothigh(wr, Left, Right)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
rangeLower <= bars and bars <= rangeUpper
//------------------------------------------------------------------------------
// Regular Bullish
// Higher Low
wrHL = wr[Right] > ta.valuewhen(plFound, wr[Right], 1) and _inRange(plFound[1])
// Price: Lower Low
priceLL = low[Right] < ta.valuewhen(plFound, low[Right], 1)
bullCondAlert = priceLL and wrHL and plFound
bullCond = bullCondAlert
plot(
plFound ? wr[Right] : na,
offset=-Right,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor),
display = display.pane
)
plotshape(
bullCond ? wr[Right] : na,
offset=-Right,
title="Regular Bullish Label",
text="D",
style=shape.triangleup,
size=size.tiny,
location=location.bottom,
color=#02d437,
textcolor=#fbff0c
)
//------------------------------------------------------------------------------
// Regular Bearish
// Lower High
wrLH = wr[Right] < ta.valuewhen(phFound, wr[Right], 1) and _inRange(phFound[1])
// Price: Higher High
priceHH = high[Right] > ta.valuewhen(phFound, high[Right], 1)
bearCondAlert = priceHH and wrLH and phFound
bearCond = bearCondAlert
plot(
phFound ? wr[Right] : na,
offset=-Right,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor),
display = display.pane
)
plotshape(
bearCond ? wr[Right] : na,
offset=-Right,
title="Regular Bearish Label",
text="D",
style=shape.triangledown,
size=size.tiny,
location=location.top,
color=#df0000,
textcolor=#fbff0c
)