onversion of indicator DTFX Algo Zones (Ivan)

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #254678 quote
    ZiggyZiggy
    Participant
    Average

    Can You plese convert from Pine Script into ProRealTime TIA

    ///—

     

    // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
    // © LuxAlgo

    //@version=5
    indicator(“DTFX Algo Zones [LuxAlgo]”, shorttitle = “LuxAlgo – DTFX Algo Zones”, overlay = true, max_boxes_count = 500, max_lines_count = 500)

    ///———————————————————————————————————————}
    //Inputs
    //———————————————————————————————————————{

    structureTog = input.bool(true, title = “Show Swing Points”, group = “Structure”)
    structureLen = input.int(10, title = “Structure Length”, group = “Structure”)

    zoneDispNum = input.int(1, title = “Show Last”, group = “Zones”, minval = 0)
    dispAll = input.bool(true, title = “Display All Zones”, tooltip = “Ignores Zone Display # and Displays all Possible Zones.”, group = “Zones”)
    zoneFilter = input.string(“Both”, title = “Zone Display”, options = [“Bullish Only”, “Bearish Only”, “Both”], group = “Zones”)
    noOverlap = input.bool(true, title = “Clean-Up Level Overlap”, group = “Zones”)

    fib_group = ”              Fib Levels                    Line Style                 Bull | Bear”

    f1Tog = input.bool(false, title = “”, group = fib_group, inline = “1”)
    f2Tog = input.bool(true, title = “”, group = fib_group, inline = “2”)
    f3Tog = input.bool(true, title = “”, group = fib_group, inline = “3”)
    f4Tog = input.bool(true, title = “”, group = fib_group, inline = “4”)
    f5Tog = input.bool(false, title = “”, group = fib_group, inline = “5”)

    f1Lvl = f1Tog?input.float(0, title = “”, group = fib_group, inline = “1”):na
    f2Lvl = f2Tog?input.float(0.3, title = “”, group = fib_group, inline = “2”):na
    f3Lvl = f3Tog?input.float(0.5, title = “”, group = fib_group, inline = “3”):na
    f4Lvl = f4Tog?input.float(0.7, title = “”, group = fib_group, inline = “4”):na
    f5Lvl = f5Tog?input.float(1, title = “”, group = fib_group, inline = “5”):na

    f1Style = input.string(“. . .”, title = “”, options = [“___”,”- – -“,”. . .”], group = fib_group, inline = “1”)
    f2Style = input.string(“- – -“, title = “”, options = [“___”,”- – -“,”. . .”], group = fib_group, inline = “2”)
    f3Style = input.string(“___”, title = “”, options = [“___”,”- – -“,”. . .”], group = fib_group, inline = “3”)
    f4Style = input.string(“- – -“, title = “”, options = [“___”,”- – -“,”. . .”], group = fib_group, inline = “4”)
    f5Style = input.string(“. . .”, title = “”, options = [“___”,”- – -“,”. . .”], group = fib_group, inline = “5”)

    f1BullColor = input.color(#089981, title = “”, group = fib_group, inline = “1”)
    f2BullColor = input.color(#089981, title = “”, group = fib_group, inline = “2”)
    f3BullColor = input.color(#089981, title = “”, group = fib_group, inline = “3”)
    f4BullColor = input.color(#089981, title = “”, group = fib_group, inline = “4”)
    f5BullColor = input.color(#089981, title = “”, group = fib_group, inline = “5”)

    f1BearColor = input.color(#f23645, title = “”, group = fib_group, inline = “1”)
    f2BearColor = input.color(#f23645, title = “”, group = fib_group, inline = “2”)
    f3BearColor = input.color(#f23645, title = “”, group = fib_group, inline = “3”)
    f4BearColor = input.color(#f23645, title = “”, group = fib_group, inline = “4”)
    f5BearColor = input.color(#f23645, title = “”, group = fib_group, inline = “5”)

    structureColor = input.color(color.gray, title = “Structure Color”, group = “Style”)
    bullZoneColor = input.color(color.new(#089981,80), title = “Bullish Zone Color”, group = “Style”)
    bearZoneColor = input.color(color.new(#f23645,80), title = “Bearish Zone Color”, group = “Style”)

    //———————————————————————————————————————}
    //UDTs
    //———————————————————————————————————————{

    type pb
    float price
    int bar

    type fs
    line f1
    line f2
    line f3
    line f4
    line f5

    //———————————————————————————————————————}
    //Functions
    //———————————————————————————————————————{

    linestyle(_input) =>
    _input == “___”?line.style_solid:
    _input == “- – -“?line.style_dashed:
    _input == “. . .”?line.style_dotted:
    na

    get_fibs(_top,_bot,_dir,_fl1,_fl2,_fl3,_fl4,_fl5) =>
    rng = _dir == 1 ? _top – _bot : _bot – _top
    anchor = _dir == 1 ? _bot : _top
    fib1 = anchor + (rng*_fl1)
    fib2 = anchor + (rng*_fl2)
    fib3 = anchor + (rng*_fl3)
    fib4 = anchor + (rng*_fl4)
    fib5 = anchor + (rng*_fl5)
    [fib1,fib2,fib3,fib4,fib5]

    //———————————————————————————————————————}
    //Calcs
    //———————————————————————————————————————{

    var int dir = 0

    float top = na
    float btm = na

    var pb t = pb.new(na,na)
    var pb b = pb.new(na,na)

    var bool bos_up_check = false
    var bool bos_down_check = false

    var string last_bot = “NA”
    var string last_top = “NA”

    var zones = array.new_box()
    var lvls = array.new<fs>()

    var box live_zone = na
    var fs live_lvls = fs.new(na,na,na,na,na)

    upper = ta.highest(structureLen)
    lower = ta.lowest(structureLen)

    if dir >= 0 and high[structureLen] > upper
    dir := -1
    top := high[structureLen]

    if dir <= 0 and low[structureLen] < lower
    dir := 1
    btm := low[structureLen]

    top_conf = not na(top)
    bot_conf = not na(btm)

    int structure_confirmed = 0

    if top_conf
    t := pb.new(top,bar_index-structureLen)
    bos_up_check := true
    if structureTog
    structure_confirmed := 1
    if bot_conf
    b := pb.new(btm,bar_index-structureLen)
    bos_down_check := true
    if structureTog
    structure_confirmed := -1

    plotshape(structure_confirmed>0?true:false, style = shape.circle, title = “Swing High”, location = location.abovebar, offset = -structureLen, color = structureColor)
    plotshape(structure_confirmed<0?true:false, style = shape.circle, title = “Swing Low”, location = location.belowbar, offset = -structureLen, color = structureColor)

    HH = top_conf and t.price > t.price[1]
    HL = bot_conf and b.price > b.price[1]
    LH = top_conf and t.price < t.price[1]
    LL = bot_conf and b.price < b.price[1]

    last_top := HH?”HH”:LH?”LH”:last_top
    last_bot := LL?”LL”:HL?”HL”:last_bot

    var int t_dir = 0

    choch_up = ta.crossover(close,t.price) and (high == upper) and t_dir <= 0
    choch_down = ta.crossunder(close,b.price) and (low == lower) and t_dir >= 0

    if choch_up
    t_dir := 1
    if choch_down
    t_dir := -1

    bos_up = ta.crossover(close,t.price) and bos_up_check and t_dir >= 0
    bos_down = ta.crossunder(close,b.price) and bos_down_check and t_dir <= 0

    mss_up = bos_up or choch_up
    mss_down = bos_down or choch_down

    if mss_up
    bos_up_check := false
    if zoneFilter != “Bearish Only”
    _top = t.price
    _bot = dir == -1 ? lower : dir == 1 ? b.price : 0
    [fib1,fib2,fib3,fib4,fib5] = get_fibs(_top,_bot,1,f1Lvl,f2Lvl,f3Lvl,f4Lvl,f5Lvl)
    live_zone := box.new(t.bar,_top,bar_index,_bot,bgcolor = bullZoneColor,border_color = na)
    live_lvls := fs.new(
    line.new(t.bar,(f1Tog?fib1:na),bar_index,fib1, color = f1BullColor, style = linestyle(f1Style)),
    line.new(t.bar,(f2Tog?fib2:na),bar_index,fib2, color = f2BullColor, style = linestyle(f2Style)),
    line.new(t.bar,(f3Tog?fib3:na),bar_index,fib3, color = f3BullColor, style = linestyle(f3Style)),
    line.new(t.bar,(f4Tog?fib4:na),bar_index,fib4, color = f4BullColor, style = linestyle(f4Style)),
    line.new(t.bar,(f5Tog?fib5:na),bar_index,fib5, color = f5BullColor, style = linestyle(f5Style))
    )
    zones.push(live_zone)
    lvls.push(live_lvls)

    if mss_down
    bos_down_check := false
    if zoneFilter != “Bullish Only”
    _top = dir == 1 ? upper : dir == -1 ? t.price : 0
    _bot = b.price
    [fib1,fib2,fib3,fib4,fib5] = get_fibs(_top,_bot,-1,f1Lvl,f2Lvl,f3Lvl,f4Lvl,f5Lvl)
    live_zone := box.new(b.bar,_top,bar_index,_bot,bgcolor = bearZoneColor,border_color = na)
    live_lvls := fs.new(
    line.new(b.bar,(f1Tog?fib1:na),bar_index,fib1, color = f1BearColor, style = linestyle(f1Style)),
    line.new(b.bar,(f2Tog?fib2:na),bar_index,fib2, color = f2BearColor, style = linestyle(f2Style)),
    line.new(b.bar,(f3Tog?fib3:na),bar_index,fib3, color = f3BearColor, style = linestyle(f3Style)),
    line.new(b.bar,(f4Tog?fib4:na),bar_index,fib4, color = f4BearColor, style = linestyle(f4Style)),
    line.new(b.bar,(f5Tog?fib5:na),bar_index,fib5, color = f5BearColor, style = linestyle(f5Style))
    )
    zones.push(live_zone)
    lvls.push(live_lvls)

    if zones.size() > zoneDispNum and not dispAll
    zones.shift().delete()
    ln = lvls.shift()
    ln.f1.delete()
    ln.f2.delete()
    ln.f3.delete()
    ln.f4.delete()
    ln.f5.delete()

    if lvls.size() > 1 and noOverlap
    last_zone = zones.get(zones.size()-2)
    last_lvl = lvls.get(lvls.size()-2)
    if last_lvl.f1.get_x2() > live_lvls.f1.get_x1()
    last_lvl.f1.set_x2(math.max(live_zone.get_left(),last_zone.get_right()))
    last_lvl.f2.set_x2(math.max(live_zone.get_left(),last_zone.get_right()))
    last_lvl.f3.set_x2(math.max(live_zone.get_left(),last_zone.get_right()))
    last_lvl.f4.set_x2(math.max(live_zone.get_left(),last_zone.get_right()))
    last_lvl.f5.set_x2(math.max(live_zone.get_left(),last_zone.get_right()))

    live_lvls.f1.set_x1(math.max(live_zone.get_left(),last_zone.get_right()))
    live_lvls.f2.set_x1(math.max(live_zone.get_left(),last_zone.get_right()))
    live_lvls.f3.set_x1(math.max(live_zone.get_left(),last_zone.get_right()))
    live_lvls.f4.set_x1(math.max(live_zone.get_left(),last_zone.get_right()))
    live_lvls.f5.set_x1(math.max(live_zone.get_left(),last_zone.get_right()))

    live_lvls.f1.set_x2(bar_index)
    live_lvls.f2.set_x2(bar_index)
    live_lvls.f3.set_x2(bar_index)
    live_lvls.f4.set_x2(bar_index)
    live_lvls.f5.set_x2(bar_index)

    //———————————————————————————————————————}

    #254813 quote
    Iván GonzálezIván González
    Moderator
    Legend
    // DTFX Algo Zones
    structureLen = 10
    zoneFilter = 0 //(0: Both, 1: Bullish, 2: Bearish)
    f2Lvl = 0.3
    f3Lvl = 0.5
    f4Lvl = 0.7
    
    // --- Seteo de constantes ---
    once dir = 0
    once tPrice = 0
    once bPrice = 0
    once tBar = 0
    once bBar = 0
    once bosUpCheck = 0
    once bosDownCheck = 0
    once tDir = 0
    
    // --- Cálculos de Estructura ---
    upper = highest[structureLen](high)
    lower = lowest[structureLen](low)
    
    // Detección de Swing High
    IF dir >= 0 AND high[structureLen] > upper THEN
       dir = -1
       tPrice = high[structureLen]
       tBar = barindex[structureLen]
       bosUpCheck = 1
       // Dibujar Swing High
       DRAWTEXT("●", tBar, tPrice + (averageTrueRange[10]*0.5), Dialog, Bold, 12) COLOURED(128, 128, 128)
    ENDIF
    
    // Detección de Swing Low
    IF dir <= 0 AND low[structureLen] < lower THEN
       dir = 1
       bPrice = low[structureLen]
       bBar = barindex[structureLen]
       bosDownCheck = 1
       // Dibujar Swing Low
       DRAWTEXT("●", bBar, bPrice - (averageTrueRange[10]*0.5), Dialog, Bold, 12) COLOURED(128, 128, 128)
    ENDIF
    
    // --- Detección de MSS / ChoCH ---
    chochUp = (close CROSSES OVER tPrice) AND (high = upper) AND (tDir <= 0)
    chochDown = (close CROSSES UNDER bPrice) AND (low = lower) AND (tDir >= 0)
    
    IF chochUp THEN
       tDir = 1
    ENDIF
    
    IF chochDown THEN
       tDir = -1
    ENDIF
    
    bosUp = (close CROSSES OVER tPrice) AND (bosUpCheck = 1) AND (tDir >= 0)
    bosDown = (close CROSSES UNDER bPrice) AND (bosDownCheck = 1) AND (tDir <= 0)
    
    mssUp = bosUp OR chochUp
    mssDown = bosDown OR chochDown
    
    // --- Dibujo de Zonas y Niveles Fib ---
    // Zona Alcista (Bullish)
    IF mssUp AND (zoneFilter <> 2) THEN
       bosUpCheck = 0
       currentBot = 0
       IF dir = -1 THEN
          currentBot = lower
       ELSE
          currentBot = bPrice
       ENDIF
       
       // Proyección de la zona
       DRAWRECTANGLE(tBar, tPrice, barindex, currentBot) COLOURED(8, 153, 129, 50) BORDERCOLOR(0,0,0,0)
       
       // Niveles Fibonacci internos
       rng = tPrice - currentBot
       fib2 = currentBot + (rng * f2Lvl)
       fib3 = currentBot + (rng * f3Lvl)
       fib4 = currentBot + (rng * f4Lvl)
       
       DRAWSEGMENT(tBar, fib2, barindex, fib2) STYLE(dottedline, 1) COLOURED(8, 153, 129)
       DRAWSEGMENT(tBar, fib3, barindex, fib3) STYLE(line, 1) COLOURED(8, 153, 129)
       DRAWSEGMENT(tBar, fib4, barindex, fib4) STYLE(dottedline, 1) COLOURED(8, 153, 129)
    ENDIF
    
    // Zona Bajista (Bearish)
    IF mssDown AND (zoneFilter <> 1) THEN
       bosDownCheck = 0
       currentTop = 0
       IF dir = 1 THEN
          currentTop = upper
       ELSE
          currentTop = tPrice
       ENDIF
       
       // Proyección de la zona
       DRAWRECTANGLE(bBar, currentTop, barindex, bPrice) COLOURED(242, 54, 69, 50) BORDERCOLOR(0,0,0,0)
       
       // Niveles Fibonacci internos
       rng = bPrice - currentTop
       fib2 = currentTop + (rng * f2Lvl)
       fib3 = currentTop + (rng * f3Lvl)
       fib4 = currentTop + (rng * f4Lvl)
       
       DRAWSEGMENT(bBar, fib2, barindex, fib2) STYLE(dottedline, 1) COLOURED(242, 54, 69)
       DRAWSEGMENT(bBar, fib3, barindex, fib3) STYLE(line, 1) COLOURED(242, 54, 69)
       DRAWSEGMENT(bBar, fib4, barindex, fib4) STYLE(dottedline, 1) COLOURED(242, 54, 69)
    ENDIF
    
    RETURN
    
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

onversion of indicator DTFX Algo Zones (Ivan)


ProBuilder: Indicators & Custom Tools

New Reply
Author
author-avatar
Ziggy @ziggy Participant
Summary

This topic contains 1 reply,
has 2 voices, and was last updated by Iván GonzálezIván González
8 months, 3 weeks ago.

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