Conversion de l’indicateur Support and Resistance signal MTF
Forums › ProRealTime forum Français › Support ProBuilder › Conversion de l’indicateur Support and Resistance signal MTF
- This topic has 2 replies, 2 voices, and was last updated 1 year ago by Majez.
-
-
09/18/2023 at 9:09 PM #221243
Bonjour,
je souhaiterais convertir le script tradingview suivant pour l’utiliser sur ProRealTime.
C’est un indicateurqui permettrait de détecter les zones de S/R et les breakouts.
Pourriez-vous m’indiquer s’il existe une app de conversion automatique de scipts pine en probuilder ?Merci pour votre aide,
Bien à vous,
// 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(“Support and Resistance Signals MTF [LuxAlgo]”, ‘LuxAlgo – Support Resistance Signals MTF’, true, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500)
//——————————————————————————
// Settings
//—————————————————————————–{srGR = ‘Support & Resistance Settings’
srTT = ‘tip : in ranging markets higher timeframe resolution or higher detection length might help reduce the noise’
srTF = input.string(‘Chart’, ‘Detection Timeframe’, options=[‘Chart’, ’15 Minutes’, ‘1 Hour’, ‘4 Hours’, ‘1 Day’, ‘1 Week’], group = srGR, tooltip = srTT)
srLN = input(15, ‘Detection Length’, group = srGR)srMR = input.float(2, ‘Support Resistance Margin’, minval = .1, maxval = 10, step = .1, group = srGR)
srSLC = input(color.new(#089981, 53), ‘ - Support, Lines’, inline = ‘srS’, group = srGR)
srSZC = input(color.new(#089981, 83), ‘Zones’, inline = ‘srS’, group = srGR)
srRLC = input(color.new(#f23645, 53), ‘ - Resistance, Lines’, inline = ‘srR’, group = srGR)
srRZC = input(color.new(#f23645, 83), ‘Zones’, inline = ‘srR’, group = srGR)srHST = input.bool(true, ‘Check Previous Historical S&R Zone’, group = srGR)
mnGR = ‘Manupulations’
mnSH = input.bool(true, ‘Manupulation Zones’, group = mnGR)
mnMR = input.float(1.3, ‘Manupulation Margin’, minval = .1, maxval = 10, step = .1, group = mnGR)
mnSZC = input(color.new(#2962ff, 73), ‘Manupulation Zones, Support’, inline = ‘LQ’, group = mnGR)
mnRZC = input(color.new(#ff9800, 73), ‘Resistance’, inline = ‘LQ’, group = mnGR)sigGR = ‘Signals’
srFBT = ‘Filters the breakouts that failed to continue beyond a level’
srFBO = input.bool(true, ‘Avoid False Breakouts’, group = sigGR, tooltip = srFBT)srBUC = input(color.new(#089981, 33), ‘Breakouts, Bullish’, inline = ‘srB’, group = sigGR)
srBDC = input(color.new(#f23645, 33), ‘Bearish’, inline = ‘srB’, group = sigGR)
srBS = input.string(‘Tiny’, “”, options=[‘Auto’, ‘Tiny’, ‘Small’, ‘Normal’, ‘None’], inline = ‘srB’, group = sigGR)srTUC = input(color.new(#2962ff, 33), ‘Tests, Bullish’, inline = ‘srT’, group = sigGR)
srTDC = input(color.new(#e040fb, 33), ‘Bearish’, inline = ‘srT’, group = sigGR)
srTS = input.string(‘Tiny’, “”, options=[‘Auto’, ‘Tiny’, ‘Small’, ‘Normal’, ‘None’], inline = ‘srT’, group = sigGR)srRUC = input(color.new(#089981, 33), ‘Retests, Bullish’, inline = ‘srR’, group = sigGR)
srRDC = input(color.new(#f23645, 33), ‘Bearish’, inline = ‘srR’, group = sigGR)
srRS = input.string(‘Tiny’, “”, options=[‘Auto’, ‘Tiny’, ‘Small’, ‘Normal’, ‘None’], inline = ‘srR’, group = sigGR)srPUC = input(color.new(#089981, 33), ‘Rejections, Bullish’, inline = ‘srP’, group = sigGR)
srPDC = input(color.new(#f23645, 33), ‘Bearish’, inline = ‘srP’, group = sigGR)
srPS = input.string(‘Tiny’, “”, options=[‘Auto’, ‘Tiny’, ‘Small’, ‘Normal’, ‘None’], inline = ‘srP’, group = sigGR)othGR = ‘Others’
swSH = input.string(‘None’, “Swing Levels”, options=[‘Auto’, ‘Small’, ‘Normal’, ‘Large’, ‘None’], inline = ‘sw’, group = othGR)
swHC = input(color.new(#f23645, 33), ‘H’, inline = ‘sw’, group = othGR)
swLC = input(color.new(#089981, 33), ‘L’, inline = ‘sw’, group = othGR)//—————————————————————————–}
// User Defined Types
//—————————————————————————–{// @type bar properties with their values
//
// @field o (float) open price of the bar
// @field h (float) high price of the bar
// @field l (float) low price of the bar
// @field c (float) close price of the bar
// @field v (float) volume of the bar
// @field i (int) index of the bartype bar
float o = open
float h = high
float l = low
float c = close
float v = volume
int i = bar_index// @type store pivot high/low and index data
//
// @field x (int) last pivot bar index
// @field x1 (int) previous pivot bar index
// @field h (float) last pivot high
// @field h1 (float) previous pivot high
// @field l (float) last pivot low
// @field l1 (float) previous pivot low
// @field hx (bool) pivot high cross status
// @field lx (bool) pivot low cross statustype pivotPoint
int x
int x1
float h
float h1
float l
float l1
bool hx
bool lx// @type stores support and resistance visuals and signal status
//
// @field bx (box) support and resistance zones
// @field lq (box) liquidity sweeps
// @field ln (line) support and resistance levels
// @field b (bool) breakout status
// @field b (bool) test status
// @field b (bool) retest status
// @field b (bool) liqudation status
// @field m (float) default margintype SnR
box bx
box lq
line ln
bool b
bool t
bool r
bool l
float m//—————————————————————————–}
// Variables
//—————————————————————————–{bar b = bar.new()
var pivotPoint pp = pivotPoint.new()
var SnR[] R = array.new
(1, SnR.new(box(na), box(na), line(na), false, false, false, false, na))
var SnR[] S = array.new(1, SnR.new(box(na), box(na), line(na), false, false, false, false, na)) var SnR lR = SnR.new(box(na), box(na), line(na), false, false, false, false, na)
var SnR lS = SnR.new(box(na), box(na), line(na), false, false, false, false, na)
var SnR lRt = SnR.new(box(na), box(na), line(na), false, false, false, false, na)
var SnR lSt = SnR.new(box(na), box(na), line(na), false, false, false, false, na)var int mss = 0
//—————————————————————————–}
// General Calculations
//—————————————————————————–{int tf_m = switch srTF
“Chart” => timeframe.isintraday ? timeframe.multiplier : timeframe.isdaily ? 1440 : timeframe.isweekly ? 10080 : 10080 * 30
“15 Minutes” => 15
“1 Hour” => 60
“4 Hours” => 240
“1 Day” => 1440
“1 Week” => 10080ch_m = if timeframe.isintraday
timeframe.multiplier
else if timeframe.isdaily
1440
else if timeframe.isweekly
10080
else if timeframe.ismonthly
10080 * 30srLN := srLN * tf_m / ch_m
pHST = ta.highest(b.h, srLN)
pLST = ta.lowest (b.l, srLN)atr = ta.atr(17)
isLLS = math.abs(b.l – math.min(b.o, b.c)) >= 1.618 * atr
isLUS = math.abs(b.h – math.max(b.o, b.c)) >= 1.618 * atrvSMA = ta.sma(nz(b.v), 17)
isHV = nz(b.v) >= 1.618 * vSMA
isLV = nz(b.v) <= 0.618 * vSMA vST = isHV ? '\n *High Trading Activity' : isLV ? '\n *Low Trading Activity' : '\n *Average Trading Activity' if nz(b.v) > vSMA * 4.669
alert(‘High trading activity (Volume SPIKE) detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period)srBUC := srBS != ‘None’ ? srBUC : color(na)
srBDC := srBS != ‘None’ ? srBDC : color(na)
srBTC = srBS != ‘None’ ? color.white : color(na)srTUC := srTS != ‘None’ ? srTUC : color(na)
srTDC := srTS != ‘None’ ? srTDC : color(na)
srTTC = srTS != ‘None’ ? color.white : color(na)srRUC := srRS != ‘None’ ? srRUC : color(na)
srRDC := srRS != ‘None’ ? srRDC : color(na)
srRTC = srRS != ‘None’ ? color.white : color(na)//—————————————————————————–}
// Functions/Methods
//—————————————————————————–{// @function calcuates cumulative volume of the given range
//
// @param _l (int) length of the range
// @param _o (int) offset
//
// @returns (float) cumulative volumef_getTradedVolume(_l, _o) =>
v = 0.
for x = 0 to _l – 1
v += volume[_o + x]
v// @function converts size strings to enumerated values
//
// @param _l (string) size string
//
// @returns (enumeration) size enumerated valuef_getSize(_s) =>
switch _s
‘Tiny’ => size.tiny
‘Small’ => size.small
‘Normal’ => size.normal
‘Large’ => size.large
‘Huge’ => size.huge
=> size.auto//—————————————————————————–}
// Calculations
//—————————————————————————–{pp_h = ta.pivothigh(srLN, srLN)
if not na(pp_h)
pp.h1 := pp.h
pp.h := pp_h
pp.x1 := pp.x
pp.x := b.i[srLN]
pp.hx := falseif R.size() > 1
lR := R.get(0)
lRt := R.get(1)if pp.h < lR.bx.get_bottom() * (1 - lR.m * .17 * srMR) or pp.h > lR.bx.get_top() * (1 + lR.m * .17 * srMR)
if pp.x < lR.bx.get_left() and pp.x + srLN > lR.bx.get_left() and b.c < lR.bx.get_bottom() na else if pp.h < lRt.bx.get_bottom() * (1 - lRt.m * .17 * srMR) or pp.h > lRt.bx.get_top() * (1 + lRt.m * .17 * srMR)R.unshift(
SnR.new(
box.new(pp.x, pp.h, b.i, pp.h * (1 – ((pHST – pLST) / pHST) * .17 * srMR), border_color = color(na), bgcolor = srRZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(pp.x, pp.h, b.i, pp.h, color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, (pHST - pLST) / pHST)) lS.t := false else lRt.bx.set_right(b.i) lRt.ln.set_x2(b.i) else if lR.bx.get_top() != lS.bx.get_top() lR.bx.set_right(b.i) lR.ln.set_x2(b.i) else R.unshift( SnR.new( box.new(pp.x, pp.h, b.i, pp.h * (1 - ((pHST - pLST) / pHST) * .17 * srMR), border_color = color(na), bgcolor = srRZC), //box.new(pp.x, pp.h, b.i, pp.h * (1 - ((pHST - pLST) / pHST) * .17 * srMR), border_color = color(na), bgcolor = color.new(color.orange, 89)), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(pp.x, pp.h, b.i, pp.h, color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, (pHST - pLST) / pHST)) lS.t := false if swSH != 'None' StS = pp.x - pp.x1 tradedVolume = f_getTradedVolume(StS, srLN) swH = pp.h > pp.h1 ? “Higher High” : pp.h < pp.h1 ? "Lower High" : na rTT = 'Swing High (' + swH + ') : ' + str.tostring(pp.h, format.mintick) + (mss == -1 and pp.h < pp.h1 ? '\n *Counter-Trend Move' : '') + '\n -Price Change : ↑ %' + str.tostring((pp.h - pp.l) * 100 / pp.l , '#.##') + (nz(b.v) ? '\n -Traded Volume : ' + str.tostring(tradedVolume, format.volume) + ' (' + str.tostring(StS - 1) + ' bars)' + '\n *Average Volume/Bar : ' + str.tostring(tradedVolume / (StS - 1), format.volume) : '') label.new(pp.x, pp.h, '◈', color = color(na), style = label.style_label_down, textcolor = swHC, size = f_getSize(swSH), tooltip = rTT) alert('New ' + swH + (mss == -1 and pp.h < pp.h1 ? ' (counter-trend move)' : '') + ' formed\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) if b.c[1] > pp.h and b.c > pp.h and not pp.hx
pp.hx := true
mss := 1pp_l = ta.pivotlow (srLN, srLN)
if not na(pp_l)
pp.l1 := pp.l
pp.l := pp_l
pp.x1 := pp.x
pp.x := b.i[srLN]
pp.lx := falseif S.size() > 2
lS := S.get(0)
lSt := S.get(1)if pp.l < lS.bx.get_bottom() * (1 - lS.m * .17 * srMR) or pp.l > lS.bx.get_top() * (1 + lS.m * .17 * srMR)
if pp.x < lS.bx.get_left() and pp.x + srLN > lS.bx.get_left() and b.c > lS.bx.get_top() //not lR.b
na
else
if pp.l < lSt.bx.get_bottom() * (1 - lSt.m * .17 * srMR) or pp.l > lSt.bx.get_top() * (1 + lSt.m * .17 * srMR)S.unshift(
SnR.new(
box.new(pp.x, pp.l * (1 + ((pHST – pLST) / pHST) * .17 * srMR), b.i, pp.l, border_color = color(na), bgcolor = srSZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(pp.x, pp.l, b.i, pp.l, color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, (pHST - pLST) / pHST)) lR.t := false else lSt.bx.set_right(b.i) lSt.ln.set_x2(b.i) else if lS.bx.get_bottom() != lR.bx.get_bottom() lS.bx.set_right(b.i) lS.ln.set_x2(b.i) else S.unshift( SnR.new( box.new(pp.x, pp.l * (1 + ((pHST - pLST) / pHST) * .17 * srMR), b.i, pp.l, border_color = color(na), bgcolor = srSZC), //box.new(pp.x, pp.l * (1 + ((pHST - pLST) / pHST) * .17 * srMR), b.i, pp.l, border_color = color(na), bgcolor = color.new(color.aqua, 89)), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(pp.x, pp.l, b.i, pp.l, color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, (pHST - pLST) / pHST)) lR.t := false if swSH != 'None' StS = pp.x - pp.x1 tradedVolume = f_getTradedVolume(StS, srLN) swL = pp.l < pp.l1 ? "Lower Low" : pp.l > pp.l1 ? “Higher Low” : na
sTT = ‘Swing Low (‘ + swL + ‘) : ‘ + str.tostring(pp.l, format.mintick) +
(mss == 1 and pp.l > pp.l1 ? ‘\n *Counter-Trend Move’ : ”) +
‘\n -Price Change : ↓ %’ + str.tostring((pp.h – pp.l) * 100 / pp.h , ‘#.##’) +
(nz(b.v) ? ‘\n -Traded Volume : ‘ + str.tostring(tradedVolume, format.volume) + ‘ (‘ + str.tostring(StS – 1) + ‘ bars)’ +
‘\n *Average Volume/Bar : ‘ + str.tostring(tradedVolume / (StS – 1), format.volume) : ”)
label.new(pp.x, pp.l, ‘◈’, color = color(na), style = label.style_label_up, textcolor = swLC, size = f_getSize(swSH), tooltip = sTT)alert(‘New ‘ + swL + (mss == 1 and pp.l > pp.l1 ? ‘ (counter-trend move)’ : ”) + ‘ formed\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period)
if b.c[1] < pp.l and b.c < pp.l and not pp.lx pp.lx := true mss := -1 if R.size() > 0
lR := R.get(0)if srFBO and b.c[1] > lR.bx.get_top() * (1 + lR.m * .17) and not lR.b
lR.bx.set_right(b.i[1])
lR.ln.set_x2(b.i[1])
lR.b := true
lR.r := falselabel.new(b.i[1], b.l[1] * (1 – lR.m * .017), ‘▲\n\nB’, color = srBUC, style = label.style_label_up , textcolor = srBTC, size = f_getSize(srBS), tooltip = ‘Bullish Breakout’ + vST[1])
//label.new(b.i[1], b.l[1] * (1 – lR.m * .017), ‘▲\n\nB’, color = color.yellow, style = label.style_label_up , textcolor = srBTC, size = f_getSize(srBS), tooltip = ‘Bullish Breakout’ + vST[1])S.unshift(
SnR.new(
box.new(b.i[1], lR.bx.get_top(), b.i + 1, lR.bx.get_bottom(), border_color = color(na), bgcolor = srSZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(b.i[1], lR.bx.get_bottom(), b.i + 1, lR.bx.get_bottom(), color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lR.m)) //R.remove(0) if srBS != 'None' alert('Bullish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if b.c[1] > lR.bx.get_top() and not lR.b and not srFBO
lR.bx.set_right(b.i[1])
lR.ln.set_x2(b.i[1])
lR.b := true
lR.r := falselabel.new(b.i[1], b.l[1] * (1 – lR.m * .017), ‘▲\n\nB’, color = srBUC, style = label.style_label_up , textcolor = srBTC, size = f_getSize(srBS), tooltip = ‘Bullish Breakout’ + vST[1])
S.unshift(
SnR.new(
box.new(b.i[1], lR.bx.get_top(), b.i + 1, lR.bx.get_bottom(), border_color = color(na), bgcolor = srSZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(b.i[1], lR.bx.get_bottom(), b.i + 1, lR.bx.get_bottom(), color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lR.m)) //R.remove(0) if srBS != 'None' alert('Bullish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if lS.b and b.o[1] < lR.bx.get_top() and b.h[1] > lR.bx.get_bottom() and b.c[1] < lR.bx.get_bottom() and not lR.r and b.i[1] != lR.bx.get_left() label.new(b.i[1], b.h[1] * (1 + lR.m * .017), 'R', color = srRDC, style = label.style_label_down , textcolor = srRTC, size = f_getSize(srRS), tooltip = 'Re-test of Resistance Zone' + vST[1] ) lR.r := true // lR.bx.set_right(b.i) lR.ln.set_x2(b.i) if srRS != 'None' alert('Re-test of resistance zone detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if b.h[1] > lR.bx.get_bottom() and b.c[1] < lR.bx.get_top() and b.c < lR.bx.get_top() and not lR.t and not lR.r and not lR.b and not lS.b and b.i[1] != lR.bx.get_left() label.new(b.i[1], b.h[1] * (1 + lR.m * .017), 'T', color = srTDC, style = label.style_label_down , textcolor = srTTC, size = f_getSize(srTS), tooltip = 'Test of Resistance Zone' + vST[1] ) lR.t := true lR.bx.set_right(b.i) lR.ln.set_x2(b.i) if srTS != 'None' alert('Test of resistance zone detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period, alert.freq_once_per_bar_close) else if b.h > lR.bx.get_bottom() * (1 – lR.m * .17) and not lR.b //and lR.bx.get_top() != lS.bx.get_top()
if b.h > lR.bx.get_bottom()
lR.bx.set_right(b.i)
lR.ln.set_x2(b.i)if isLLS[1] and isHV[1] and srPS != ‘None’
label.new(b.i[1], b.l[1] * (1 – lR.m * .017), ”, color = srPUC, style = label.style_label_up , textcolor = color.white, size = f_getSize(srPS), tooltip = ‘Rejection of Lower Prices’ + vST[1])
alert(‘Rejection of lower prices detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period)if mnSH
if b.h > lR.bx.get_top() and b.c <= lR.bx.get_top() * (1 + lR.m * .17 * mnMR) and not lR.l and b.i == lR.bx.get_right() if lR.lq.get_right() + srLN > b.i
lR.lq.set_right(b.i + 1)
lR.lq.set_top(math.min(math.max(b.h, lR.lq.get_top()), lR.bx.get_top() * (1 + lR.m * .17 * mnMR)))
else
lR.lq.set_lefttop(b.i[1], math.min(b.h, lR.bx.get_top() * (1 + lR.m * .17 * mnMR)))
lR.lq.set_rightbottom(b.i + 1, lR.bx.get_top())
lR.lq.set_bgcolor(mnRZC)lR.l := true
else if b.h > lR.bx.get_top() and b.c <= lR.bx.get_top() * (1 + lR.m * .17 * mnMR) and lR.l and b.i == lR.bx.get_right() lR.lq.set_right(b.i + 1) lR.lq.set_top(math.min(math.max(b.h,lR.lq.get_top()), lR.bx.get_top() * (1 + lR.m * .17 * mnMR))) else if lR.l and (b.c >= lR.bx.get_top() * (1 + lR.m * .17 * mnMR) or b.c < lR.bx.get_bottom()) lR.l := false if R.size() > 1 and srHST //and (lR.b or lS.b)// and lR.bx.get_top() != lS.bx.get_top()
lRt := R.get(1)if lR.bx.get_top() != lRt.bx.get_top()
if srFBO and b.c[1] > lRt.bx.get_top() * (1 + lRt.m * .17) and not lRt.b
lRt.bx.set_right(b.i[1])
lRt.ln.set_x2(b.i[1])
lRt.b := true
lRt.r := falselabel.new(b.i[1], b.l[1] * (1 – lRt.m * .017), ‘▲\n\nB’, color = srBUC, style = label.style_label_up , textcolor = srBTC, size = f_getSize(srBS), tooltip = ‘Bullish Breakout’ + vST[1])
S.unshift(
SnR.new(
box.new(b.i[1], lRt.bx.get_top(), b.i + 1, lRt.bx.get_bottom(), border_color = color(na), bgcolor = srSZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(b.i[1], lRt.bx.get_bottom(), b.i + 1, lRt.bx.get_bottom(), color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lRt.m)) //R.remove(1) if srBS != 'None' alert('Bullish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if b.c[1] > lRt.bx.get_top() and not lRt.b and not srFBO
lRt.bx.set_right(b.i[1])
lRt.ln.set_x2(b.i[1])
lRt.b := true
lRt.r := falselabel.new(b.i[1], b.l[1] * (1 – lRt.m * .017), ‘▲\n\nB’, color = srBUC, style = label.style_label_up , textcolor = srBTC, size = f_getSize(srBS), tooltip = ‘Bullish Breakout’ + vST[1])
S.unshift(
SnR.new(
box.new(b.i[1], lRt.bx.get_top(), b.i + 1, lRt.bx.get_bottom(), border_color = color(na), bgcolor = srSZC),
box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)),
line.new(b.i[1], lRt.bx.get_bottom(), b.i + 1, lRt.bx.get_bottom(), color = srSLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lRt.m)) //R.remove(1) if srBS != 'None' alert('Bullish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if lSt.b and b.o[1] < lRt.bx.get_top() and b.h[1] > lRt.bx.get_bottom() and b.c[1] < lRt.bx.get_bottom() and not lRt.r and b.i[1] != lRt.bx.get_left() label.new(b.i[1], b.h[1] * (1 + lRt.m * .017), 'R', color = srRDC, style = label.style_label_down , textcolor = srRTC, size = f_getSize(srRS), tooltip = 'Re-test of Resistance Zone' + vST[1] ) lRt.r := true // lRt.bx.set_right(b.i) lRt.ln.set_x2(b.i) if srRS != 'None' alert('Re-test of resistance zone detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if b.h[1] > lRt.bx.get_bottom() and b.c[1] < lRt.bx.get_top() and b.c < lRt.bx.get_top() and not lRt.t and not lRt.b and not lSt.b and b.i[1] != lRt.bx.get_left() label.new(b.i[1], b.h[1] * (1 + lRt.m * .017), 'T', color = srTDC, style = label.style_label_down , textcolor = srTTC, size = f_getSize(srTS), tooltip = 'Test of Resistance Zone' + vST[1] ) lRt.t := true lRt.bx.set_right(b.i) lRt.ln.set_x2(b.i) if srTS != 'None' alert('Test of resistance zone detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period, alert.freq_once_per_bar_close) else if b.h > lRt.bx.get_bottom() * (1 – lRt.m * .17) and not lRt.b
if b.h > lRt.bx.get_bottom()
lRt.bx.set_right(b.i)
lRt.ln.set_x2(b.i)if mnSH
if b.h > lRt.bx.get_top() and b.c <= lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR) and not lRt.l and b.i == lRt.bx.get_right() if lRt.lq.get_right() + srLN > b.i
lRt.lq.set_right(b.i + 1)
lRt.lq.set_top(math.min(math.max(b.h, lRt.lq.get_top()), lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR)))
else
lRt.lq.set_lefttop(b.i[1], math.min(b.h, lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR)))
lRt.lq.set_rightbottom(b.i + 1, lRt.bx.get_top())
lRt.lq.set_bgcolor(mnRZC)lRt.l := true
else if b.h > lRt.bx.get_top() and b.c <= lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR) and lRt.l and b.i == lRt.bx.get_right() lRt.lq.set_right(b.i + 1) lRt.lq.set_top(math.min(math.max(b.h, lRt.lq.get_top()), lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR))) else if lRt.l and (b.c >= lRt.bx.get_top() * (1 + lRt.m * .17 * mnMR) or b.c < lRt.bx.get_bottom()) lRt.l := false if S.size() > 1
lS := S.get(0)if srFBO and b.c[1] < lS.bx.get_bottom() * (1 - lS.m * .17) and not lS.b lS.bx.set_right(b.i[1]) lS.ln.set_x2(b.i[1]) lS.b := true lS.r := false label.new(b.i[1], b.h[1] * (1 + lS.m * .017), 'B\n\n▼', color = srBDC, style = label.style_label_down , textcolor = srBTC, size = f_getSize(srBS), tooltip = 'Bearish Breakout' + vST[1] ) //label.new(b.i[1], b.h[1] * (1 + lS.m * .017), 'B\n\n▼', color = color.yellow, style = label.style_label_down , textcolor = srBTC, size = f_getSize(srBS), tooltip = 'Bearish Breakout' + vST[1] ) R.unshift( SnR.new( box.new(b.i[1], lS.bx.get_top(), b.i + 1, lS.bx.get_bottom(), border_color = color(na), bgcolor = srRZC), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(b.i[1], lS.bx.get_top(), b.i + 1, lS.bx.get_top(), color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lS.m)) //S.remove(0) if srBS != 'None' alert('Bearish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) if b.c[1] < lS.bx.get_bottom() and not lS.b and not srFBO lS.bx.set_right(b.i[1]) lS.ln.set_x2(b.i[1]) lS.b := true lS.r := false label.new(b.i[1], b.h[1] * (1 + lS.m * .017), 'B\n\n▼', color = srBDC, style = label.style_label_down , textcolor = srBTC, size = f_getSize(srBS), tooltip = 'Bearish Breakout' + vST[1] ) R.unshift( SnR.new( box.new(b.i[1], lS.bx.get_top(), b.i + 1, lS.bx.get_bottom(), border_color = color(na), bgcolor = srRZC), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(b.i[1], lS.bx.get_top(), b.i + 1, lS.bx.get_top(), color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lS.m)) //S.remove(0) if srBS != 'None' alert('Bearish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if lR.b and b.o[1] > lS.bx.get_bottom() and b.l[1] < lS.bx.get_top() and b.c[1] > lS.bx.get_top() and not lS.r and b.i[1] != lS.bx.get_left()
label.new(b.i[1], b.l[1] * (1 – lS.m * .017), ‘R’, color = srRUC, style = label.style_label_up , textcolor = srRTC, size = f_getSize(srRS), tooltip = ‘Re-test of Support Zone’ + vST[1] )
lS.r := true //
lS.bx.set_right(b.i)
lS.ln.set_x2(b.i)if srRS != ‘None’
alert(‘Re-test of support zone detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period)else if b.l[1] < lS.bx.get_top() and b.c[1] > lS.bx.get_bottom() and b.c > lS.bx.get_bottom() and not lS.t and not lS.b and not lR.b and b.i[1] != lS.bx.get_left()
label.new(b.i[1], b.l[1] * (1 – lS.m * .017), ‘T’, color = srTUC, style = label.style_label_up , textcolor = srTTC, size = f_getSize(srTS), tooltip = ‘Test of Support Zone’ + vST[1] )
lS.t := true
lS.bx.set_right(b.i)
lS.ln.set_x2(b.i)if srTS != ‘None’
alert(‘Test of support zone detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period, alert.freq_once_per_bar_close)else if b.l < lS.bx.get_top() * (1 + lS.m * .17) and not lS.b //and lS.bx.get_bottom() != lR.bx.get_bottom() if b.l < lS.bx.get_top() lS.bx.set_right(b.i) lS.ln.set_x2(b.i) if isLUS[1] and isHV[1] and srPS != 'None' label.new(b.i[1], b.h[1] * (1 + lS.m * .017), '', color = srPDC, style = label.style_label_down , textcolor = color.white, size = f_getSize(srPS), tooltip = 'Rejection of Higher Prices' + vST[1] ) alert('Rejection of higher prices detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) if mnSH if b.l < lS.bx.get_bottom() and b.c >= lS.bx.get_bottom() * (1 – lS.m * .17 * mnMR) and not lS.l and b.i == lS.bx.get_right()
if lS.lq.get_right() + srLN > b.i
lS.lq.set_right(b.i + 1)
lS.lq.set_bottom(math.max(math.min(b.l, lS.lq.get_bottom()), lS.bx.get_bottom() * (1 – lS.m * .17 * mnMR)))
else
lS.lq.set_lefttop(b.i[1], lS.bx.get_bottom())
lS.lq.set_rightbottom(b.i + 1, math.max(b.l, lS.bx.get_bottom() * (1 – lS.m * .17 * mnMR)))
lS.lq.set_bgcolor(mnSZC)lS.l := true
else if b.l < lS.bx.get_bottom() and b.c >= lS.bx.get_bottom() * (1 – lS.m * .17 * mnMR) and lS.l and b.i == lS.bx.get_right()
lS.lq.set_right(b.i + 1)
lS.lq.set_bottom(math.max(math.min(b.l, lS.lq.get_bottom()), lS.bx.get_bottom() * (1 – lS.m * .17 * mnMR)))
else if lS.l and (b.c <= lS.bx.get_bottom() * (1 - lS.m * .17 * mnMR) or b.c > lS.bx.get_top())
lS.l := falseif S.size() > 2 and srHST //and (lR.b or lS.b)// and lS.bx.get_bottom() != lR.bx.get_bottom()
lSt := S.get(1)if lS.bx.get_bottom() != lSt.bx.get_bottom()
if srFBO and b.c[1] < lSt.bx.get_bottom() * (1 - lSt.m * .17) and not lSt.b //and b.i[1] != lR.bx.get_left() lSt.bx.set_right(b.i[1]) lSt.ln.set_x2(b.i[1]) lSt.b := true lSt.r := false label.new(b.i[1], b.h[1] * (1 + lSt.m * .017), 'B\n\n▼', color = srBDC, style = label.style_label_down , textcolor = srBTC, size = f_getSize(srBS), tooltip = 'Bearish Breakout' + vST[1] ) R.unshift( SnR.new( box.new(b.i[1], lSt.bx.get_top(), b.i + 1, lSt.bx.get_bottom(), border_color = color(na), bgcolor = srRZC), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(b.i[1], lSt.bx.get_top(), b.i + 1, lSt.bx.get_top(), color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lSt.m)) //S.remove(1) if srBS != 'None' alert('Bearish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if b.c[1] < lSt.bx.get_bottom() and not lSt.b and not srFBO //and b.i[1] != lR.bx.get_left() lSt.bx.set_right(b.i[1]) lSt.ln.set_x2(b.i[1]) lSt.b := true lSt.r := false label.new(b.i[1], b.h[1] * (1 + lSt.m * .017), 'B\n\n▼', color = srBDC, style = label.style_label_down , textcolor = srBTC, size = f_getSize(srBS), tooltip = 'Bearish Breakout' + vST[1] ) R.unshift( SnR.new( box.new(b.i[1], lSt.bx.get_top(), b.i + 1, lSt.bx.get_bottom(), border_color = color(na), bgcolor = srRZC), box.new(na, na, na, na, bgcolor = color(na), border_color = color(na)), line.new(b.i[1], lSt.bx.get_top(), b.i + 1, lSt.bx.get_top(), color = srRLC, width = srMR <= .5 ? 2 : 3), false, false, false, false, lSt.m)) //S.remove(1) if srBS != 'None' alert('Bearish breakout detected\n' + syminfo.ticker + ' price (' + str.tostring(b.c, format.mintick) + '), timeframe ' + timeframe.period) else if lRt.b and b.o[1] > lSt.bx.get_bottom() and b.l[1] < lSt.bx.get_top() and b.c[1] > lSt.bx.get_top() and not lSt.r and b.i[1] != lSt.bx.get_left() //and lSt.bx.get_top() != lS.bx.get_top() //DGT
label.new(b.i[1], b.l[1] * (1 – lSt.m * .017), ‘R’, color = srRUC, style = label.style_label_up , textcolor = srRTC, size = f_getSize(srRS), tooltip = ‘Re-test of Support Zone’ + vST[1] )
lSt.r := true
lSt.bx.set_right(b.i)
lSt.ln.set_x2(b.i)if srRS != ‘None’
alert(‘Re-test of support zone detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period)else if b.l[1] < lSt.bx.get_top() and b.c[1] > lSt.bx.get_bottom() and b.c > lSt.bx.get_bottom() and not lSt.t and not lSt.b and not lRt.b and b.i[1] != lSt.bx.get_left()
label.new(b.i[1], b.l[1] * (1 – lSt.m * .017), ‘T’, color = srTUC, style = label.style_label_up , textcolor = srTTC, size = f_getSize(srTS), tooltip = ‘Test of Support Zone’ + vST[1] )
lSt.t := true
lSt.bx.set_right(b.i)
lSt.ln.set_x2(b.i)if srTS != ‘None’
alert(‘Test of support zone detected\n’ + syminfo.ticker + ‘ price (‘ + str.tostring(b.c, format.mintick) + ‘), timeframe ‘ + timeframe.period, alert.freq_once_per_bar_close)else if b.l < lSt.bx.get_top() * (1 + lSt.m * .17) and not lSt.b if b.l < lSt.bx.get_top() lSt.bx.set_right(b.i) lSt.ln.set_x2(b.i) if mnSH if b.l < lSt.bx.get_bottom() and b.c >= lSt.bx.get_bottom() * (1 – lSt.m * .17 * mnMR) and not lSt.l and b.i == lSt.bx.get_right()
if lSt.lq.get_right() + srLN > b.i
lSt.lq.set_right(b.i + 1)
lSt.lq.set_bottom(math.max(math.min(b.l, lSt.lq.get_bottom()), lSt.bx.get_bottom() * (1 – lSt.m * .17 * mnMR)))
else
lSt.lq.set_lefttop(b.i[1], lSt.bx.get_bottom())
lSt.lq.set_rightbottom(b.i + 1, math.max(b.l, lSt.bx.get_bottom() * (1 – lSt.m * .17 * mnMR)))
lSt.lq.set_bgcolor(mnSZC)lSt.l := true
else if b.l < lSt.bx.get_bottom() and b.c >= lSt.bx.get_bottom() * (1 – lSt.m * .17 * mnMR) and lSt.l and b.i == lSt.bx.get_right()
lSt.lq.set_right(b.i + 1)
lSt.lq.set_bottom(math.max(math.min(b.l, lSt.lq.get_bottom()), lSt.bx.get_bottom() * (1 – lSt.m * .17 * mnMR)))
else if lSt.l and (b.c <= lSt.bx.get_bottom() * (1 - lS.m * .17 * mnMR) or b.c > lSt.bx.get_top())
lSt.l := false//—————————————————————————–}
09/19/2023 at 8:37 AM #221254J’aimerai pouvoir aider, mais cet indicateur utilise des fonctions() et il me serait quasi impossible de le recoder sans cela (ProBuilder ne le propose pas encore, mais ça va arriver).
C’est parfois possible d’éviter les fonctions, mais ici elles sont très utiles pour tester des niveaux, sans devoir faire des boucles imbriquées, bref..
Sinon ce codeur utilise très souvent les pivots (fractals) pour détecter les points de convergences de marché et créer des zones de supports / resistances, c’est un peu ce que j’ai fait (sans détection de breakout) ici: https://www.prorealcode.com/topic/array-variables-availability-in-prorealtime/#post-118817
10/21/2023 at 2:11 AM #222712 -
AuthorPosts
Find exclusive trading pro-tools on