RedK VADER

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #189161 quote
    dominiospremiumdominiospremium
    Participant
    New

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © RedKTrader

    //@version=5
    indicator(‘RedK Volume-Accelerated Directional Energy Ratio’, ‘RedK VADER v2.0’, precision=0, timeframe=”, timeframe_gaps=false)

    // ***********************************************************************************************************
    f_RelVol(_value, _length) =>
    min_value = ta.lowest(_value, _length)
    max_value = ta.highest(_value, _length)
    ta.stoch(_value, max_value, min_value, _length) / 100
    // ***********************************************************************************************************

    // ===========================================================================================================
    // Inputs
    // ===========================================================================================================

    price = close
    length = input.int(10, minval=1)
    DER_avg = input.int(5, ‘Average’, minval=1, inline=’DER’, group=’Directional Energy Ratio’)
    smooth = input.int(3, ‘Smoothing’, minval=1, inline=’DER’, group=’Directional Energy Ratio’)

    v_calc = input.string(‘Relative’, ‘Calculation’, options=[‘Relative’, ‘Full’, ‘None’], group=’Volume Parameters’)
    vlookbk = input.int(20, ‘Lookback (for Relative)’, minval=1, group=’Volume Parameters’)

    // ===========================================================================================================
    // Calculations
    // ===========================================================================================================

    // Volume Calculation Option — will revert to no volume acceleration for instruments with no volume data
    vola =
    v_calc == ‘None’ or na(volume) ? 1 :
    v_calc == ‘Relative’ ? f_RelVol(volume, vlookbk) :
    volume

    R = (ta.highest(2) – ta.lowest(2)) / 2 // R is the 2-bar average bar range – this method accomodates bar gaps
    sr = ta.change(price) / R // calc ratio of change to R
    rsr = math.max(math.min(sr, 1), -1) // ensure ratio is restricted to +1/-1 in case of big moves
    c = fixnan(rsr * vola) // add volume accel — fixnan adresses cases where no price change between bars

    c_plus = math.max(c, 0) // calc directional vol-accel energy
    c_minus = -math.min(c, 0)

    // plot(c_plus)
    // plot(c_minus)

    dem = ta.wma(c_plus, length) / ta.wma(vola, length) //average directional energy ratio
    sup = ta.wma(c_minus, length) / ta.wma(vola, length)

    // plot(vola, ‘Vol Accel’)

    adp = 100 * ta.wma(dem, DER_avg)
    asp = 100 * ta.wma(sup, DER_avg)

    anp = adp – asp
    anp_s = ta.wma(anp, smooth)

    // ===========================================================================================================
    // Colors & plots
    // ===========================================================================================================
    c_adp = color.new(color.aqua, 50)
    c_asp = color.new(color.orange, 50)
    c_fd = color.new(color.green, 80)
    c_fs = color.new(color.red, 80)
    c_zero = color.new(#ffee00, 70)
    c_up = color.new(#33ff00, 0)
    c_dn = color.new(#ff1111, 0)
    up = anp_s >= 0

    hline(0, ‘Zero Line’, c_zero, hline.style_solid)

    s = plot(asp, ‘Supply Energy’, c_asp, 2, style=plot.style_circles, join=true)
    d = plot(adp, ‘Demand Energy’, c_adp, 2, style=plot.style_cross, join=true)
    fill(d, s, adp > asp ? c_fd : c_fs)

    plot(anp, ‘VADER’, color.new(color.gray, 30))
    plot(anp_s, ‘Signal’, up ? c_up : c_dn, 3)

    // ===========================================================================================================
    // v2.0 adding alerts
    // ===========================================================================================================

    Alert_up = ta.crossover(anp_s,0)
    Alert_dn = ta.crossunder(anp_s,0)
    Alert_swing = ta.cross(anp_s,0)

    // “*” in alert title for the alerts to show in the right order up/down/swing
    alertcondition(Alert_up, “* VADER Up”, “VADER Up – Buying Energy Detected!”)
    alertcondition(Alert_dn, “** VADER Down”, “VADER Down – Selling Energy Detected!”)
    alertcondition(Alert_swing, “*** VADER Swing”, “VADER Swing – Possible Reversal”)

    jmx2WRPJ-1.png jmx2WRPJ-1.png
Viewing 1 post (of 1 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

RedK VADER


ProBuilder: Indicadores y Herramientas

New Reply
Author
Summary

This topic contains 1 voice and has 0 replies.

Topic Details
Forum: ProBuilder: Indicadores y Herramientas
Language: Spanish
Started: 03/01/2022
Status: Active
Attachments: 1 files
ProRealCode ProRealCode
Loading...