indicator helps you identify market structure by plotting swing highs and lows

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #207258 quote
    yasyas
    Participant
    Junior

    hi Guys

    Can below code be converted into pro real time please if possible

    //@version=5
    indicator(“Market Structure – By Leviathan”, overlay=true, max_labels_count=500, max_lines_count=500)

    // Constants
    color CLEAR = color.rgb(0,0,0,100)

    // Inputs
    swingSize = input.int(20, ‘Swing Length’, tooltip=’The number of left and right bars checked when searching for a swing point. Higher value = less swing points plotted and lower value = more swing points plotted.’ )
    bosConfType = input.string(‘Candle Close’, ‘BOS Confirmation’, [‘Candle Close’, ‘Wicks’], tooltip=’Choose whether candle close/wick above previous swing point counts as a BOS.’)
    choch = input.bool(false, ‘Show CHoCH’, tooltip=’Renames the first counter trend BOS to CHoCH’ )
    showSwing = input.bool(true, ‘Show Swing Points’, tooltip=’Show or hide HH, LH, HL, LL’)

    showHalf = input.bool(false, ‘Show 0.5 Retracement Level’, group=’0.5 Retracement Level’, tooltip=’Show a possible 0.5 retracement level between the swing highs and lows of an expansion move.’)
    halfColor = input.color(color.rgb(41, 39, 176), ‘Color’, group=’0.5 Retracement Level’)
    halfStyle = input.string(‘Solid’, ‘Line Style’, [‘Solid’, ‘Dashed’, ‘Dotted’], group=’0.5 Retracement Level’)
    halfWidth = input.int(1, ‘Width’, minval=1, group=’0.5 Retracement Level’)

    bosColor = input.color(color.rgb(112, 114, 119), ‘Color’, group=’BOS Settings’)
    bosStyle = input.string(‘Dashed’, ‘Line Style’, [‘Solid’, ‘Dashed’, ‘Dotted’], group=’BOS Settings’)
    bosWidth = input.int(1, ‘Width’, minval=1, group=’BOS Settings’)

    // Functions
    lineStyle(x) =>
    switch x
    ‘Solid’ => line.style_solid
    ‘Dashed’ => line.style_dashed
    ‘Dotted’ => line.style_dotted
    // Calculations

    //Finding high and low pivots
    pivHi = ta.pivothigh(high, swingSize, swingSize)
    pivLo = ta.pivotlow(low, swingSize, swingSize)

    //Tracking the previous swing levels to determine hh lh hl ll
    var float prevHigh = na
    var float prevLow = na
    var int prevHighIndex = na
    var int prevLowIndex = na

    //Tracking whether previous levels have been breached
    var bool highActive = false
    var bool lowActive = false

    bool hh = false
    bool lh = false
    bool hl = false
    bool ll = false

    //Variable to track the previous swing type, used later on to draw 0.5 Retracement Levels (HH = 2, LH = 1, HL = -1, LL = -2)
    var int prevSwing = 0

    if not na(pivHi)
    if pivHi >= prevHigh
    hh := true
    prevSwing := 2
    else
    lh := true
    prevSwing := 1
    prevHigh := pivHi
    highActive := true
    prevHighIndex := bar_index – swingSize

    if not na(pivLo)
    if pivLo >= prevLow
    hl := true
    prevSwing := -1
    else
    ll := true
    prevSwing := -2
    prevLow := pivLo
    lowActive := true
    prevLowIndex := bar_index – swingSize

    //Generating the breakout signals
    bool highBroken = false
    bool lowBroken = false

    //Tracking prev breakout
    var int prevBreakoutDir = 0

    float highSrc = bosConfType == ‘Candle Close’ ? close : high
    float lowSrc = bosConfType == ‘Candle Close’ ? close : low

    if highSrc > prevHigh and highActive
    highBroken := true
    highActive := false
    if lowSrc < prevLow and lowActive
    lowBroken := true
    lowActive := false

    // Visual Output

    //Swing level labels
    if hh and showSwing
    label.new(bar_index – swingSize, pivHi, ‘HH’, color=CLEAR, style=label.style_label_down, textcolor=chart.fg_color)
    //Detecting if it is a hh after a hl
    if prevSwing[1] == -1 and showHalf
    line.new(prevLowIndex, (prevLow + pivHi) / 2, bar_index – swingSize, (prevLow + pivHi) / 2, color=halfColor, style=lineStyle(halfStyle), width=halfWidth)
    if lh and showSwing
    label.new(bar_index – swingSize, pivHi, ‘LH’, color=CLEAR, style=label.style_label_down, textcolor=chart.fg_color)
    if hl and showSwing
    label.new(bar_index – swingSize, pivLo, ‘HL’, color=CLEAR, style=label.style_label_up, textcolor=chart.fg_color)
    if ll and showSwing
    label.new(bar_index – swingSize, pivLo, ‘LL’, color=CLEAR, style=label.style_label_up, textcolor=chart.fg_color)
    //Detecting if it is a ll after a lh
    if prevSwing[1] == 1 and showHalf
    line.new(prevHighIndex, (prevHigh + pivLo) / 2, bar_index – swingSize, (prevHigh + pivLo) / 2, color=halfColor, style=lineStyle(halfStyle), width=halfWidth)

    //Generating the BOS Lines
    if highBroken
    line.new(prevHighIndex, prevHigh, bar_index, prevHigh, color=bosColor, style=lineStyle(bosStyle), width=bosWidth)
    label.new(math.floor(bar_index – (bar_index – prevHighIndex) / 2), prevHigh, prevBreakoutDir == -1 and choch ? ‘CHoCH’ : ‘BOS’, color=CLEAR, textcolor=bosColor, size=size.tiny)
    prevBreakoutDir := 1
    if lowBroken
    line.new(prevLowIndex, prevLow, bar_index, prevLow, color=bosColor, style=lineStyle(bosStyle), width=bosWidth)
    label.new(math.floor(bar_index – (bar_index – prevLowIndex) / 2), prevLow, prevBreakoutDir == 1 and choch ? ‘CHoCH’ : ‘BOS’, color=CLEAR, textcolor=bosColor, style=label.style_label_up, size=size.tiny)
    prevBreakoutDir := -1

    #207268 quote
    NicolasNicolas
    Keymaster
    Legend

    Not the same code but pretty similar to this swing High/Low HH HL LL LH code available here: https://www.prorealcode.com/topic/help-with-higher-high-lower-low-price-swing-indicator-and-segment-drawings/#post-80673

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

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

indicator helps you identify market structure by plotting swing highs and lows


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
yas @yas Participant
Summary

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

Topic Details
Forum: ProBuilder: Indicators & Custom Tools
Language: English
Started: 01/12/2023
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...