Divergence Indicator

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #149402 quote
    boonet
    Participant
    Senior
    //@version=4
    study(title="Divergence Indicator", format=format.price, resolution="")
    len = input(title="RSI Period", minval=1, defval=14)
    src = input(title="RSI Source", defval=close)
    lbR = input(title="Pivot Lookback Right", defval=5)
    lbL = input(title="Pivot Lookback Left", defval=5)
    rangeUpper = input(title="Max of Lookback Range", defval=60)
    rangeLower = input(title="Min of Lookback Range", defval=5)
    plotBull = input(title="Plot Bullish", defval=true)
    plotHiddenBull = input(title="Plot Hidden Bullish", defval=false)
    plotBear = input(title="Plot Bearish", defval=true)
    plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)
    bearColor = color.red
    bullColor = color.green
    hiddenBullColor = color.new(color.green, 80)
    hiddenBearColor = color.new(color.red, 80)
    textColor = color.white
    noneColor = color.new(color.white, 100)
    osc = rsi(src, len)
    
    plot(osc, title="RSI", linewidth=2, color=#8D1699)
    hline(50, title="Middle Line", linestyle=hline.style_dotted)
    obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
    osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
    fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)
    
    plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
    phFound = na(pivothigh(osc, lbL, lbR)) ? false : true
    _inRange(cond) =>
    	bars = barssince(cond == true)
    	rangeLower <= bars and bars <= rangeUpper
    
    //------------------------------------------------------------------------------
    // Regular Bullish
    // Osc: Higher Low
    
    oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])
    
    // Price: Lower Low
    
    priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)
    bullCond = plotBull and priceLL and oscHL and plFound
    
    plot(
         plFound ? osc[lbR] : na,
         offset=-lbR,
         title="Regular Bullish",
         linewidth=2,
         color=(bullCond ? bullColor : noneColor),
         transp=0
         )
    
    plotshape(
    	 bullCond ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Regular Bullish Label",
    	 text=" Bull ",
    	 style=shape.labelup,
    	 location=location.absolute,
    	 color=bullColor,
    	 textcolor=textColor,
    	 transp=0
    	 )
    
    //------------------------------------------------------------------------------
    // Hidden Bullish
    // Osc: Lower Low
    
    oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])
    
    // Price: Higher Low
    
    priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)
    hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound
    
    plot(
    	 plFound ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Hidden Bullish",
    	 linewidth=2,
    	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
    	 transp=0
    	 )
    
    plotshape(
    	 hiddenBullCond ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Hidden Bullish Label",
    	 text=" H Bull ",
    	 style=shape.labelup,
    	 location=location.absolute,
    	 color=bullColor,
    	 textcolor=textColor,
    	 transp=0
    	 )
    
    //------------------------------------------------------------------------------
    // Regular Bearish
    // Osc: Lower High
    
    oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])
    
    // Price: Higher High
    
    priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)
    
    bearCond = plotBear and priceHH and oscLH and phFound
    
    plot(
    	 phFound ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Regular Bearish",
    	 linewidth=2,
    	 color=(bearCond ? bearColor : noneColor),
    	 transp=0
    	 )
    
    plotshape(
    	 bearCond ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Regular Bearish Label",
    	 text=" Bear ",
    	 style=shape.labeldown,
    	 location=location.absolute,
    	 color=bearColor,
    	 textcolor=textColor,
    	 transp=0
    	 )
    
    //------------------------------------------------------------------------------
    // Hidden Bearish
    // Osc: Higher High
    
    oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])
    
    // Price: Lower High
    
    priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)
    
    hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound
    
    plot(
    	 phFound ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Hidden Bearish",
    	 linewidth=2,
    	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
    	 transp=0
    	 )
    
    plotshape(
    	 hiddenBearCond ? osc[lbR] : na,
    	 offset=-lbR,
    	 title="Hidden Bearish Label",
    	 text=" H Bear ",
    	 style=shape.labeldown,
    	 location=location.absolute,
    	 color=bearColor,
    	 textcolor=textColor,
    	 transp=0
    	 )

    Can I please request you to convert this pinescript to PRT?
    I would have done it with me beginner’s knowledge, but I got stuck with codes like – “valuewhen”

    2020-11-03_1825.png 2020-11-03_1825.png
    #149438 quote
    Nicolas
    Keymaster
    Master

    The “valuewhen” instruction is not available in ProBuilder programming language. Something similar will be added in an upcoming new instructions package for PRT v11.

    valuewhen(condition, source, occurrence)

    It returns the “Source” value when “condition” was true on the “occurrence” number. So you have to make a loop in order to get the value.

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.

Divergence Indicator


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
boonet @boonet Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Nicolas
5 years, 3 months ago.

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 11/03/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...