0% found this document useful (0 votes)
13 views9 pages

CBK 3

Download as txt, pdf, or txt
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 9

// This source code is subject to the terms of the Mozilla Public License 2.

0 at
https://mozilla.org/MPL/2.0/
// © Edwardyps

//@version=5

indicator("٢ ‫"القط األسود الرقمي‬, overlay=true)

// MA10,200 EMA 10.. Configurable en longitud

Ind1 = input(true, title='⚡ DISPLAY INDICATORS 1 ⚡ ')

EMA10 = input(10)
SMA1 = input(10)
SMA2 = input(200)
ema = ta.ema(close, EMA10)
sma1 = ta.sma(close, SMA1)
sma2 = ta.sma(close, SMA2)

//DEMA configurable en longitud...

DEMA1 = input.int(5, minval=1)


src2 = input(close, title="Source")
e1 = ta.ema(src2, DEMA1)
e2 = ta.ema(e1, DEMA1)
dema = 2 * e1 - e2

///PRICE BELOW AND ABOVE AT 1m,3m,5m,15m, 30m, 1h and Daily

Ind2 = input.bool(true, title='On/Off All Indicators', group='⚡ DISPLAY INDICATORS


⚡ ')

Ind3 = input.bool(true, title='Display MA Table', group='⚡ MOVING AVG ⚡ ')

MA1_3m = input.bool(false, title='👉 Display 1m-3m MA', group='⚡ MOVING AVG ⚡ ')
MA5m = input.bool(false, title='👉 Display 5m MA', group='⚡ MOVING AVG ⚡ ')
MA15m = input.bool(false, title='👉 Display 15m MA', group='⚡ MOVING AVG ⚡ ')
MA30m = input.bool(false, title='👉 Display 30m MA', group='⚡ MOVING AVG ⚡ ')
MA1h = input.bool(false, title='👉 Display 60m MA', group='⚡ MOVING AVG ⚡ ')
MA1d = input.bool(false, title='👉 Display 1 Day MA', group='⚡ MOVING AVG ⚡ ')
MA1w = input.bool(false, title='👉 Display 1 Week MA', group='⚡ MOVING AVG ⚡ ')
MA1m = input.bool(false, title='👉 Display 1 Month MA', group='⚡ MOVING AVG ⚡ ')

MAtype = input.string(title='MA Type', defval='SMA', options=['SMA', 'EMA', 'WMA'],


group='INDICATOR INPUT 🔨')

MAv = input.int(title='Moving Avg Period', minval=1, maxval=300, defval=200,


group='INDICATOR INPUT 🔨')

dash_loc = input.string("Top Right","Dashboard Location" ,options=["Top


Right","Bottom Right","Top Left","Middle Left", "Bottom Left", "Middle
Right","Bottom Center"] ,group='Dashboard Style Settings 📜')
text_size = input.string('Normal',"Dashboard
Size" ,options=["Tiny","Small","Normal","Large"] ,group='Dashboard Style Settings
📜')
txt_col = input.color(color.black, 'Text/Frame Color', group='Dashboard Style
Settings 📜')
cell_transp = input.int(50, 'Cell Transparency', minval=0, maxval=100,
group='Dashboard Style Settings 📜')
var table_position = dash_loc == 'Top Left' ? position.top_left : dash_loc ==
'Bottom Left' ? position.bottom_left : dash_loc == 'Middle Left' ?
position.middle_left : dash_loc == 'Middle Right' ? position.middle_right :
dash_loc == 'Bottom Center' ? position.bottom_center : dash_loc == 'Top Right' ?
position.top_right : position.bottom_right
var table_text_size = text_size == 'Tiny' ? size.tiny : text_size == 'Small' ?
size.small : text_size == 'Normal' ? size.normal : size.large
var t = table.new(table_position, 2, 15, frame_color=txt_col, frame_width=1,
border_color=txt_col, border_width=1)
BorderThickness = 1
TableWidth = 0
FirstRowFirstColumnColor = color.new(color.orange, 0)

ma_function(close, MAv) =>


if MAtype == 'SMA'
ta.sma(close, MAv)
else
if MAtype == 'EMA'
ta.ema(close, MAv)
else
if MAtype == 'WMA'
ta.wma(close, MAv)
else
ta.sma(close, MAv)

MAvlen = ma_function(close, MAv)

//Different Time Frame Values


plot1mma = request.security(syminfo.tickerid, '1', MAvlen)
plot3mma = request.security(syminfo.tickerid, '3', MAvlen)
plot5mma = request.security(syminfo.tickerid, '5', MAvlen)
plot15mma = request.security(syminfo.tickerid, '15', MAvlen)
plot30mma = request.security(syminfo.tickerid, '30', MAvlen)
plot1hma = request.security(syminfo.tickerid, '60', MAvlen)
plot1dma = request.security(syminfo.tickerid, 'D', MAvlen)
plot1wma = request.security(syminfo.tickerid, 'W', MAvlen)
plot1mmma = request.security(syminfo.tickerid, 'M', MAvlen)

// Plot the SMAs


plot(Ind2 and MA1_3m ? plot1mma : na, title='MA 1m', linewidth=1, color=color.gray)
plot(Ind2 and MA1_3m ? plot3mma : na, title='MA 3m', linewidth=1,
color=color.orange)
plot(Ind2 and MA5m ? plot5mma : na, title='MA 5m', linewidth=2, color=color.blue)
plot(Ind2 and MA15m ? plot15mma : na, title='MA 15m', linewidth=3,
color=color.fuchsia)
plot(Ind2 and MA30m ? plot30mma : na, title='MA 30m', linewidth=1,
color=color.teal)
plot(Ind2 and MA1h ? plot1hma : na, title='MA 1h', linewidth=3, color=color.maroon)
plot(Ind2 and MA1d ? plot1dma : na, title='MA D', linewidth=4, color=color.purple)
plot(Ind2 and MA1w ? plot1wma : na, title='MA W', linewidth=5, color=color.black)
plot(Ind2 and MA1m ? plot1mmma : na, title='MA M', linewidth=6, color=color.red)

// Moving Average Vs Price Strategy


pr_1mma = plot1mma < close ? 'MA ‫ السعر فوق خط‬m 1' : 'Price Below 1m MA'
pr_1mmacolor = plot1mma < close ? #00E81F : #E80800
pr_3mma = plot3mma < close ? ' MA ‫ السعر فوق خط‬m 3' : 'Price Below 3m MA'
pr_3mmacolor = plot3mma < close ? #00E81F : #E80800
pr_5mma = plot5mma < close ? 'MA ‫ السعر فوق خط‬min 5' : 'Price Below 5m MA'
pr_5mmacolor = plot5mma < close ? #00E81F : #E80800
pr_15mma = plot15mma < close ? 'MA ‫ السعر فوق خط‬min 15' : 'Price Below 15m MA'
pr_15mmacolor = plot15mma < close ? #00E81F : #E80800
pr_30mma = plot30mma < close ? 'MA ‫ السعر فوق خط‬min 30' : 'Price Below 30m MA'
pr_30mmacolor = plot30mma < close ? #00E81F : #E80800
pr_1hma = plot1hma < close ? 'MA ‫ السعر فوق خط‬Hr 1' : 'Price Below 1Hr MA'
pr_1hmacolor = plot1hma < close ? #00E81F : #E80800
pr_1dma = plot1dma < close ? 'MA ‫ ' اليومي السعر فوق خط‬: 'Price Below Daily MA'
pr_1dmacolor = plot1dma < close ? #00E81F : #E80800
pr_1wma = plot1wma < close ? ' MA ‫ 'األسبوعي السعر فوق خط‬: 'Price Below Weekly MA'
pr_1wmacolor = plot1wma < close ? #00E81F : #E80800
pr_1mmma = plot1mmma < close ? 'MA ‫ 'الشهري السعر فوق خط‬: 'Price Below Monthly MA'
pr_1mmmacolor = plot1mmma < close ? #00E81F : #E80800

if barstate.islast and Ind2 and Ind3

table.cell(t, 0, 0, MAtype + ' - ' + str.tostring(MAv), bgcolor=#C4C7C3,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 0, 'Price At', bgcolor=#C4C7C3, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 1, '1m ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 1, pr_1mma, bgcolor=pr_1mmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 2, '3m ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 2, pr_3mma, bgcolor=pr_3mmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 3, '5m ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 3, pr_5mma, bgcolor=pr_5mmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 4, '15m ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 4, pr_15mma, bgcolor=pr_15mmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 5, '30m ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 5, pr_30mma, bgcolor=pr_30mmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 6, '1Hr ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 6, pr_1hma, bgcolor=pr_1hmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 7, 'Daily ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 7, pr_1dma, bgcolor=pr_1dmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 8, 'Weekly ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 8, pr_1wma, bgcolor=pr_1wmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

table.cell(t, 0, 9, 'Monthly ' + MAtype, bgcolor=FirstRowFirstColumnColor,


text_size=table_text_size, text_color=#000000, width=TableWidth)
table.cell(t, 1, 9, pr_1mmma, bgcolor=pr_1mmmacolor, text_size=table_text_size,
text_color=#000000, width=TableWidth)

//gghhgghhgghg

length = input.int(14)
k = input.float(1.,'Slope',minval=0,step=.1)
method = input.string('Atr','Slope Calculation Method',
options=['Atr','Stdev','Linreg'])
show = input(true,'Show Only Confirmed Breakouts')
//----
upper = 0.,lower = 0.
slope_ph = 0.,slope_pl = 0.
src = close
n = bar_index
//----
ph = ta.pivothigh(length,length)
pl = ta.pivotlow(length,length)
slope = switch method
'Atr' => ta.atr(length)/length*k
'Stdev' => ta.stdev(src,length)/length*k
'Linreg' => math.abs(ta.sma(src*bar_index,length)-
ta.sma(src,length)*ta.sma(bar_index,length))/ta.variance(n,length)/2*k

slope_ph := ph ? slope : slope_ph[1]


slope_pl := pl ? slope : slope_pl[1]

upper := ph ? ph : upper[1] - slope_ph


lower := pl ? pl : lower[1] + slope_pl
//----
single_upper = 0
single_lower = 0
single_upper := src[length] > upper ? 0 : ph ? 1 : single_upper[1]
single_lower := src[length] < lower ? 0 : pl ? 1 : single_lower[1]
upper_breakout = single_upper[1] and src[length] > upper and (show ? src >
src[length] : 1)
lower_breakout = single_lower[1] and src[length] < lower and (show ? src <
src[length] : 1)
plotshape(upper_breakout ? low[length] : na,"Upper
Break",shape.labelup,location.absolute,#26a69a,-length,text="
‫"دخول‬,textcolor=color.white,size=size.small)
plotshape(lower_breakout ? high[length] : na,"Lower
Break",shape.labeldown,location.absolute,#ef5350,-length,text="
‫"خروج‬,textcolor=color.white,size=size.small)
//----
var line up_l = na
var line dn_l = na
var label recent_up_break = na
var label recent_dn_break = na

if ph[1]
line.delete(up_l[1])
label.delete(recent_up_break[1])

up_l := line.new(n-length-1,ph[1],n-length,upper,color=#26a69a,
extend=extend.right,style=line.style_dashed)
if pl[1]
line.delete(dn_l[1])
label.delete(recent_dn_break[1])

dn_l := line.new(n-length-1,pl[1],n-length,lower,color=#ef5350,
extend=extend.right,style=line.style_dashed)

if ta.crossover(src,upper-slope_ph*length)
label.delete(recent_up_break[1])
recent_up_break := label.new(n,low,'‫'دخول‬,color=#26a69a,
textcolor=color.white,style=label.style_label_up,size=size.small)

if ta.crossunder(src,lower+slope_pl*length)
label.delete(recent_dn_break[1])
recent_dn_break := label.new(n,high,'‫'خروج‬,color=#ef5350,
textcolor=color.white,style=label.style_label_down,size=size.small)

//----
plot(upper,'Upper',color = ph ? na : #26a69a,offset=-length)
plot(lower,'Lower',color = pl ? na : #ef5350,offset=-length)

alertcondition(ta.crossover(src,upper-slope_ph*length),'Upper Breakout','Price
broke upper trendline')
alertcondition(ta.crossunder(src,lower+slope_pl*length),'Lower Breakout','Price
broke lower trendline')

////////////////

//PIVOT HIGH/LOW
left_bars = input.int(title = "Left Bars", defval = 25, group = "Pivot Settings",
tooltip = "Amount of consecutive closing prices to the left of the point that must
be above/below the point for a valid zone | DOES NOT AFFECT DELAY OF ZONE")
right_bars = input.int(title = "Right Bars", defval = 25, group = "Pivot Settings",
tooltip = "Amount of consecutive closing prices to the right of the point that must
be above/below the point for a valid zone | THE AMOUNT OF BARS IT TAKES FOR THE
ZONE TO APPEAR OFF OF THE POINT IS DEPENDENT ON THIS SETTING. (i.e. if the right
bars is set to 5, it will take 5 candles into the future before it will print in
real-time)")

pivot_high = fixnan(ta.pivothigh(high, left_bars, right_bars))


pivot_low = fixnan(ta.pivotlow(low, left_bars, right_bars))

pivot_high_change = pivot_high != pivot_high[1] and barstate.isconfirmed


pivot_low_change = pivot_low != pivot_low[1] and barstate.isconfirmed

//CUSTOM SOURCES/CONDITIONS
use_custom_source1 = input.bool(title = "Enable Custom Source #1", defval = true,
group = "Custom Indicator Filter", tooltip = "Check the box to enable this filter.
If the box is unchecked, the filter will not apply and the indicator will calculate
based only on the pivot points")
custom_source1 = input.source(title = "Custom Indicator Source #1", defval = ohlc4,
group = "Custom Indicator Filter", tooltip = "You can select one of these built-in
sources, or you can put any 1 indicator of your choice onto the chart alongside
this indicator and will have the ability to select one of the external indicators
values/outputs as the source, therefore allowing you to create your own custom
filter")
binary_long1 = input.string(title = "Value Must Be (Above/Below/Equal) For
Support", defval = "Above", options = ["Above", "Below", "Equal"], group = "Custom
Indicator Filter", tooltip = "Choose if the Custom Indicator Value above must be
above, below, or equal to the required value below for a 'Support Zone'")
required_long1 = input.float(title = "Value Requirement For Support", defval = 100,
group = "Custom Indicator Filter", tooltip = "This is the value that the Custom
Source above must be above or below for a zone to be valid for the creation of a
'Support Zone'")
use_close_for_required_long = input.bool(title = "Use Closing Price For Requirement
For Support", defval = false, group = "Custom Indicator Filter", tooltip = "This
will override the 'Value Requirement For Support' input in the above setting,
allowing you to use indicators like 'Moving Average' for example. You can attach
the 'Moving Average' indicator onto the indicator rather than something like an rsi
and make a filter that requires the closing price to be above/below the 'Moving
Average' for the zone")
binary_short1 = input.string(title = "Value Must Be (Above/Below/Equal) For
Resistance", defval = "Below", options = ["Above", "Below", "Equal"], group =
"Custom Indicator Filter", tooltip = "Choose if the Custom Indicator Value above
must be above, below, or equal to the required value below for a 'Resistance
Zone'")
required_short1 = input.float(title = "Value Requirement For Resistance", defval =
100, group = "Custom Indicator Filter", tooltip = "This is the value that the
Custom Source above must be above or below for a zone to be valid for the creation
of a 'Resistance Zone'")
use_close_for_required_short = input.bool(title = "Use Closing Price For
Requirement For Resistance", defval = false, group = "Custom Indicator Filter",
tooltip = "This will override the 'Value Requirement For Resistance' input in the
above setting, allowing you to use indicators like 'Moving Average' for example.
You can attach the 'Moving Average' indicator onto the indicator rather than
something like an rsi and make a filter that requires the closing price to be
above/below the 'Moving Average' for the zone")

final_required_long1 = use_close_for_required_long ? close[right_bars] :


required_long1[right_bars]
final_required_short1 = use_close_for_required_short ? close[right_bars] :
required_short1[right_bars]

custom1_long_is_true = use_custom_source1 ? (binary_long1 == "Above" ?


custom_source1[right_bars] > final_required_long1 : binary_long1 == "Below" ?
custom_source1[right_bars] < final_required_long1 : custom_source1[right_bars] ==
final_required_long1) : true
custom1_short_is_true = use_custom_source1 ? (binary_short1 == "Above" ?
custom_source1[right_bars] > final_required_short1 : binary_short1 == "Below" ?
custom_source1[right_bars] < final_required_short1 : custom_source1[right_bars] ==
final_required_short1) : true
//COLOR SETTINGS
support_line_color = input.color(title = "‫"لون خطي حدود منطقة الدعم‬, defval =
color.green, group = "‫)"اعدادات الوان مؤشرالعرض والطلب‬
support_linefill_color = input.color(title = "‫"لون خلفية منطقة الدعم‬, defval =
color.new(color.green, 50), group = "Color Settings")

resistance_line_color = input.color(title = "‫"لون خطي حدود منطقة المقاومة‬, defval =


color.red)
resistance_linefill_color = input.color(title = "‫"لون خلفية منطقة المقاومة‬, defval =
color.new(color.red, 50), group = "Color Settings")

change_colors_based_on_price = input.bool(title = "‫"تغير األلوان حسب السعر‬, defval = true,


group = "Color Settings", tooltip = " ‫في حالة اختراق منطقة المقاومة سيتغير لونها الى لون منطقة الدعم واذا‬
‫)"كسرت منطقة الدعم سيتحول لونها الى لون منطقة المقاومة ولعياذ بالله‬

//NEW ZONE CONDITIONS


var line support_top_line = na
var line support_bot_line = na
var linefill support_line_fill = na

var line resistance_top_line = na


var line resistance_bot_line = na
var linefill resistance_line_fill = na

new_support = pivot_low_change and custom1_long_is_true


new_resistance = pivot_high_change and custom1_short_is_true

//MAIN-OP
support_top_value = close[right_bars] < open[right_bars] ? close[right_bars] :
open[right_bars]
resistance_bot_value = close[right_bars] > open[right_bars] ? close[right_bars] :
open[right_bars]

if new_support
support_top_line := line.new(x1 = bar_index[right_bars], y1 =
support_top_value, x2 = bar_index, y2 = support_top_value, xloc = xloc.bar_index,
color = support_line_color, extend = extend.none, style = line.style_solid, width =
2)
support_bot_line := line.new(x1 = bar_index[right_bars], y1 = low[right_bars],
x2 = bar_index, y2 = low[right_bars], xloc = xloc.bar_index, color =
support_line_color, extend = extend.none, style = line.style_solid, width = 2)

support_line_fill := linefill.new(line1 = support_top_line, line2 =


support_bot_line, color = support_linefill_color)

if new_resistance
resistance_top_line := line.new(x1 = bar_index[right_bars], y1 =
resistance_bot_value, x2 = bar_index, y2 = resistance_bot_value, xloc =
xloc.bar_index, color = resistance_line_color, extend = extend.none, style =
line.style_solid, width = 2)
resistance_bot_line := line.new(x1 = bar_index[right_bars], y1 =
high[right_bars], x2 = bar_index, y2 = high[right_bars], xloc = xloc.bar_index,
color = resistance_line_color, extend = extend.none, style = line.style_solid,
width = 2)

resistance_line_fill := linefill.new(line1 = resistance_top_line, line2 =


resistance_bot_line, color = resistance_linefill_color)

if barstate.isconfirmed
line.set_x2(support_top_line, bar_index)
line.set_x2(support_bot_line, bar_index)
line.set_x2(resistance_top_line, bar_index)
line.set_x2(resistance_bot_line, bar_index)

if change_colors_based_on_price

if close > line.get_y1(support_top_line)


line.set_color(support_top_line, support_line_color)
line.set_color(support_bot_line, support_line_color)

linefill.set_color(support_line_fill, support_linefill_color)

if close < line.get_y1(support_bot_line)


line.set_color(support_top_line, resistance_line_color)
line.set_color(support_bot_line, resistance_line_color)

linefill.set_color(support_line_fill, resistance_linefill_color)

if close > line.get_y1(resistance_top_line)


line.set_color(resistance_top_line, support_line_color)
line.set_color(resistance_bot_line, support_line_color)

linefill.set_color(resistance_line_fill, support_linefill_color)

if close < line.get_y1(resistance_bot_line)


line.set_color(resistance_top_line, resistance_line_color)
line.set_color(resistance_bot_line, resistance_line_color)

linefill.set_color(resistance_line_fill, resistance_linefill_color)

//ALERT CONDITIONS
new_support_created = new_support
new_resistance_created = new_resistance

support_top_line_value = line.get_y1(support_top_line)
support_bot_line_value = line.get_y1(support_bot_line)

resistance_top_line_value = line.get_y1(resistance_top_line)
resistance_bot_line_value = line.get_y1(resistance_bot_line)

close_crosses_below_top_zone = close < support_top_line_value and close[1] >=


support_top_line_value and barstate.isconfirmed or close <
resistance_top_line_value and close[1] >= resistance_top_line_value and
barstate.isconfirmed
close_crosses_above_bot_zone = close > support_bot_line_value and close[1] <=
support_bot_line_value and barstate.isconfirmed or close >
resistance_bot_line_value and close[1] <= resistance_bot_line_value and
barstate.isconfirmed

low_crosses_below_top_zone = low < support_top_line_value and low[1] >=


support_top_line_value and barstate.isconfirmed or low < resistance_top_line_value
and low[1] >= resistance_top_line_value and barstate.isconfirmed
high_crosses_above_bot_zone = high > support_bot_line_value and high[1] <=
support_bot_line_value and barstate.isconfirmed or high > resistance_bot_line_value
and high[1] <= resistance_bot_line_value and barstate.isconfirmed

close_is_inside_zone = close < support_top_line_value and close >


support_bot_line_value and barstate.isconfirmed or close <
resistance_top_line_value and close > resistance_bot_line_value and
barstate.isconfirmed
close_is_touching_zone = close <= support_top_line_value and close >=
support_bot_line_value and barstate.isconfirmed or close <=
resistance_top_line_value and close >= resistance_bot_line_value and
barstate.isconfirmed

breakout_to_upside = close > support_top_line_value and close[1] <


support_top_line_value and barstate.isconfirmed or close >
resistance_top_line_value and close[1] < resistance_top_line_value and
barstate.isconfirmed
breakout_to_downside = close < support_bot_line_value and close[1] >
support_bot_line_value and barstate.isconfirmed or close <
resistance_bot_line_value and close[1] > resistance_bot_line_value and
barstate.isconfirmed

alertcondition(condition = new_support_created, title = "New Support Created")


alertcondition(condition = new_resistance_created, title = "New Resistance
Created")

alertcondition(condition = close_crosses_below_top_zone, title = "Close Crosses


Below Top Of Zone")
alertcondition(condition = close_crosses_above_bot_zone, title = "Close Crosses
Above Bottom Of Zone")

alertcondition(condition = low_crosses_below_top_zone, title = "Low Crosses Below


Top Of Zone")
alertcondition(condition = high_crosses_above_bot_zone, title = "High Crosses Above
Bottom Of Zone")

alertcondition(condition = close_is_inside_zone, title = "Close Is Inside Of Zone")


alertcondition(condition = close_is_touching_zone, title = "Close Is Touching Any
Part Of The Zone")

alertcondition(condition = breakout_to_upside, title = "Close Breakout To The


Upside")
alertcondition(condition = breakout_to_downside, title = "Close Breakout To The
Downside")

///////////////////////////////////

You might also like