Boxes Trail

Boxes Trail

This is an indicator named Boxes Trail. It’s designed to identify trading opportunities based on the identification of dynamic support and resistance levels, in addition to applying a trading methodology trend indicators.

Here’s a summary of how it works:

Core Structure

Dynamic Support and Resistance:

It uses an approach to plot support and resistance lines based on the highest and lowest prices within a defined period (length1 for support/resistance and barlength for additional calculations). These lines dynamically adjust based on specific conditions related to price and volume.

Modified Hull Moving Average (SHMMA):

A SHMMA is calculated to identify the trend and generate buy or sell signals based on the price’s position relative to this modified average.

Trading Strategy

Entry and Exit Conditions:

The system defines specific conditions for buy (longCond) and sell (shortCond) signals, based on the crossing of dynamically calculated support and resistance lines.

Pyramiding:

Allows controlling the accumulation of positions under certain conditions, limiting the number of consecutive entries without an exit.

Risk Management:

Incorporates options to define a Take Profit (TP) and Stop Loss (SL) as a percentage of the entry price, allowing traders to secure profits and limit losses.

Climax Indicators and Market Condition

Climax Analysis:

Uses various conditions based on price analysis to classify bars into categories like climax up/down. This helps to identify the strength behind price movements and potentially predict trend changes.

Trend Conditions:

The script assesses the current market trend to adjust entry and exit strategies, as well as to optimize the placement of TP and SL orders.

Alerts and Signals

Offers the ability to generate conditional alerts for buy and sell signals, as well as for reaching TP and SL targets. This allows traders to be informed of critical moments to make decisions.

Customization and Configuration

Customizable Inputs:

Allows users to adjust various parameters, such as the length of support/resistance, the length of the SHMMA, the brick size for ATR or traditional values, and the sensitivity of entry and exit conditions.

Visualization and Overlay:

Provides options to visualize or hide certain elements on the chart, enabling users to focus on the most relevant information for their trading strategy.

This script represents a complex and customizable tool for traders looking for strategies based on dynamic support/resistance, trend and price analysis, with a focus on risk management through TP and SL. The flexibility in settings allows adapting the system to different trading styles and individual preferences.

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. Chrisinobi • 220 days ago #

    Hallo Ivan, vielen Dank für diesen sehr schönen Indikator. Könnte man den Code ändern, so das man auf das Kauf- und Verkaufssignal ein Alarm setzen kann um schnell in ein Trade zu gehen. Gruß und Danke im Voraus
    Norbert

    • Iván • 219 days ago #

      I’ve created a screener to show [longcondition or shortcondition]

  2. Iván • 219 days ago #

    Hi
    You should delete from the indicator code all drawing functions and all variables not used for screener calculations.

    //PRC_BOXES TRAIL
    //version = 0
    //26.02.24
    //Iván González @ http://www.prorealcode.com
    //Sharing ProRealTime knowledge
    //////////////////////////////////////////////////
    //inputs
    length1 = 20 //Support / Resistance length
    barlength = 20 //Bar length
    length = 14 //Length
    src = customclose //Source
    mode = 0 //ATR or Traditional
    modevalue = 14
    use2bars=0//Boolean
    lookback=100
    ////Resistance lines
    if high>=highest[length1](high) then
    t1 = 0
    top1 = high
    else
    top1 = top1
    t1 = t1+1
    endif
    ////Support lines
    if low<=lowest[length1](low) then
    b1 = 0
    bot1 = low
    else
    bot1 = bot1
    b1 = b1+1
    endif
    /////
    factor = 0
    slope = 0
    for i=1 to length do
    factor = 1+2*(i-1)
    slope = slope + (src[i-1])*(length-factor)/2
    next
    shmma = average[length](src)+6*slope/((length+1)*length)

    if shmma >= highest[barlength](shmma) then
    top2 = shmma
    t2 = 0
    else
    top2 = top2
    t2 = t2+1
    endif

    if shmma <= lowest[barlength](shmma) then
    bot2 = shmma
    b2 = 0
    else
    bot2 = bot2
    b2 = b2+1
    endif

    ////bricksize
    if mode then
    bricksize = averagetruerange[round(modevalue)]
    else
    bricksize = modevalue
    endif
    ////
    if barindex < 2 then
    propen = 0
    ropen = 0
    rclose = 0
    else
    propen = ropen[1]
    if close > propen+bricksize or high > propen+bricksize then
    ropen = propen+bricksize
    elsif close < propen-bricksize or low < propen-bricksize then
    ropen = propen-bricksize
    else
    ropen = propen
    endif

    if ropen > propen then
    rclose = ropen-bricksize
    elsif ropen < propen then
    rclose = ropen+bricksize
    else
    rclose = rclose[1]
    endif

    if ropen > propen then
    direction = 1
    elsif ropen < propen then
    direction = -1
    else
    direction = direction[1]
    endif
    endif
    ///////////
    range1=high-low+0.000000001
    range2=highest[2](high)-lowest[2](low)+0.000000001

    if close > open and range1<>0 then
    value1=(range1/(2*range1+open-close))*close
    elsif close < open and range1<>0 then
    value1=((range1+close-open)/(2*range1+close-open))*close
    elsif close=open then
    value1=close
    else
    value1 = value1
    endif
    value2=close-value1

    ///using only one bar
    value4 = value1*range1
    value5 = (value1-value2)*range1
    value6 = value2*range1
    value7 = (value2-value1)*range1

    value8 = value1/range1
    value9 = (value1-value2)/range1
    value10 = value2/range1
    value11 = (value2-value1)/range1

    // Using two bars
    if use2bars then
    value14 = (value1+value1[1])*range2
    value15 = (value1+value1[1]-value2-value2[1])*range2
    value16 = (value2+value2[1])*range2
    value17 = (value2+value2[1]-value1-value1[1])*range2

    value18 = (value1+value1[1])/range2
    value19 = (value1+value1[1]-value2-value2[1])/range2
    value20 = (value2+value2[1])/range2
    value21 = (value2+value2[1]-value1-value1[1])/range2

    endif
    // one bar conditions
    condition2 = value4 = highest[lookback](value4) and close > open
    condition3 = value5 = highest[lookback](value5) and close > open
    condition4 = value6 = highest[lookback](value6) and close < open
    condition5 = value7 = highest[lookback](value7) and close < open
    condition6 = value8 =lowest[lookback](value8) and close < open
    condition7 = value9 =lowest[lookback](value9) and close < open
    condition8 = value10 =lowest[lookback](value10) and close > open
    condition9 = value11 =lowest[lookback](value11) and close > open

    // two bar conditions
    condition12 = use2bars and value14 =highest[lookback](value14) and close > open and close[1] > open[1]
    condition13 = use2bars and value15 =highest[lookback](value15) and close > open and close[1] > open[1]
    condition14 = use2bars and value16 =highest[lookback](value16) and close < open and close[1] < open[1]
    condition15 = use2bars and value17 =highest[lookback](value17) and close < open and close[1] < open[1]
    condition16 = use2bars and value18 =lowest[lookback](value18) and close < open and close[1] < open[1]
    condition17 = use2bars and value19 =lowest[lookback](value19) and close < open and close[1] < open[1]
    condition18 = use2bars and value20 =lowest[lookback](value20) and close > open and close[1] > open[1]
    condition19 = use2bars and value21 =lowest[lookback](value21) and close > open and close[1] > open[1]

    //Classifying the bars using one bar conditions, or using both one bar and two bar conditions simultaneosly if “use2bars” button selected.
    climaxupvolume = (condition2 or condition3 or condition8 or condition9 or condition12 or condition13 or condition18 or condition19)
    climaxdownvolume = (condition4 or condition5 or condition6 or condition7 or condition14 or condition15 or condition16 or condition17)

    if barindex<2 then
    trend=1
    supplyline=high
    supportline=low
    elsif close>supplyline[1] then
    trend=1
    elsif close<supportline[1] then
    trend=-1
    else
    trend=trend[1]
    endif

    if trend=1 then
    if climaxdownvolume then
    supplyline=highest[2](high)
    elsif high>supplyline[1] then
    supplyline=high
    else
    supplyline=supplyline[1]
    endif
    else
    if climaxdownvolume then
    supplyline=highest[2](high)
    else
    supplyline=supplyline[1]
    endif
    endif

    if trend=-1 then
    if climaxupvolume then
    supportline=lowest[2](low)
    elsif low < supportline[1] then
    supportline=low
    else
    supportline=supportline[1]
    endif
    else
    if climaxupvolume then
    supportline=lowest[2](low)
    else
    supportline=supportline[1]
    endif
    endif

    if trend=-1 then
    trailing2 = supportline
    else
    trailing2 = supplyline
    endif
    if trend=1 then
    trailing1 = supportline
    else
    trailing1 = supplyline
    endif

    longcond = trailing2 crosses over trailing1
    shortcond = trailing2 crosses under trailing1

    if barindex < 2 then
    sectionlongs=0
    sectionshorts=0
    else
    if longcond then
    sectionlongs=sectionlongs+1
    sectionshorts=0
    elsif shortcond then
    sectionlongs=0
    sectionshorts=sectionshorts+1
    endif
    endif

    // Pyramiding
    pyrl = 1
    // These check to see your signal and cross references it against the pyramiding settings above
    // These check to see your signal and cross references it against the pyramiding settings above
    longCondition = longCond and sectionLongs <= pyrl
    shortCondition = shortCond and sectionShorts <= pyrl
    if barindex < 2 then
    lastopenlongCondition=0
    lastopenshortCondition=0
    lastlongCondition = 0
    lastshortCondition = 0
    else
    // Get the price of the last opened long or short
    if longCondition then
    lastopenlongCondition = open
    else
    lastopenlongCondition = lastopenlongCondition[1]
    endif
    if shortCondition then
    lastopenshortCondition = open
    else
    lastopenshortCondition = lastopenshortCondition[1]
    endif
    // Check if your last postion was a long or a short
    if longCondition then
    lastlongCondition = barindex
    else
    lastlongCondition = lastlongCondition[1]
    endif
    if shortCondition then
    lastshortCondition = barindex
    else
    lastshortCondition = lastshortCondition[1]
    endif
    endif

    screener[longcondition or shortcondition]

  3. Chrisinobi • 219 days ago #

    Hallo Ivan, Danke das ist Perfekt !! Kannst du bitte in der Screener-Bibliothek die itf. hochladen und was meinst du mit : ( Sie sollten aus dem Indikatorcode alle Zeichenfunktionen und alle Variablen löschen ) Läuft der Screener nicht unabhängig vom Indikator ??

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar
Related users ' posts
MaoRai54 dear Ivan, it seems to be very interesting but please clarify what are all the lines I see i...
Iván Hi! you have the answer in the last line of code... MacdMiddle as "histo" style(histogra...
kats Le Top , a utiliser avec le nuage violet et alerte TN pour plus de précision.
roccafragius Hello Ivan, very good job! May I ask you to translate teh script from TradingView named Tre...
Iván Hi! yes. You can ask for it here: https://www.prorealcode.com/free-code-conversion/
roccafragius Thank you so much Ivan! I created this request in english Translate from TradingView Indicat...
Regisnew très bel indicateur merci
Jean2139 Bonjour Yvan, Merci pour ton indicateur que je trouve très intéressant. Je suppose que tu ...
Suffi Hier eine kleine Korrektur: //-----Inputs-----------------------------------------// MALengt...
kats Bonjour, J'ai une question etes vous trader? Je m'explique , j'ai téléchargé tous les indi...
Faisalx Hola Ivan. Thanks for your great job. I would appreciate if you have look at my request http...
roccafragius Thank you for all these useful information!! Very great job Ivan! THank you so much
geroniman Merci Ivan, super travail. On peut toujours compter sur toi pour apporter des innovations su...
Stenozar Ciao mi restituisce errore line 1; forse è perchè utilizzo la versione 11 ? in questo caso d...
Stenozar Ciao IVAN , mi da errore per la riga 49 "print tema low"; puoi suggerirmi la modifica da met...
Iván Avete provato a scaricare il file .itf?
Iván Allora crei un nuovo post. Lo aspetterò.
Stenozar Ciao Ivan, ho inserito il post con la richiesta di traduzione. Se puoi vedere, grazie!
Iván perfect!
kats Bonsoir, Pensez vous pouvoir répondre à ma question posée ci dessus? Ce serait vraiment tr...
Iván Bonjour L'ensemble de l'indicateur est alimenté à partir de la ligne 9 avec la définition d...
kats BONSOIR c bon merci j ai trouve ce weekend merci de votre reponse cdlt
Gaspare Ciao Ivan si puo' inserire una strategia su questo indicatore per ottimizzare le variabil...
MrMagic This is amazing work. Well done, Ivan!
Regisnew Bonjour Ivan serait il possible de proposer un screener pour détecter les zones de support v...
Iván
6 months ago
Iván Si lo descargas e importas en tu PRT verás que se han creado las variables para luego config...
WhyAskOZ Hi, Ivan As always you are doing great coding. The code works on my PRT, however the issu...
Iván You can delete in the last line (return) the configuration for color. Delete coloured(xx,xx,...
Bernard13 (Je réécris mon commentaire -français- en français car certains mots ne correspondaient pas ...
Iván 1000 indicateurs !!! brutaux
Lean Me parece muy buen indicador, y se complementa muy bien en mi sistema, ¿podrías crear un scr...
Iván Gracias! Para el screener sólo tienes que copiar el indicador y poner como condición de búsq...
Lean Muchas gracias Iván, ya lo he podido crear.
Doddge Hola Iván, ¿sería posible crear un screener que indique cuándo las velas coloreadas del indi...
RTR Ivan thank you for the pro-screener. I a trying to understand how to write the signals from ...
Iván Hi, Lines 62 and 63. These lines define buy and sell conditions.
MaoRai54 Thanks, now it's OK. in your first code at line 15-16 it's missing.
Madrosat Hello Ivan Did you try a strategy with this indicator
Iván Hi. No I didn't. This is a code translation requested by an user a few days ago.
Iván
8 months ago
cjr30 Simplemente modifica las lineas 19 y 21 por las siguientes: drawtext("▲",barindex,low-0.1*a...
groelandes Gracias!!
WhyAskOZ i copied the code into strategy and it gives error on line 21 and 23. it says " Line 1: ...
Iván
8 months ago
Madrosat Hello Ivan You have interesting topics on indicators , smart supertrend, optimised trend t...
Iván Hi! thanks. All of these codes are translations requested in the forum. I've on mind to back...
Raspete01 Buenos días Iván, estoy intentando llevar el código eliminando los colores y pasando un Back...
Iván
8 months ago
winnie37 Hi Ivan, if i want to use it, and call the oscillator value (in grey, green or red), how to...
Iván The oscillator is smoothtype. In inputs there is de lag to configure the output
ARLEQUIN49 Hello Ivan, Would it be possible to convert the code of this QQE MOD indicator which accomp...
ARLEQUIN49 here is the code: //@version=4 //By Glaz, Modified // study("QQE MOD") RSI_Period = i...
Iván Hi, Yes I can translate it but please, create a new topic for it.

Top