Soft
September 9
Индикатор 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 )