-
kod birleştirme deneme örnekleri.....
örnek olduğu için test edilmemiştir....
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636
//@version=5
indicator('*', max_lines_count=200, overlay=true, max_bars_back=201,max_boxes_count = 200)
// input
start11 = 2
lookback11 = input(1, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp11 = 1
smoothing11 = input(1, "Smoothing")
source11 = input(close, "Source")
// global
var ix = -1
var mal = array.new_int(0)
// functions
avg(source11, len11) =>
sum = 0.0
for i = 0 to len11-1
sum += source11[i]
sum/len11
bull = close > open
wick_touch(x) =>
bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch(x) =>
bull ? (open < x and x < close) : (close < x and x < open)
touches(t) =>
touches = 0
for i = 0 to lookback11-1
touches += t[i] ? 1 : 0
touches
// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start11
cma = avg(source11, prev_mal)
cma_p1 = avg(source11, prev_mal+1)
cma_m1 = avg(source11, prev_mal-1)
d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))
d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))
any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp11 : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp11 : na))
uptrend = cma > cma[1]
downtrend = cma < cma[1]
against_trend = (uptrend and close < cma) or (downtrend and close > cma)
new_mal = no_wick_touch or against_trend ? prev_mal-resp11 : (any_body_touch ? prev_mal+resp11 : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal
array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))
// graph
scma = ta.ema(cma, smoothing11)
plot(scma, "MA1", color=color.rgb(255, 235, 59, 100))
///////////////////////////////
// input
start1122 = 2
lookback1122 = input(4, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp1122 = 1
smoothing1122 = input(1, "Smoothing")
source1122 = input(close, "Source")
// global
var ix11 = -1
var mal11 = array.new_int(0)
// functions
avg11(source1122, len1122) =>
sum = 0.0
for i = 0 to len1122-1
sum += source1122[i]
sum/len1122
bull11 = close > open
wick_touch11(x) =>
bull11 ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch11(x) =>
bull11 ? (open < x and x < close) : (close < x and x < open)
touches11(t) =>
touches = 0
for i = 0 to lookback1122-1
touches += t[i] ? 1 : 0
touches
// local
ix11 := ix11+1
prev_mal11 = ix >= 1 ? array.get(mal11, ix11-1) : start11
cma11 = avg11(source1122, prev_mal11)
cma_p111 = avg11(source1122, prev_mal11+1)
cma_m111 = avg11(source1122, prev_mal11-1)
d11 = touches11(wick_touch(cma11))
d_p111 = touches11(wick_touch(cma_p111))
d_m111 = touches11(wick_touch(cma_m111))
d_b11 = touches(body_touch(cma11))
d_p1_b11 = touches(body_touch(cma_p111))
d_m1_b11 = touches(body_touch(cma_m111))
any_body_touch11 = d_b11 > 0 or d_p1_b11 > 0 or d_m1_b11 > 0
no_wick_touch11 = d <= 0 and d_p111 <= 0 and d_m111 <= 0
wick_maximized11 = d >= d_p111 and d >= d_m111 ? prev_mal11 : (d_p111 >= d and d_p111 >= d_m111 ? prev_mal11+resp1122 : (d_m111 >= d and d_m111 >= d_p111 ? prev_mal11-resp1122 : na))
uptrend11 = cma11 > cma11[1]
downtrend11 = cma11 < cma11[1]
against_trend11 = (uptrend11 and close < cma11) or (downtrend11 and close > cma11)
new_mal11 = no_wick_touch11 or against_trend11 ? prev_mal11-resp1122 : (any_body_touch ? prev_mal11+resp1122 : wick_maximized11)
next_mal11 = na(new_mal11) ? prev_mal11 : new_mal11
array.push(mal11, next_mal11 < 2 ? 2 : (next_mal11 > 200 ? 200 : next_mal11))
// graph
scma11 = ta.ema(cma11, smoothing11)
plot(scma11, "MA2", color=color.rgb(33, 149, 243, 100))
crossUp = ta.crossover(scma,scma11)
crossDn = ta.crossunder(scma,scma11)
plotshape(crossUp,
title='Cross Long',
style=shape.labelup,
location=location.belowbar,
text='A',
textcolor=color.new(color.white, 0),
color=color.new(color.teal, 0),
size=size.auto,
editable=true)
plotshape(crossDn,
title='Cross Short',
style=shape.labeldown,
location=location.abovebar,
text='S',
textcolor=color.new(color.white, 0),
color=color.new(color.maroon, 0),
size=size.auto,
editable=true)
//Alerts
alertcondition(crossUp != 0, 'Long', 'Long')
alertcondition(crossDn != 0, 'Short', 'Short')
//////////////////////////////////////////////////////////
// © GASANOV_KIRILL
// v 2.0.1
// added labels
// removed std 257v
// setted up fib 274v
//@version=5
// INPUT
show_difference_label = input.bool(title ="Show difference", defval = true)
// alma
alma_source = close
alma_period = input.int(title='Window Size', defval=200, group='Alma')
alma_offset = input.float(title='Offset', defval=0.80, group='Alma')
alma_sigma = input.float(title='Sigma', defval=5.5, group='Alma')
border_first = input.float(title='First border offset', defval=4, group='Borders')
border_second = input.float(title='Second border offset (%)', defval=0.7, group='Borders')
border_third = input.float(title='Third border offset (%)', defval=1.4, group='Borders')
// keltner
kc_period = input.int(title='Keltner period', defval=100, group='Keltner')
kc_mult = input.float(title='Keltner mult.', defval=4, group='Keltner')
kc_atr_period = input.int(title='Keltner atr period', defval=50, group='Keltner')
kc_ma_period = input.int(title='Keltner ma period', defval=70, group='Keltner')
// fibonacci
fib_ma_period = input.int(title='Fibonacci ma period', defval=25, group='Fibonacci')
fib_atr_period = input.int(title='Fibonacci atr period', defval=25, group='Fibonacci')
fib_ratio_mult = input.float(title='Fibonacci ration', defval=3.5, group='Fibonacci')
fib_smooth_period = input.int(title='Fibonacci smooth period', defval=100, group='Fibonacci')
border_kc_lerp = input.float(title='Border kc lerp', defval=0.95, minval=0, maxval=1, group='Borders and lerp')
border_fib_lerp = input.float(title='Border fib lerp', defval=0.45, minval=0, maxval=1, group='Borders and lerp')
//PROPERTIES -----------------------------------------------------
get_kc_lerp() =>
border_kc_lerp
// FUNCTIONS -------------------------------------------------------------------
// ALMA MA
alma_template(source, length) =>
ta.alma(source, length, alma_offset, alma_sigma)
// Hull MA
hull_ma_build(source, length) =>
hullma = ta.wma(2 * ta.wma(source, length / 2) - ta.wma(source, length), math.floor(math.sqrt(length)))
hullma
// number to percent
do_percent(percent) =>
percent / 100
// percent difference from base value to other value
do_percent_diff(base_value, other_value) =>
((other_value*100)/base_value)-100
// create new coord for line based on percentage
do_offset_line(main_line, percent) =>
main_line * (1 + do_percent(percent))
// interpolates values
do_lerp(value_a, value_b, t) =>
(1 - t) * value_a + t * value_b
// normalize value between range min-max
do_normalize(min, max, value) =>
(value - min) / (max - min)
do_normalize_negative(min, max, value) =>
2 * ((value - min) / (max - min)) - 1
do_print(_text) =>
// Create label on the first bar.
var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color.white, label.style_label_up, color.green, size.large, text.align_left)
// On next bars, update the label's x and y position, and the text it displays.
label.set_xy(_label, bar_index, ta.highest(10)[1])
label.set_text(_label, _text)
do_label(value_label, value_text, value_barindex, value_price) =>
label.set_xy(value_label, value_barindex, value_price)
label.set_text(value_label, value_text)
// MAIN ------------------------------------------------
// Fibonacci
fib_ma = ta.ema(close, fib_ma_period)
fib_tr1 = math.max(high - low, math.abs(high - close[1]))
fib_tr = math.max(fib_tr1, math.abs(low - close[1]))
fib_atr = ta.sma(fib_tr, fib_atr_period)
// green or red
//fib_prev_candle_state = ta.ema(close[1] > open[1] ? 1 : 0, 100)
// if trend not match border type (up-top, down-bottom) we minimise affect
//fib_ratio = fib_atr * fib_ratio_mult
//fib_top = fib_ma + (fib_ratio * fib_prev_candle_state)
//fib_bottom = fib_ma - (fib_ratio *(1-fib_prev_candle_state))
fib_ratio = fib_atr * fib_ratio_mult
fib_top = fib_ma + (fib_ratio)
fib_bottom = fib_ma - (fib_ratio)
fib_top_smoothed = hull_ma_build(fib_top, fib_smooth_period)
fib_bottom_smoothed = hull_ma_build(fib_bottom, fib_smooth_period)
// Keltner channel
kc_ma = ta.ema(alma_source, kc_period)
kc_range_ma = ta.atr(kc_atr_period)
kc_top = kc_ma + kc_range_ma * kc_mult
kc_bottom = kc_ma - kc_range_ma * kc_mult
// Ma based on kc_top/bottom and hma
kc_top_ma = hull_ma_build(kc_top, kc_ma_period)
kc_bottom_ma = hull_ma_build(kc_bottom, kc_ma_period)
// Main trend line
alma_main = alma_template(alma_source, alma_period)
// Calculate alma borders (top,bottom)
alma_top_raw = do_offset_line(alma_main, border_first)
alma_bottom_raw = do_offset_line(alma_main, -border_first)
// Lerp borders with kc
kc_lerp = get_kc_lerp()
alma_top = alma_top_raw
alma_bottom = alma_bottom_raw
// kc lerp
alma_top := do_lerp(alma_top, kc_top_ma, kc_lerp)
alma_bottom := do_lerp(alma_bottom, kc_bottom_ma, kc_lerp)
// Second pass ------------------------------------------------------------------
// price calculations
// normalize price between borders in range [-infinity[-1,+1]+infintiy]
normalized_price_top = do_normalize(alma_main, alma_top, close)
normalized_price_bottom = 1 - do_normalize(alma_bottom, alma_main, close)
normalized_price_top := normalized_price_top < 1 ? 0 : normalized_price_top
normalized_price_bottom := normalized_price_bottom < 1 ? 0 : normalized_price_bottom
// fibonacci lerp values
fib_lerp_top = 0.0
fib_lerp_bottom = 0.0
fib_lerp_top := normalized_price_top * border_fib_lerp
fib_lerp_bottom := normalized_price_bottom * border_fib_lerp
// apply fibonacci to border
alma_top := do_lerp(alma_top, fib_top_smoothed, border_fib_lerp)
alma_bottom := do_lerp(alma_bottom, fib_bottom_smoothed, border_fib_lerp)
// construct additional border layers
alma_top_2 = do_offset_line(alma_top, border_second)
alma_top_3 = do_offset_line(alma_top, border_third)
alma_bottom_2 = do_offset_line(alma_bottom, -border_second)
alma_bottom_3 = do_offset_line(alma_bottom, -border_third)
//plot(alma_top_2)
//plot(alma_bottom_2)
//plot(alma_top_3)
//plot(alma_bottom_3)
// THIRD PASS ------------------------------------------------
// Percent from main line.
normalized_price_top_for_diff = do_normalize(alma_bottom, alma_top, close)
// clamp normalized value
normalized_price_top_for_diff := ta.ema(normalized_price_top_for_diff < 0 ? 0: normalized_price_top_for_diff > 1 ? 1: normalized_price_top_for_diff, kc_period)
normalized_price_bottom_for_diff = 1 - normalized_price_top_for_diff
difference_percent_top = do_percent_diff(alma_main, alma_top_2)
difference_percent_bottom = do_percent_diff(alma_main, alma_bottom_2)
difference_percent_overall = difference_percent_top - difference_percent_bottom
mult_diff_overall = difference_percent_overall/10 < 1 ? 1 : difference_percent_overall/10
additional_percent_offset_top = normalized_price_top_for_diff * ((difference_percent_top/10) * mult_diff_overall)
additional_percent_offset_bottom = normalized_price_bottom_for_diff * ((difference_percent_bottom/10)* mult_diff_overall)
border_second_offset_top = border_second + additional_percent_offset_top/2
border_third_offset_top = border_third + additional_percent_offset_top
border_second_offset_bottom = -border_second + additional_percent_offset_bottom/2
border_third_offset_bottom = -border_third + additional_percent_offset_bottom
// calculate new alma borders
alma_top := ta.ema(alma_top,9)
alma_top_2 := do_offset_line(alma_top, border_second_offset_top)
alma_top_3 := do_offset_line(alma_top, border_third_offset_top)
alma_bottom_2 := do_offset_line(alma_bottom, border_second_offset_bottom)
alma_bottom_3 := do_offset_line(alma_bottom, border_third_offset_bottom)
// PLOT -------------------------------------------
//main lines
//plot(alma_main, title='Trend line', color=color.new(#7b1fa2, 0), style=plot.style_circles)
//borders
//plot(alma_top, title='Border top 1', color=color.new(#fff176, 50), linewidth=4)
//plot(alma_top_2, title='Border top 2', color=color.new(#e57373, 0))
//plot(alma_top_3, title='Border top 3', color=color.new(#ef5350, 0), linewidth=4)
//plot(alma_bottom, title='Border bottom 1', color=color.new(#009688, 50), linewidth=4)
//plot(alma_bottom_2, title='Border bottom 2', color=color.new(#81c784, 0))
//plot(alma_bottom_3, title='Border bottom 3', color=color.new(#4caf50, 0), linewidth=4)
// keltner
//plot(kc_top, color=color.new(color.maroon, 0), title='KC+', display=display.none)
//plot(kc_bottom, color=color.new(color.orange, 0), title='KC-', display=display.none)
//plot(kc_top_ma, color=color.new(color.maroon, 0), title='KC+ HMA', style=plot.style_circles, display=display.none)
//plot(kc_bottom_ma, color=color.new(color.orange, 0), title='KC- HMA', style=plot.style_circles, display=display.none)
// fibonacci
//plot(fib_top, color=color.new(color.red, 0), title='Fib+', display=display.none)
//plot(fib_bottom, color=color.new(color.green, 0), title='Fib-', display=display.none)
//plot(fib_top_smoothed, color=color.new(color.red, 0), title='Fib+ Smooth', style=plot.style_circles, display=display.none)
//plot(fib_bottom_smoothed, color=color.new(color.green, 0), title='Fib- Smooth', style=plot.style_circles, display=display.none)
// LABELS -----------------------------------------------------
var drawing_color_top = color.new(#e57373, 0)
var drawing_color_bottom = color.new(#81c784, 0)
var drawing_color_main = color.new(#ab47bc, 0)
var drawing_color_overall = color.new(#ec407a,0)
// Difference label
difference_bar_index = bar_index + 5
var label_difference_top = label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_top, textcolor = color.black, style = label.style_label_down)
var label_difference_bottom = label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_bottom, textcolor = color.black, style = label.style_label_up)
var label_difference_overall =label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_overall, textcolor = color.black, style = label.style_label_down)
// helper arrow lines
line_difference_top = line.new(x1 = bar_index, y1 = alma_top_2, x2 =difference_bar_index, y2 = alma_top_2, style = line.style_arrow_left,color = drawing_color_top)
line_difference_bottom = line.new(x1 = bar_index, y1 = alma_bottom_2,x2 =difference_bar_index, y2 = alma_bottom_2, style = line.style_arrow_left,color = drawing_color_bottom)
line_difference_main_****t = line.new(x1 = difference_bar_index, y1 = alma_bottom_2, x2 =difference_bar_index, y2 = alma_top_2, style = line.style_arrow_both,color=drawing_color_overall)
line_difference_main_overall = line.new(x1 = difference_bar_index, y1 = alma_main, x2 =difference_bar_index+5, y2 = alma_main, style = line.style_arrow_left,color=drawing_color_overall)
line.delete(line_difference_top[1]) // redraw lines
line.delete(line_difference_bottom[1])
line.delete(line_difference_main_****t[1])
line.delete(line_difference_main_overall[1])
if show_difference_label
do_label(label_difference_top, "+"+ str.tostring(difference_percent_top, format.percent), difference_bar_index, alma_top_2)
do_label(label_difference_bottom, str.tostring(difference_percent_bottom, format.percent), difference_bar_index, alma_bottom_2)
do_label(label_difference_overall, str.tostring(difference_percent_overall, format.percent), difference_bar_index+5,alma_main)
else
label.delete(label_difference_top)
label.delete(label_difference_bottom)
label.delete(label_difference_overall)
line.delete(line_difference_top)
line.delete(line_difference_bottom)
line.delete(line_difference_main_****t)
line.delete(line_difference_main_overall)
// Labels
//var label_difference_top = label.new(x = bar_index, y = close,yloc = yloc.price,color = color.white, textcolor = color.black,style = label.style_label_down)
//do_label(label_difference_top, "Textik", bar_index+5, alma_top_2)
//if not show_difference_label
//label.delete(label_difference_top)
//var label_difference_bottom = label.new(x = bar_index, y = close,yloc = yloc.price,color = color.white, textcolor = color.black, style = label.style_label_up)
//do_label(label_difference_bottom, "Textik", bar_index+5, alma_bottom_2)
//if not show_difference_label
// label.delete(label_difference_bottom)
////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © starbolt
//@version=5
len = input.int(3, 'Length', step=1, minval=1)
displace = input.int(1, 'Displace', step=1, minval=0)
ma_type = input.string('SMA', 'MA Type', options=['SMA', 'EMA', 'WMA', 'ALMA', 'VWMA', 'HMA', 'LSMA', 'SMMA', 'DEMA'])
alma_offset6 = input.float(0.85, 'ALMA Offset', step=0.01, minval=0, maxval=1)
alma_sigma6 = input.float(6, 'ALMA Sigma', step=0.01)
lsma_offset = input.int(0, 'LSMA Offset', step=1)
//Hilo Activator
float hilo = na
hi = ta.sma(high, len)
lo = ta.sma(low, len)
// Exponential Moving Average (EMA)
if ma_type == 'EMA'
hi := ta.ema(high, len)
lo := ta.ema(low, len)
// Weighted Moving Average (WMA)
if ma_type == 'WMA'
hi := ta.wma(high, len)
lo := ta.wma(low, len)
// Arnaud Legoux Moving Average (ALMA)
if ma_type == 'ALMA'
hi := ta.alma(high, len, alma_offset6, alma_sigma6)
lo := ta.alma(low, len, alma_offset6, alma_sigma6)
// Hull Moving Average (HMA)
if ma_type == 'HMA'
hi := ta.wma(2 * ta.wma(high, len / 2) - ta.wma(high, len), math.round(math.sqrt(len)))
lo := ta.wma(2 * ta.wma(low, len / 2) - ta.wma(low, len), math.round(math.sqrt(len)))
// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
hi := ta.vwma(high, len)
lo := ta.vwma(low, len)
// Least Square Moving Average (LSMA)
if ma_type == 'LSMA'
hi := ta.linreg(high, len, lsma_offset)
lo := ta.linreg(low, len, lsma_offset)
// Smoothed Moving Average (SMMA)
if ma_type == 'SMMA'
hi := (hi[1] * (len - 1) + high) / len
lo := (lo[1] * (len - 1) + low) / len
// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
e1_high = ta.ema(high, len)
e1_low = ta.ema(low, len)
hi := 2 * e1_high - ta.ema(e1_high, len)
lo := 2 * e1_low - ta.ema(e1_low, len)
hilo := close > hi[displace] ? 1 : close < lo[displace] ? -1 : hilo[1]
ghla = hilo == -1 ? hi[displace] : lo[displace]
color = hilo == -1 ? color.red : color.green
//Alerts
buyCondition = hilo == 1 and hilo[1] == -1
sellCondition = hilo == -1 and hilo[1] == 1
if buyCondition
alert('Long', alert.freq_once_per_bar)
if sellCondition
alert('Short', alert.freq_once_per_bar)
//Plots
plot(ghla, color=color, style=plot.style_stepline)
/////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid
//@version=5
//Inputs
length = input.int(20, 'Upper Length', inline='length')
length2 = input.int(20, 'Lower Length', inline='length')
astart = input.int(2, 'Draw Upper Line From Pivot #', inline='pivot')
aend = input.int(0, 'To Pivot #', inline='pivot')
bstart = input.int(3, 'Draw Lower Line From Pivot #', inline='pivot2')
bend = input.int(0, 'To Pivot #', inline='pivot2')
csrc = input.bool(false, 'Use Custom Source?', inline='custom')
src = input.source(close, 'Select:', inline='custom')
color55 = input.string('Red/Green', 'Line Color:', options=['Red/Green', 'White', 'Yellow', 'Blue'], inline='custom2')
lwidth = input.string('1', 'Line Width:', options=['1', '2', '3', '4'], inline='custom2')
//Conditions
up = ta.pivothigh(csrc ? src : high, length, length)
dn = ta.pivotlow(csrc ? src : low, length2, length2)
n = bar_index
a1 = ta.valuewhen(not na(up), n, astart)
b1 = ta.valuewhen(not na(dn), n, bstart)
a2 = ta.valuewhen(not na(up), n, aend)
b2 = ta.valuewhen(not na(dn), n, bend)
//Colors
color1 = color.red
color2 = color.green
if color55 == 'White'
color1 := color.white
color2 := color.white
color2
if color55 == 'Yellow'
color1 := color.yellow
color2 := color.yellow
color2
if color55 == 'Blue'
color1 := color.blue
color2 := color.blue
color2
if color55 == 'Red/Green'
color1 := color.red
color2 := color.green
color2
//Width
width1 = 1
if lwidth == '1'
width1 := 1
width1
if lwidth == '2'
width1 := 2
width1
if lwidth == '3'
width1 := 3
width1
if lwidth == '4'
width1 := 4
width1
//Plots
line upper = line.new(n[n - a1 + length], up[n - a1], n[n - a2 + length], up[n - a2], extend=extend.right, color=color1, width=width1)
line lower = line.new(n[n - b1 + length2], dn[n - b1], n[n - b2 + length2], dn[n - b2], extend=extend.right, color=color2, width=width1)
line.delete(upper[1])
line.delete(lower[1])
///////////////////////////////
//@version=5
// INPUTS
Range = input.int(10, minval=2, title='Pivot Range')
ATRLength = input.int(10, minval=2, title='ATR Range')
ATRRange = ta.atr(ATRLength)
// PIVOTS
float PivotHigh = na
float PivotLow = na
PivotHigh := ta.pivothigh(Range, Range)
PivotLow := ta.pivotlow(Range, Range)
CountHigh = 0
CountHigh := PivotHigh[1] ? 0 : nz(CountHigh[1]) + 1
CountLow = 0
CountLow := PivotLow[1] ? 0 : nz(CountLow[1]) + 1
PivotHighPlot = 0.0
PivotHighPlot := PivotHigh[1] ? high[Range + 1] : PivotHighPlot[1]
PivotLowPlot = 0.0
PivotLowPlot := PivotLow[1] ? low[Range + 1] : PivotLowPlot[1]
// PLOTS
barcolor(hl2 + ATRRange > PivotHighPlot ? color.green : hl2 - ATRRange < PivotLowPlot ? color.red : color.yellow)
//////////////////////////////////////////////////
//@version=5
length33 = input(title='Length', defval=50)
offset33 = input(title='Offset', defval=0)
src33 = input(close, title='Source')
lsma33 = ta.linreg(src33, length33, offset33)
lsma233 = ta.linreg(lsma33, length33, offset33)
eq33 = lsma33 - lsma233
zlsma33 = lsma33 + eq33
zcolorchange33 = input(title='Change Color ?', defval=true)
zColor33 = zcolorchange33 ? zlsma33 > zlsma33[1] ? color.rgb(76, 175, 79, 100) : color.rgb(255, 82, 82, 100) : color.black
plot(zlsma33, title='50LAG', linewidth=1, color=zColor33)
//////////////////////////////////////////
//@version=5
sp = '***********'
var linefill[] a_lf = array.new <linefill> ()
cLineUp = input.color (color.new(color.lime, 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cLineDn = input.color (color.new( #FF0000 , 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillUp = input.color (color.new(color.lime, 75), '*|*', group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillDn = input.color (color.new( #FF0000 , 75), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
lookback = input.int (125 , 'x bars back' , minval=0, maxval=125)
min = math.min (close, open) // lowest point of body
max = math.max (close, open) // highest point of body
mid = math.avg (close, open) // middle point of body
ixt = input.bool (true, '3', inline='e', group='extend lines')
iExt = input.string('both', '', options=[ 'none' , 'left' , 'right' , 'both' ], inline='e', group='extend lines')
aExt1 = array.from ( 'none' , 'left' , 'right' , 'both' )
aExt2 = array.from (extend.none, extend.left, extend.right, extend.both)
xt = array.get (aExt2 , array.indexof (aExt1, iExt))
//{
// B
//
// ◊
// ◊ ◊
// ◊ ◊
// ◊ ◊
// A ◊ ◊ C
// ◊ ◊
// ◊ ◊
// ◊ ◊
// ◊
//
// D
//}
if barstate.islast
while array.size(a_lf) > 0
fill = array.pop(a_lf)
line.delete(linefill.get_line1(fill))
line.delete(linefill.get_line1(fill))
linefill.delete (fill)
//
for i = 0 to lookback
cLn = close[i] > open[i] ? cLineUp : cLineDn
cFl = close[i] > open[i] ? cFillUp : cFillDn
Ax = bar_index - (i + 1), Ay = mid[i]
Bx = bar_index - (i ), By = max[i] + (max[i] - mid[i]) * (2 / 3)
Cx = bar_index - (i - 1), Cy = Ay
Dx = Bx , Dy = min[i] - (max[i] - mid[i]) * (2 / 3)
//
array.unshift(a_lf, linefill.new(
line.new(Ax, Ay, Bx, By, color= cLn),
line.new(Dx, Dy, Cx, Cy, color= cLn), color= cFl))
array.unshift(a_lf, linefill.new(
line.new(Bx, By, Cx, Cy, color= cLn),
line.new(Ax, Ay, Dx, Dy, color= cLn), color= na ))
idx = math.min(array.size(a_lf) -1, math.min(lookback, input.int(1, '', minval=0, maxval=125, inline='e', group='extend lines'))) * 2
//
if ixt
line.set_extend(linefill.get_line1(array.get(a_lf, array.size(a_lf) - idx -1)), xt)
line.set_extend(linefill.get_line2(array.get(a_lf, array.size(a_lf) - idx -2)), xt)
barcolor(color.new(color.blue, 100))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Botnet101
//@version=5
// INPUTS
//{
_timeframe = input.string(defval='60' , title='Pivots Timeframe', options=['15', '30', '60', '240', 'D', 'W', 'M', '3M', '12M'])
colourBars = input.bool (defval=false, title='Colour Bars?' , group="Plot Settings")
showPivot = input.bool (defval=true , title='Show Pivot Points?', group="Plot Settings")
fillPlot = input.bool (defval=true , title='Fill plot?' , group="Plot Settings")
colour_bullish = input.color(defval=color.new(color.green, 70), title="Bullish", group="Colours")
colour_bearish = input.color(defval=color.new(color.red , 70), title="Bearish", group="Colours")
//}
// FUNCTIONS
//{
GetData(timeframe, data) => request.security(syminfo.tickerid, timeframe, data[1], lookahead=barmerge.lookahead_on)
GetColour (canShow, _colour) => canShow ? _colour : na
// Calculate Pivot Points
CalculatPivotPoint () =>
float dailyHigh = GetData(_timeframe, high )
float dailyLow = GetData(_timeframe, low )
float dailyClose = GetData(_timeframe, close)
(dailyHigh + dailyLow + dailyClose) / 3
//}
float pivotPoint = CalculatPivotPoint ()
color bias_colour = close > pivotPoint ? colour_bullish : colour_bearish
color cloud_colour = GetColour(fillPlot , bias_colour )
color pivotPoint_colour = GetColour(showPivot , color.new(bias_colour, 0))
color bar_colour = GetColour(colourBars, color.new(bias_colour, 0))
plot_close = plot(ohlc4 , title='Close', color=na , style=plot.style_stepline, editable=false )
plot_pivot = plot(pivotPoint, title='Pivot', color=pivotPoint_colour, style=plot.style_stepline, editable=true , linewidth=2)
fill (plot_pivot, plot_close, color=cloud_colour, editable=false)
//barcolor(bar_colour , editable=false)
//////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HoanGhetti
//@version=5
g_sr = 'Support and Resistance'
g_c = 'Conditions'
g_st = 'Styling'
t_r = 'Bar Confirmation: Generates alerts when candle closes. (1 Candle Later) \n\nHigh & Low: By default, the Break & Retest system uses the current close value to determine a condition, selecting High & Low will make the script utilize these two values instead of the close value. In return, the script won\'t repaint and will yield different results.'
t_rv = 'Whenever a potential retest is detected, the indicator knows that a retest is about to happen. In that given situation, this input grants the ability to raise the limit on how many bars are allowed to be actively checked while a potential retest event is active.\n\nExample, if you see the potential retest label, how many bars do you want that potential retest label to be active for to eventually confirm a retest? This system was implemented to prevent retest alerts from going off 10+ bars later from the potential retest point leading to inaccurate results.'
input_lookback = input.int(defval = 5, title = 'Lookback Range', minval = 1, tooltip = 'How many bars for a pivot event to occur.', group = g_sr)
input_retSince = input.int(defval = 2, title = 'Bars Since Breakout', minval = 1, tooltip = 'How many bars since breakout in order to detect a retest.', group = g_sr)
input_retValid = input.int(defval = 2, title = 'Retest Detection Limiter', minval = 1, tooltip = t_rv, group = g_sr)
input_breakout = input.bool(defval = false, title = 'Breakouts', group = g_c)
input_retest = input.bool(defval = false, title = 'Retests', group = g_c)
input_repType = input.string(defval = 'On', title = 'Repainting', options = ['On', 'Off: Candle Confirmation', 'Off: High & Low'], tooltip = t_r, group = g_c)
input_outL = input.string(defval = line.style_dotted, title = 'Outline', group = g_st, options = [line.style_dotted, line.style_dashed, line.style_solid])
input_extend = input.string(defval = extend.none, title = 'Extend', group = g_st, options = [extend.none, extend.right, extend.left, extend.both])
input_labelType = input.string(defval = 'Full', title = 'Label Type', options = ['Full', 'Simple'], group = g_st)
input_labelSize = input.string(defval = size.small, title = 'Label Size', options = [size.tiny, size.small, size.normal, size.large, size.huge], group = g_st)
input_plColor = input.color(defval = color.yellow, title = 'Support', inline = 'Color', group = g_st)
input_phColor = input.color(defval = color.yellow, title = 'Resistance', inline = 'Color', group = g_st)
input_override = input.bool(defval = false, title = 'Override Text Color ', inline = 'Override', group = g_st)
input_textColor = input.color(defval = color.white, title = '', inline = 'Override', group = g_st)
bb = input_lookback
rTon = input_repType == 'On'
rTcc = input_repType == 'Off: Candle Confirmation'
rThv = input_repType == 'Off: High & Low'
breakText = input_labelType == 'Simple' ? 'Br' : 'Break'
// Pivot Instance
pl = fixnan(ta.pivotlow(low, bb, bb))
ph = fixnan(ta.pivothigh(high, bb, bb))
// Box Height
s_yLoc = low[bb + 1] > low[bb - 1] ? low[bb - 1] : low[bb + 1]
r_yLoc = high[bb + 1] > high[bb - 1] ? high[bb + 1] : high[bb - 1]
//-----------------------------------------------------------------------------
// Functions
//-----------------------------------------------------------------------------
drawBox(condition, y1, y2, color) =>
var box drawBox = na
if condition
box.set_right(drawBox, bar_index - bb)
drawBox.set_extend(extend.none)
drawBox := box.new(bar_index - bb, y1, bar_index, y2, color, bgcolor = color.new(color, 90), border_style = input_outL, extend = input_extend)
[drawBox]
updateBox(box) =>
if barstate.isconfirmed
box.set_right(box, bar_index + 5)
breakLabel(y, color, style, textform) => label.new(bar_index, y, textform, textcolor = input_override ? input_textColor : color, style = style, color = color.new(color, 50), size = input_labelSize)
retestCondition(breakout, condition) => ta.barssince(na(breakout)) > input_retSince and condition
repaint(c1, c2, c3) => rTon ? c1 : rThv ? c2 : rTcc ? c3 : na
//-----------------------------------------------------------------------------
// Draw and Update Boxes
//-----------------------------------------------------------------------------
[sBox] = drawBox(ta.change(pl), s_yLoc, pl, input_plColor)
[rBox] = drawBox(ta.change(ph), ph, r_yLoc, input_phColor)
sTop = box.get_top(sBox), rTop = box.get_top(rBox)
sBot = box.get_bottom(sBox), rBot = box.get_bottom(rBox)
updateBox(sBox), updateBox(rBox)
//-----------------------------------------------------------------------------
// Breakout Event
//-----------------------------------------------------------------------------
var bool sBreak = na
var bool rBreak = na
cu = repaint(ta.crossunder(close, box.get_bottom(sBox)), ta.crossunder(low, box.get_bottom(sBox)), ta.crossunder(close, box.get_bottom(sBox)) and barstate.isconfirmed)
co = repaint(ta.crossover(close, box.get_top(rBox)), ta.crossover(high, box.get_top(rBox)), ta.crossover(close, box.get_top(rBox)) and barstate.isconfirmed)
switch
cu and na(sBreak) =>
sBreak := true
if input_breakout
breakLabel(sBot, input_plColor, label.style_label_upper_right, breakText)
co and na(rBreak) =>
rBreak := true
if input_breakout
breakLabel(rTop, input_phColor, label.style_label_lower_right, breakText)
if ta.change(pl)
if na(sBreak)
box.delete(sBox[1])
sBreak := na
if ta.change(ph)
if na(rBreak)
box.delete(rBox[1])
rBreak := na
//-----------------------------------------------------------------------------
// Retest Event
//-----------------------------------------------------------------------------
s1 = retestCondition(sBreak, high >= sTop and close <= sBot) // High is GOET top sBox value and the close price is LOET the bottom sBox value.
s2 = retestCondition(sBreak, high >= sTop and close >= sBot and close <= sTop) // High is GOET top sBox value and close is GOET the bottom sBox value and closing price is LOET the top sBox value.
s3 = retestCondition(sBreak, high >= sBot and high <= sTop) // High is in between the sBox.
s4 = retestCondition(sBreak, high >= sBot and high <= sTop and close < sBot) // High is in between the sBox, and the closing price is below.
r1 = retestCondition(rBreak, low <= rBot and close >= rTop) // Low is LOET bottom rBox value and close is GOET the top sBox value
r2 = retestCondition(rBreak, low <= rBot and close <= rTop and close >= rBot) // Low is LOET bottom rBox value and close is LOET the top sBox value and closing price is GOET the bottom rBox value.
r3 = retestCondition(rBreak, low <= rTop and low >= rBot) // Low is in between the rBox.
r4 = retestCondition(rBreak, low <= rTop and low >= rBot and close > rTop) // Low is in between the rBox, and the closing price is above.
retestEvent(c1, c2, c3, c4, y1, y2, col, style, pType) =>
if input_retest
var bool retOccurred = na
retActive = c1 or c2 or c3 or c4
retEvent = retActive and not retActive[1]
retValue = ta.valuewhen(retEvent, y1, 0)
if pType == 'ph' ? y2 < ta.valuewhen(retEvent, y2, 0) : y2 > ta.valuewhen(retEvent, y2, 0)
retEvent := retActive
// Must be reassigned here just in case the above if statement triggers.
retValue := ta.valuewhen(retEvent, y1, 0)
retSince = ta.barssince(retEvent)
var retLabel = array.new<label>()
if retEvent
retOccurred := na
array.push(retLabel, label.new(bar_index - retSince, y2[retSince], text = input_labelType == 'Simple' ? 'P. Re' : 'Potential Retest', color = color.new(col, 50), style = style, textcolor = input_override ? input_textColor : col, size = input_labelSize))
if array.size(retLabel) == 2
label.delete(array.first(retLabel))
array.shift(retLabel)
retConditions = pType == 'ph' ? repaint(close >= retValue, high >= retValue, close >= retValue and barstate.isconfirmed) : repaint(close <= retValue, low <= retValue, close <= retValue and barstate.isconfirmed)
retValid = ta.barssince(retEvent) > 0 and ta.barssince(retEvent) <= input_retValid and retConditions and not retOccurred
if retValid
label.new(bar_index - retSince, y2[retSince], text = input_labelType == 'Simple' ? 'Re' : 'Retest', color = color.new(col, 50), style = style, textcolor = input_override ? input_textColor : col, size = input_labelSize)
retOccurred := true
if retValid or ta.barssince(retEvent) > input_retValid
label.delete(array.first(retLabel))
if pType == 'ph' and ta.change(ph) and retOccurred
box.set_right(rBox[1], bar_index - retSince)
retOccurred := na
if pType == 'pl' and ta.change(pl) and retOccurred
box.set_right(sBox[1], bar_index - retSince)
retOccurred := na
[retValid, retEvent, retValue]
[rRetValid, rRetEvent] = retestEvent(r1, r2, r3, r4, high, low, input_phColor, label.style_label_upper_left, 'ph')
[sRetValid, sRetEvent] = retestEvent(s1, s2, s3, s4, low, high, input_plColor, label.style_label_lower_left, 'pl')
//-----------------------------------------------------------------------------
// Alerts
//-----------------------------------------------------------------------------
alertcondition(ta.change(pl), 'New Support Level')
alertcondition(ta.change(ph), 'New Resistance Level')
alertcondition(ta.barssince(na(sBreak)) == 1, 'Support Breakout')
alertcondition(ta.barssince(na(rBreak)) == 1, 'Resistance Breakout')
alertcondition(sRetValid, 'Support Retest')
alertcondition(sRetEvent, 'Potential Support Retest')
alertcondition(rRetValid, 'Resistance Retest')
alertcondition(rRetEvent, 'Potential Resistance Retest')
AllAlerts(condition, message) =>
if condition
alert(message)
AllAlerts(ta.change(pl), 'New Support Level')
AllAlerts(ta.change(ph), 'New Resistance Level')
AllAlerts(ta.barssince(na(sBreak)) == 1, 'Support Breakout')
AllAlerts(ta.barssince(na(rBreak)) == 1, 'Resistance Breakout')
AllAlerts(sRetValid, 'Support Retest')
AllAlerts(sRetEvent, 'Potential Support Retest')
AllAlerts(rRetValid, 'Resistance Retest')
AllAlerts(rRetEvent, 'Potential Resistance Retest')
///////////////////////////////////////////////////////////
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BobRivera990
//@version=4
study(title = "*", overlay = false, scale=scale.left,format=format.price, precision=2, max_bars_back = 200)
//==========================================================================[Inputs]==========================================================================
useAtr = input(true, title = "Use ATR to detect Sideways Movements") // Use Average True Range (ATR) to detect Sideways Movements
atrLen = input(14, minval = 1, title = "ATR Length") // length of the Average True Range (ATR) used to detect Sideways Movements
atrMaType = input("EMA", options = ["SMA", "EMA"],
title = "ATR Moving Average Type") // Type of the moving average of the ATR used to detect Sideways Movements
atrMaLen = input(27, minval = 1, title = "ATR MA Length") // length of the moving average of the ATR used to detect Sideways Movements
useAdx = input(true, title = "Use ADX to detect Sideways Movements") // Use Average Directional Index (ADX) to detect Sideways Movements
adxLen = input(14, minval = 1, maxval = 50, title = "ADX Smoothing") // length of the Average Directional Index (ADX) used to detect Sideways Movements
diLen = input(14, minval = 1, title = "DI Length") // length of the Plus and Minus Directional Indicators (+DI & -DI) used to determine the direction of the trend
adxLim = input(25, minval = 1, title = "ADX Limit") // A level of ADX used as the boundary between Trend Market and Sideways Market
smooth = input(3, minval = 1, maxval = 5, title = "Smoothing Factor") // Factor used for smoothing the oscillator
lag = input(8, minval = 0, maxval = 15, title = "Lag") // lag used to match indicator and chart
//============================================================================================================================================================
//===================================================================[Initial Calculations]===================================================================
atr = atr(atrLen) // Calculate the Average True Range (ATR)
atrMa = atrMaType == "EMA" ? ema(atr, atrMaLen) : sma(atr, atrMaLen) // Calculate the moving average of the ATR
up = change(high) // Calculate parameter related to ADX, +DI and -DI
down = -change(low) // Calculate parameter related to ADX, +DI and -DI
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) // Calculate parameter related to ADX, +DI and -DI
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) // Calculate parameter related to ADX, +DI and -DI
trur = rma(tr, diLen) // Calculate parameter related to ADX, +DI and -DI
plus = fixnan(100 * rma(plusDM, diLen) / trur) // Calculate Plus Directional Indicator (+DI)
minus = fixnan(100 * rma(minusDM, diLen) / trur) // Calculate Minus Directional Indicator (-DI)
sum = plus + minus // Calculate parameter related to ADX
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxLen) // Calculate Average Directional Index (ADX)
//============================================================================================================================================================
//========================================================================[Conditions]========================================================================
cndNa = na(atr) or na(adx) or na(plus) or na(minus) or na(atrMaLen) // Conditions for lack of sufficient data for calculations
cndSidwayss1 = useAtr and atr <= atrMa // Sideways Movement condition (based on ATR)
cndSidwayss2 = useAdx and adx <= adxLim // Sideways Movement condition (based on ADX)
cndSidways = cndSidwayss1 or cndSidwayss2 // General Sideways Movement condition
cndUp = plus > minus // uptrend condition
cndDown = minus >= plus // downtrend condition
trendType = cndNa ? na : cndSidways ? 0 : cndUp ? 2 : -2 // Determine the type of trend
smoothType = na(trendType) ? na : round(sma(trendType, smooth) / 2) * 2 // Calculate the smoothed trend type oscillator
//============================================================================================================================================================
//=========================================================================[Drawing]==========================================================================
colGreen30 = color.new(color.green, 10) // Define the color used in the drawings
colGreen90 = color.new(color.green, 90) // Define the color used in the drawings
colGray = color.new(color.gray, 20) // Define the color used in the drawings
colWhite90 = color.new(color.white, 90) // Define the color used in the drawings
colRed30 = color.new(color.red, 30) // Define the color used in the drawings
colRed90 = color.new(color.red, 90) // Define the color used in the drawings
band3 = plot(+3, title = "3", color=color.black,transp=100) // Draw the upper limit of the uptrend area
band2 = plot(+1, title = "2", color=color.black,transp=100) // Draw the boundary between Sideways and Uptrend areas
band1 = plot(-1, title = "1", color=color.black,transp=100) // Draw the boundary between Sideways and Downtrend areas
band0 = plot(-3, title = "0", color=color.black,transp=100) // Draw the lower limit of the downtrend area
fill(band2, band3, title = "Uptrend area", color = colGreen90) // Highlight the Uptrend area
fill(band1, band2, title = "Sideways area", color = colWhite90) // Highlight the Sideways area
fill(band0, band1, title = "Downtrend area", color = colRed90) // Highlight the Downtrend area
var label lblUp = na
label.delete(lblUp)
lblUp := label.new(x = time, y = 2, text = "Trend POZİTİF",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size=size.normal, textalign = text.align_left) // Show Uptrend area label
var label lblSideways = na
label.delete(lblSideways)
lblSideways := label.new(x = time, y = 0, text = "Trend YOK",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size = size.normal, textalign = text.align_left) // Show Sideways area label
var label lblDown = na
label.delete(lblDown)
lblDown := label.new(x = time, y = -2, text = "Trend NEGATİF",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size = size.normal, textalign = text.align_left) // Show Downtrend area label
var label lblCurrentType = na
label.delete(lblCurrentType)
lblCurrentType := label.new(x = time, y = smoothType,
color = color.new(color.blue, 30), style = label.style_label_right,
xloc = xloc.bar_time, yloc = yloc.price, size = size.small) // Show the latest status label
trendCol = smoothType == 2 ? colGreen30 : smoothType == 0 ? colGray : colRed30 // Determine the color of the oscillator in different conditions
//plot(smoothType, title = "Tr", color = trendCol,
// linewidth = 3, offset = -lag, style = plot.style_stepline) // Draw the trend type oscillator
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PHP Code:
//@version=5
indicator('Risk-Adjusted Return Oscillator', shorttitle='*', scale=scale.left, overlay=true)
//@version=5
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Tooltips ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
t1 = "Determines the Length of Z-Score Assessment. Defaults to a 75 lookback period"
t2 = "Determines the length of the SMA if the user selects Show SMA. Default is 75, but for a more responsive SMA you can reduce it to 14. Optional."
t3 = "Shows the probability zones in colour."
t4 = "Will Display a summarized Z-Table."
t5 = "Display's the SMA."
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// User Inputs ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
len = input.int(20, "Lookback Length", tooltip=t1)
smalen = input.int(20, "SMA Length", tooltip=t2)
//probfill = input.bool(true, "Distribution Probaiblity Fills", tooltip=t3)
//showztable = input.bool(true, "Show Z-Table", tooltip=t4)
showsma = input.bool(true, "Show SMA", tooltip=t5)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Z-Score/SMA Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
z = (close - ta.sma(close, len)) / ta.stdev(close, len)
cl_sma = ta.sma(close, len)
cl_sd = ta.stdev(close, len)
// SMA
var float z_sma = 0.0
if showsma
z_sma := ta.sma(z, smalen)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Colours ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color red = color.red
//color green = color.green
//color orange = color.orange
//color yellow = color.yellow
color labelcolor = color.new(color.white, 100)
//color gray = color.new(color.gray, 25)
//color white = color.white
// Colour for Probability Distribution
//color greenfill = color.new(color.green, 75)
//color yellowfill = color.new(color.yellow, 75)
//color redfill = color.new(color.red, 75)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Logical Assessments ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool zero_one = z >= 0 and z < 1
bool one_two = z >= 1 and z < 2.01
bool two_three = z >= 2 and z < 3.01
bool three = z >= 3
bool zero = z >= 0.99 and z <= -0.99
bool neg_zero_one = z < 0 and z > -1
bool neg_one_two = z <= -1 and z > -2
bool neg_two_three = z <= -2 and z > -3
bool neg_three = z <= -3
falling = ta.falling(z_sma, 3)
rising = ta.rising(z_sma, 3)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color z_color_plot = z > 0 ? green : z <= 0 ? red : orange
//plot(z, "Z-Score", color=z_color_plot, style=plot.style_area)
//plot(z_sma, "Z-SMA", color=showsma ? white : labelcolor, linewidth=2)
neutral = 0
onesd = 1
twosd = 2
threesd = 3
neg_onesd = -1
neg_twosd = -2
neg_threesd = -3
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Price Level Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
neutral_price = (cl_sma) + (0 * cl_sd)
onesd_price = (cl_sma) + (1 * cl_sd)
twosd_price = (cl_sma) + (2 * cl_sd)
threesd_price = (cl_sma) + (3 * cl_sd)
neg_onesd_price = (cl_sma) + (-1 * cl_sd)
neg_twosd_price = (cl_sma) + (-2 * cl_sd)
neg_threesd_price = (cl_sma) + (-3 * cl_sd)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Line Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var label neutral_price_line = na
var label onesd_price_line = na
var label twosd_price_line = na
var label threesd_price_line = na
var label neg_onesd_price_line = na
var label neg_twosd_price_line = na
var label neg_threesd_price_line = na
if bar_index >= 75
label.delete(neutral_price_line)
label.delete(onesd_price_line)
label.delete(twosd_price_line)
label.delete(threesd_price_line)
label.delete(neg_onesd_price_line)
label.delete(neg_twosd_price_line)
label.delete(neg_threesd_price_line)
neutral_price_line := label.new(bar_index, y=neutral, text=str.tostring(math.round(neutral_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
onesd_price_line := label.new(bar_index - 5, onesd, str.tostring(math.round(onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
twosd_price_line := label.new(bar_index - 5, twosd, str.tostring(math.round(twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
threesd_price_line := label.new(bar_index - 5, threesd, str.tostring(math.round(threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_onesd_price_line := label.new(bar_index - 5, neg_onesd, str.tostring(math.round(neg_onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_twosd_price_line := label.new(bar_index - 5, neg_twosd, str.tostring(math.round(neg_twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_threesd_price_line := label.new(bar_index - 5, neg_threesd, str.tostring(math.round(neg_threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin
//@version=5
import jdehorty/KernelFunctions/2 as k
threshold = input.int(20,"Range Threshold",minval=0,maxval=100,
tooltip="Stochastic threshold (0-100) to identify ranging markets. A higher threshold will identify more ranges but will be slower at catching the trend.",
group="General")
l = input.int(14,"ATR Length",group="Stoch ATR")
lengthStoch = input.int(14, "Stochastic Length", minval=1,group="Stoch ATR")
lb = input.int(14,"Lookback",group="Stoch ATR",tooltip="The number of bars used for the estimation of the rational quadratic kernel.")
rw = input.int(1,"Relative Weighting",group="Stoch ATR")
smoothK = input.int(3, "Stochastic Smoothing", minval=1,group="Stoch ATR")
rsisrc = input.source(close,"RSI Source",group="RSI")
rsilen = input.int(14,"RSI Length",group="RSI")
stochatr(atr,smoothK,lookback,weighting,lengthStoch)=>
y = k.rationalQuadratic(ta.stoch(atr,atr,atr,lengthStoch),lookback,weighting,smoothK)
y
atr = ta.atr(l)
k = stochatr(atr,smoothK,lb,rw,lengthStoch)
rsi = ta.rsi(rsisrc,rsilen)
bull = math.sqrt(rsi * k)
bear = math.sqrt((100 - rsi) * k)
barcolor(bull > bear and math.min(bull,bear) > threshold ? color.lime : bear > bull and math.min(bull,bear) > threshold ? color.red : color.rgb(230, 226, 14))
/////////////////////////////////////////////////////////////////////////////////////////////////////
//@version=5
len22=input(1)
o22=ta.ema(open,len22)
c22=ta.ema(close,len22)
h22=ta.ema(high,len22)
l22=ta.ema(low,len22)
haclose = (o22+h22+l22+c22)/4
haopen = o22 // initialize haopen variable
haopen := na(haopen[1]) ? (o22 + c22)/2 : (haopen[1] + haclose[1]) / 2
hahigh = math.max (h22, math.max(haopen,haclose))
halow = math.min (l22, math.min(haopen,haclose))
len233=input(1)
o233=ta.ema(haopen, len233)
c233=ta.ema(haclose, len233)
h233=ta.ema(hahigh, len233)
l233=ta.ema(halow, len233)
// calculate Sancho indicator
sebastine = ((c233 / o233) - 1) * 200
// plot the Sebastine, signal, upper and lower bands
color_sebastine = sebastine >= 0 ? color.rgb(213, 228, 11) : color.red
plot(sebastine, color=color_sebastine, linewidth=2, title="TR",style=plot.style_cross)
hline(0, title="Zero Line", color=color.rgb(122, 121, 121, 52), linestyle=hline.style_dashed, linewidth=1)
//////////////////////////////
-
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Gedhusek
//@version=5
indicator("Gedhusek TrendFibonacci",shorttitle=".",max_bars_back=100, max_lines_count=100,overlay = true)
//////////////////////////////////////////////////////////////
input_lookback = input.int(defval = 5, title = 'Lookback Range', minval = 5)
input_extend = input.string(defval = 'None', title = 'Extend', options = ['None', 'Right', 'Left', 'Both'])
input_width = input.int(defval = 1, title = 'Width', minval = 0)
input_labels = input.bool(defval = true, title = 'Labels', inline = 'Labels')
input_offset = input.int(defval = 4, title = '| Offset Right', inline = 'Labels')
input_prices = input.bool(defval = true, title = 'Prices', tooltip = 'Prints the price of the level next to the retracement level.\n\nWill yield a slight noticeable performance hit.')
input_bullColor = input.color(defval = color.green, title = 'Bull', inline = 'color')
input_bearColor = input.color(defval = color.red, title = 'Bear', inline = 'color')
input_trendline = input.bool(defval = true, title = 'Use Trendline', group = 'Levels')
input_use236 = input.bool(defval = false, title = '', inline = '0', group = 'Levels')
input_236 = input.float(defval = 0.236, title = '', inline = '0', group = 'Levels', step = 0.01)
input_use382 = input.bool(defval = false, title = '', inline = '382', group = 'Levels')
input_382 = input.float(defval = 0.382, title = '', inline = '382', group = 'Levels', step = 0.01)
input_use5 = input.bool(defval = true, title = '', inline = '382', group = 'Levels')
input_5 = input.float(defval = 0.5, title = '', inline = '382', group = 'Levels', step = 0.01)
input_use618 = input.bool(defval = false, title = '', inline = '618', group = 'Levels')
input_618 = input.float(defval = 0.618, title = '', inline = '618', group = 'Levels', step = 0.01)
input_use786 = input.bool(defval = false, title = '', inline = '618', group = 'Levels')
input_786 = input.float(defval = 0.786, title = '', inline = '618', group = 'Levels', step = 0.01)
exType = switch input_extend
'None' => extend.none
'Right' => extend.right
'Left' => extend.left
'Both' => extend.both
pl = fixnan(ta.pivotlow(input_lookback, input_lookback))
ph = fixnan(ta.pivothigh(input_lookback, input_lookback))
plC = ta.barssince(ta.change(pl))
phC = ta.barssince(ta.change(ph))
var string dir = na
since = phC < plC ? plC + input_lookback : phC + input_lookback
if ta.change(ph) or ta.crossunder(low, pl)
dir := 'bear'
if ta.change(pl) or ta.crossover(high, ph)
dir := 'bull'
col = dir == 'bull' ? input_bullColor : input_bearColor
getOuter(pivot, src) =>
var srcValue = src
if ta.change(pivot)
srcValue := pivot
if pivot == ph ? src > srcValue : src < srcValue
srcValue := src
[srcValue]
[h] = getOuter(ph, high)
[l] = getOuter(pl, low)
calcFib(float lo, float hi, float perc) => dir == 'bull' ? lo - (lo - hi) * perc : hi - (hi - lo) * perc
getDecimals = str.split(str.substring(str.tostring(syminfo.mintick), 2, 99), '').size()
levelsArr = array.from(0, input_use236 ? input_236 : na, input_use382 ? input_382 : na, input_use5 ? input_5 : na, input_use618 ? input_618 : na, input_use786 ? input_786 : na, 1)
var trendline = line.new(na, na, na, na, style = line.style_dashed, width = input_width)
var innerLines = array.new<line>()
for i = 0 to 6
if innerLines.size() < 7
innerLines.push(line.new(na, na, na, na, width = input_width))
innerLines.get(i).set_xy1(bar_index - since, calcFib(l, h, levelsArr.get(i)))
innerLines.get(i).set_xy2(bar_index, calcFib(l, h, levelsArr.get(i)))
innerLines.get(i).set_color(col)
innerLines.get(i).set_extend(exType)
if input_labels
var labelArray = array.new<label>()
if labelArray.size() < 7
labelArray.push(label.new(na, na, na, style = label.style_none))
labelArray.get(i).set_xy(bar_index + input_offset, calcFib(l, h, levelsArr.get(i)))
labelArray.get(i).set_text(str.tostring(levelsArr.get(i)) + (input_prices ? ' (' + str.tostring(math.round(calcFib(l, h, levelsArr.get(i)), getDecimals)) + ')' : na))
labelArray.get(i).set_textcolor(col)
if input_trendline
if dir == 'bull'
trendline.set_xy1(bar_index - since, l)
trendline.set_xy2(bar_index, h)
else
trendline.set_xy1(bar_index - since, h)
trendline.set_xy2(bar_index, l)
trendline.set_color(col)
//////////////////////////////////////////////////////////////////////
//@version=5
////////////////////////////////
length=(1)
src=close
start1 = input(0)
increment1 = input(0.01)
maximum1 = input(1, "Max Value")
out1 = ta.sar(start1, increment1, maximum1)
momo1 = src - src[length]
smdo1 = out1 - momo1
plot(smdo1, "1.Döngü", style=plot.style_line, color=#f0ce0e)
/////////////////////////////////
start2 = input(0)
increment2 = input(0.1)
maximum2 = input(0.1, "Max Value")
out2 = ta.sar(start2, increment2, maximum2)
plot(out2, "2.Döngü", style=plot.style_line, color=#2962ff00)
///////////////////////////////////
start21 = input(0)
increment21 = input(0.01)
maximum21 = input(0.1, "Max Value")
out21 = ta.sar(start21, increment21, maximum21)
plot(out21, "3.Döngü", style=plot.style_line, color=#f2f3f700)
/////////////////////////////////
start213 = input(0.1)
increment213 = input(0.1)
maximum213 = input(1, "Max Value")
out213 = ta.sar(start213, increment213, maximum213)
plot(out213, "Döngü", style=plot.style_line, color=#b00ff000)
/////////////////////////////////////////////////////////////////////////
//@version=5
hma1 = ta.hma(low, 50)
hma2 = ta.hma(high, 50)
h50 = ta.highest(high, 50)
l50 = ta.lowest(low, 50)
h80 = ta.highest(high, 80)
l80 = ta.lowest(low, 80)
highest = math.avg(h50, h80)
lowest = math.avg(l50, l80)
Shorts1= plot(hma1, "S1",color=#ff000000, linewidth=1)
Shorts2= plot(lowest, "S2",color=#ff000000, linewidth=1)
//fill(Shorts1, Shorts2, #ff6a0067, title = "Short Zone")
Longs2= plot(hma2, "L2",color=#4ff80000, linewidth=1)
Longs1= plot(highest, "L1",color=#51ff0000, linewidth=1)
//fill(Longs1, Longs2, #00ff084e, title = "Long Zone")
Average = math.avg(highest, lowest)
Avrg= ta.sma(Average, 10)
//plot(Avrg, "Avrg",color=#f6ff00, style= plot.style_stepline_diamond, offset = 2)
//////////////////////////////////////////////////
//@version=5
import jdehorty/KernelFunctions/2 as kernel
DFT(x, y, Nx, _dir) =>
float _arg = 0.0
float _cos = 0.0
float _sin = 0.0
float xArr_i = 0.0
float yArr_i = 0.0
xArr = array.new_float(array.size(x))
yArr = array.new_float(array.size(y))
for i = 0 to Nx - 1 by 1
xArr_i := 0.0
yArr_i := 0.0
kx = float(i) / float(Nx)
_arg := -_dir * 2 * math.pi * kx
for k = 0 to Nx - 1 by 1
_cos := math.cos(k * _arg)
_sin := math.sin(k * _arg)
xArr_i += array.get(x, k) * _cos - array.get(y, k) * _sin
yArr_i += array.get(x, k) * _sin + array.get(y, k) * _cos
yArr_i
array.set(xArr, i, xArr_i)
array.set(yArr, i, yArr_i)
if _dir == 1
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i) / float(Nx))
array.set(y, i, array.get(yArr, i) / float(Nx))
else
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i))
array.set(y, i, array.get(yArr, i))
//======================================================================================================================
// INPUTS
//======================================================================================================================
N = input.int(1,"Fourier Period")
xval = input.source(close,"Fourier X Series",tooltip = "i.e. the source of the discrete Fourier"+
" transform (with the Y Series being the bars through time.)")
highlighting = input.bool(true,"Highlighting")
smoothing = input.int(10,"Kernel Smoothing")
//======================================================================================================================
// CALCULATIONS
//======================================================================================================================
// Fourier transform
x = array.new_float(N, 0.0)
y = array.new_float(N, 0.0)
for i = 0 to N - 1
array.set(x, i, xval[i])
array.set(y, i, 0.0)
DFT(x, y, N, 1)
mag = array.new_float(N, 0.0)
for i = 0 to N - 1
mag_i = math.sqrt(math.pow(array.get(x, i), 2) + math.pow(array.get(y, i), 2))
array.set(mag, i, mag_i)
dft = array.get(mag,0)
dfts = kernel.rationalQuadratic(dft,25,1,smoothing)
//======================================================================================================================
// DISPLAY
//======================================================================================================================
//plot(dft, "TR", color= color.white)
plot(dfts, "Stop", color = dfts > dft ? color.rgb(255, 82, 82, 100) : color.rgb(0, 230, 119, 100))
//fill(ft,fts,color = highlighting and dfts > dft ? color.new(color.red,75) : highlighting and dfts < dft ? color.new(color.lime,75) : na)
////////////////////////////////////////////////////////////////
PHP Code:
//@version=5
indicator('Risk-Adjusted Return Oscillator', shorttitle='*', scale=scale.left, overlay=true)
src1 = ohlc4
length1 = input(50, title='Period')
smoothing1 = input(30, title='Smoothing')
plot_signals = input(true, title='Show Overbought/Oversold Signals')
// Calculate return and standard deviation
return_1 = (src1 - src1[length1]) / src1
std = ta.stdev(src1, length1)
stdperc = std / src1
// Caclulate Risk-adjusted return metric
RAR = return_1 / stdperc
RAR_smoothed = ta.linreg(RAR, smoothing1, 0) / ta.sma(math.abs(RAR), 300)
// Define conditional colors for the smoothed RAR curve and RAR histogram
RAR_smoothed_color = RAR_smoothed >= 0.5 ? color.green : RAR_smoothed <= -0.5 ? color.red : color.orange
color_RAR_hist = color.new(color.blue, 50)
// Plot RAR histogran
//plot(RAR, style=plot.style_histogram, color=color_RAR_hist)
// Plot smoothed RAR curve
//plot(RAR_smoothed, color=RAR_smoothed_color, linewidth=3, style=plot.style_line)
// Plot upper and lower bounds of the neutral zone
upper_neutral = plot(0.5, color=color.new(color.blue, 50))
lower_neutral = plot(-0.5, color=color.new(color.blue, 50))
//fill(upper_neutral, lower_neutral, color=color.new(color.blue, 90))
// Plot overbought and oversold levels
plot(1.9, color=color.new(color.red, 40), linewidth=2)
plot(-1.9, color=color.new(color.red, 40), linewidth=2)
// Overbought/Oversold conditiions
overbought_condition = RAR_smoothed >= 1.8
ocersold_condition = RAR_smoothed <= -1.8
// Plot overbought oversold signals
//plotshape(plot_signals and overbought_condition ? RAR_smoothed : na, style=shape.triangleup, location=location.absolute, size=size.tiny, color=color.new(color.green, 0))
//plotshape(plot_signals and ocersold_condition ? RAR_smoothed : na, style=shape.triangledown, location=location.absolute, size=size.tiny, color=color.new(color.red, 0))
//////////////////////////////////////////////////
//@version=5
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Tooltips ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
t1 = "Determines the Length of Z-Score Assessment. Defaults to a 75 lookback period"
t2 = "Determines the length of the SMA if the user selects Show SMA. Default is 75, but for a more responsive SMA you can reduce it to 14. Optional."
t3 = "Shows the probability zones in colour."
t4 = "Will Display a summarized Z-Table."
t5 = "Display's the SMA."
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// User Inputs ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
len = input.int(20, "Lookback Length", tooltip=t1)
smalen = input.int(20, "SMA Length", tooltip=t2)
//probfill = input.bool(true, "Distribution Probaiblity Fills", tooltip=t3)
//showztable = input.bool(true, "Show Z-Table", tooltip=t4)
showsma = input.bool(true, "Show SMA", tooltip=t5)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Z-Score/SMA Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
z = (close - ta.sma(close, len)) / ta.stdev(close, len)
cl_sma = ta.sma(close, len)
cl_sd = ta.stdev(close, len)
// SMA
var float z_sma = 0.0
if showsma
z_sma := ta.sma(z, smalen)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Colours ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color red = color.red
//color green = color.green
//color orange = color.orange
//color yellow = color.yellow
color labelcolor = color.new(color.white, 100)
//color gray = color.new(color.gray, 25)
//color white = color.white
// Colour for Probability Distribution
//color greenfill = color.new(color.green, 75)
//color yellowfill = color.new(color.yellow, 75)
//color redfill = color.new(color.red, 75)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Logical Assessments ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool zero_one = z >= 0 and z < 1
bool one_two = z >= 1 and z < 2.01
bool two_three = z >= 2 and z < 3.01
bool three = z >= 3
bool zero = z >= 0.99 and z <= -0.99
bool neg_zero_one = z < 0 and z > -1
bool neg_one_two = z <= -1 and z > -2
bool neg_two_three = z <= -2 and z > -3
bool neg_three = z <= -3
falling = ta.falling(z_sma, 3)
rising = ta.rising(z_sma, 3)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color z_color_plot = z > 0 ? green : z <= 0 ? red : orange
//plot(z, "Z-Score", color=z_color_plot, style=plot.style_area)
//plot(z_sma, "Z-SMA", color=showsma ? white : labelcolor, linewidth=2)
neutral = 0
onesd = 1
twosd = 2
threesd = 3
neg_onesd = -1
neg_twosd = -2
neg_threesd = -3
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Price Level Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
neutral_price = (cl_sma) + (0 * cl_sd)
onesd_price = (cl_sma) + (1 * cl_sd)
twosd_price = (cl_sma) + (2 * cl_sd)
threesd_price = (cl_sma) + (3 * cl_sd)
neg_onesd_price = (cl_sma) + (-1 * cl_sd)
neg_twosd_price = (cl_sma) + (-2 * cl_sd)
neg_threesd_price = (cl_sma) + (-3 * cl_sd)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Line Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var label neutral_price_line = na
var label onesd_price_line = na
var label twosd_price_line = na
var label threesd_price_line = na
var label neg_onesd_price_line = na
var label neg_twosd_price_line = na
var label neg_threesd_price_line = na
if bar_index >= 75
label.delete(neutral_price_line)
label.delete(onesd_price_line)
label.delete(twosd_price_line)
label.delete(threesd_price_line)
label.delete(neg_onesd_price_line)
label.delete(neg_twosd_price_line)
label.delete(neg_threesd_price_line)
neutral_price_line := label.new(bar_index, y=neutral, text=str.tostring(math.round(neutral_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
onesd_price_line := label.new(bar_index - 5, onesd, str.tostring(math.round(onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
twosd_price_line := label.new(bar_index - 5, twosd, str.tostring(math.round(twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
threesd_price_line := label.new(bar_index - 5, threesd, str.tostring(math.round(threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_onesd_price_line := label.new(bar_index - 5, neg_onesd, str.tostring(math.round(neg_onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_twosd_price_line := label.new(bar_index - 5, neg_twosd, str.tostring(math.round(neg_twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_threesd_price_line := label.new(bar_index - 5, neg_threesd, str.tostring(math.round(neg_threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin
//@version=5
import jdehorty/KernelFunctions/2 as k
threshold = input.int(20,"Range Threshold",minval=0,maxval=100,
tooltip="Stochastic threshold (0-100) to identify ranging markets. A higher threshold will identify more ranges but will be slower at catching the trend.",
group="General")
l = input.int(14,"ATR Length",group="Stoch ATR")
lengthStoch = input.int(14, "Stochastic Length", minval=1,group="Stoch ATR")
lb = input.int(14,"Lookback",group="Stoch ATR",tooltip="The number of bars used for the estimation of the rational quadratic kernel.")
rw = input.int(1,"Relative Weighting",group="Stoch ATR")
smoothK = input.int(3, "Stochastic Smoothing", minval=1,group="Stoch ATR")
rsisrc = input.source(close,"RSI Source",group="RSI")
rsilen = input.int(14,"RSI Length",group="RSI")
stochatr(atr,smoothK,lookback,weighting,lengthStoch)=>
y = k.rationalQuadratic(ta.stoch(atr,atr,atr,lengthStoch),lookback,weighting,smoothK)
y
atr = ta.atr(l)
k = stochatr(atr,smoothK,lb,rw,lengthStoch)
rsi = ta.rsi(rsisrc,rsilen)
bull = math.sqrt(rsi * k)
bear = math.sqrt((100 - rsi) * k)
barcolor(bull > bear and math.min(bull,bear) > threshold ? color.lime : bear > bull and math.min(bull,bear) > threshold ? color.red : color.gray)
///////////////////////////////////////
//@version=5
len22=input(1)
o22=ta.ema(open,len22)
c22=ta.ema(close,len22)
h22=ta.ema(high,len22)
l22=ta.ema(low,len22)
haclose = (o22+h22+l22+c22)/4
haopen = o22 // initialize haopen variable
haopen := na(haopen[1]) ? (o22 + c22)/2 : (haopen[1] + haclose[1]) / 2
hahigh = math.max (h22, math.max(haopen,haclose))
halow = math.min (l22, math.min(haopen,haclose))
len233=input(1)
o233=ta.ema(haopen, len233)
c233=ta.ema(haclose, len233)
h233=ta.ema(hahigh, len233)
l233=ta.ema(halow, len233)
// calculate Sancho indicator
sebastine = ((c233 / o233) - 1) * 200
// plot the Sebastine, signal, upper and lower bands
color_sebastine = sebastine >= 0 ? color.green : color.red
plot(sebastine, color=color_sebastine, linewidth=4, title="TR",style=plot.style_circles)
hline(0, title="Zero Line", color=color.rgb(122, 121, 121, 52), linestyle=hline.style_dashed, linewidth=1)
//////////////////////////////
PHP Code:
//@version=2
study("Parabolic SAR", "*", overlay = true)
//Plots
acx32fX = input(true, title="Adaptive Coloring", type=bool)
//////////////////////////////////////////////////////////////////////////
a = sar(0,0.1,1)
a1 = sar(0.01,0.001,1)
a7 = sar(0.01,0.02,0.2)
a8 = sar(0.01,0.04,0.4)
a9 = sar(0.01,0.06,0.6)
a10 = sar(0.01,0.08,0.8)
//plot(a, title="Y", style=cross, color=acx32fX?(a>close?fuchsia:white) : silver, transp=100, linewidth=1)
plot(a1, title="@", style=cross, color=acx32fX?(a1>close?red:lime) : silver, transp=00, linewidth=2)
//plot(a7, title="K", style=cross, color=acx32fX?(a7>close?fuchsia:white) : silver, transp=100, linewidth=1)
//plot(a8, title="Ü", style=cross, color=acx32fX?(a8>close?fuchsia:white) : silver, transp=100, linewidth=1)
//plot(a9, title="R", style=cross, color=acx32fX?(a9>close?fuchsia:white) : silver, transp=100, linewidth=1)
//plot(a10, title="Ö", style=cross, color=acx32fX?(a10>close?fuchsia:white) : silver, transp=100, linewidth=1)
///////////////////////////////////////////////////////////////////////////////////////
leno1 = input(1, minval=1, title="Length")
srco1 = input(close, title="Source")
starto1 = input(0)
incremento1 = input(0.001)
maximumo1 = input(1)
momo1 = srco1 - srco1[leno1]
outo1 = sar(starto1, incremento1, maximumo1)
smdo1 = outo1 - momo1
plot(smdo1, title="TR", style=line, color=acx32fX?(smdo1>close?red:lime) : silver, transp=00, linewidth=1)
////////////////////////////////
leno12 = input(1, minval=1, title="Length")
srco12 = input(close, title="Source")
starto12 = input(0)
incremento12 = input(0.01)
maximumo12 = input(1)
momo12 = srco12 - srco12[leno12]
outo12 = sar(starto12, incremento12, maximumo12)
smdo12 = outo12 - momo12
//plot(smdo12, title="TR2", style=line, color=acx32fX?(smdo12>close?red:lime) : silver, transp=00, linewidth=1)
/////////////////////////
leno123 = input(1, minval=1, title="Length")
srco123 = input(close, title="Source")
starto123 = input(0.1)
incremento123 = input(0.1)
maximumo123 = input(0.1)
momo123 = srco123 - srco123[leno123]
outo123 = sar(starto123, incremento123, maximumo123)
smdo123 = outo123 - momo123
//plot(smdo123, title="TR3", style=line, color=acx32fX?(smdo123>close?red:lime) : silver, transp=00, linewidth=1)
///////////////////////////////////////
//yörük sar sistemdir.
//resolution
res1fX=input("15", type=resolution, title="Resolution")
res3fX=input("60", type=resolution, title="Resolution")
res5fX=input("15", type=resolution, title="Resolution")
res15fX=input("60", type=resolution, title="Resolution")
//output functions
out1fX = sar(0,0.1,1)
out11fX = sar(0,0.01,1)
// Security
SAR1fX = security(tickerid, res1fX, out1fX)
SAR3fX = security(tickerid, res3fX, out1fX)
SAR5fX = security(tickerid, res5fX, out11fX)
SAR15fX = security(tickerid, res15fX, out11fX)
//Plots
//plot(SAR1fX, title="15", style=circles, color=acx32fX?(SAR1fX>close?red:yellow) : silver, transp=100, linewidth=1)
//plot(SAR3fX, title="60", style=circles, color=acx32fX?(SAR3fX>close?red:yellow) : silver, transp=100, linewidth=1)
//plot(SAR5fX, title="15", style=circles, color=acx32fX?(SAR5fX>close?red:aqua) : silver, transp=100, linewidth=1)
//plot(SAR15fX, title="60", style=circles, color=acx32fX?(SAR15fX>close?red:aqua) : silver, transp=100, linewidth=1)
////////////////////////////////////////////
-
PHP Code:
//@version=5
indicator('Risk-Adjusted Return Oscillator', shorttitle='*', scale=scale.left, overlay=true,max_boxes_count = 500, max_labels_count = 500)
//@version=5
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Tooltips ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
t1 = "Determines the Length of Z-Score Assessment. Defaults to a 75 lookback period"
t2 = "Determines the length of the SMA if the user selects Show SMA. Default is 75, but for a more responsive SMA you can reduce it to 14. Optional."
t3 = "Shows the probability zones in colour."
t4 = "Will Display a summarized Z-Table."
t5 = "Display's the SMA."
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// User Inputs ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
len = input.int(20, "Lookback Length", tooltip=t1)
smalen = input.int(20, "SMA Length", tooltip=t2)
//probfill = input.bool(true, "Distribution Probaiblity Fills", tooltip=t3)
//showztable = input.bool(true, "Show Z-Table", tooltip=t4)
showsma = input.bool(true, "Show SMA", tooltip=t5)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Z-Score/SMA Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
z = (close - ta.sma(close, len)) / ta.stdev(close, len)
cl_sma = ta.sma(close, len)
cl_sd = ta.stdev(close, len)
// SMA
var float z_sma = 0.0
if showsma
z_sma := ta.sma(z, smalen)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Colours ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color red = color.red
//color green = color.green
//color orange = color.orange
//color yellow = color.yellow
color labelcolor = color.new(color.white, 100)
//color gray = color.new(color.gray, 25)
//color white = color.white
// Colour for Probability Distribution
//color greenfill = color.new(color.green, 75)
//color yellowfill = color.new(color.yellow, 75)
//color redfill = color.new(color.red, 75)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Logical Assessments ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool zero_one = z >= 0 and z < 1
bool one_two = z >= 1 and z < 2.01
bool two_three = z >= 2 and z < 3.01
bool three = z >= 3
bool zero = z >= 0.99 and z <= -0.99
bool neg_zero_one = z < 0 and z > -1
bool neg_one_two = z <= -1 and z > -2
bool neg_two_three = z <= -2 and z > -3
bool neg_three = z <= -3
falling = ta.falling(z_sma, 3)
rising = ta.rising(z_sma, 3)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//color z_color_plot = z > 0 ? green : z <= 0 ? red : orange
//plot(z, "Z-Score", color=z_color_plot, style=plot.style_area)
//plot(z_sma, "Z-SMA", color=showsma ? white : labelcolor, linewidth=2)
neutral = 0
onesd = 1
twosd = 2
threesd = 3
neg_onesd = -1
neg_twosd = -2
neg_threesd = -3
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Price Level Calculations ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
neutral_price = (cl_sma) + (0 * cl_sd)
onesd_price = (cl_sma) + (1 * cl_sd)
twosd_price = (cl_sma) + (2 * cl_sd)
threesd_price = (cl_sma) + (3 * cl_sd)
neg_onesd_price = (cl_sma) + (-1 * cl_sd)
neg_twosd_price = (cl_sma) + (-2 * cl_sd)
neg_threesd_price = (cl_sma) + (-3 * cl_sd)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Line Plots ///
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var label neutral_price_line = na
var label onesd_price_line = na
var label twosd_price_line = na
var label threesd_price_line = na
var label neg_onesd_price_line = na
var label neg_twosd_price_line = na
var label neg_threesd_price_line = na
if bar_index >= 75
label.delete(neutral_price_line)
label.delete(onesd_price_line)
label.delete(twosd_price_line)
label.delete(threesd_price_line)
label.delete(neg_onesd_price_line)
label.delete(neg_twosd_price_line)
label.delete(neg_threesd_price_line)
neutral_price_line := label.new(bar_index, y=neutral, text=str.tostring(math.round(neutral_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
onesd_price_line := label.new(bar_index - 5, onesd, str.tostring(math.round(onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
twosd_price_line := label.new(bar_index - 5, twosd, str.tostring(math.round(twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
threesd_price_line := label.new(bar_index - 5, threesd, str.tostring(math.round(threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_onesd_price_line := label.new(bar_index - 5, neg_onesd, str.tostring(math.round(neg_onesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_twosd_price_line := label.new(bar_index - 5, neg_twosd, str.tostring(math.round(neg_twosd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
neg_threesd_price_line := label.new(bar_index - 5, neg_threesd, str.tostring(math.round(neg_threesd_price,2)), color=labelcolor, style=label.style_label_left, textcolor = color.white, size=size.normal, textalign = text.align_right)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin
//@version=5
import jdehorty/KernelFunctions/2 as k
threshold = input.int(20,"Range Threshold",minval=0,maxval=100,
tooltip="Stochastic threshold (0-100) to identify ranging markets. A higher threshold will identify more ranges but will be slower at catching the trend.",
group="General")
l = input.int(14,"ATR Length",group="Stoch ATR")
lengthStoch = input.int(14, "Stochastic Length", minval=1,group="Stoch ATR")
lb = input.int(14,"Lookback",group="Stoch ATR",tooltip="The number of bars used for the estimation of the rational quadratic kernel.")
rw = input.int(1,"Relative Weighting",group="Stoch ATR")
smoothK = input.int(3, "Stochastic Smoothing", minval=1,group="Stoch ATR")
rsisrc = input.source(close,"RSI Source",group="RSI")
rsilen = input.int(14,"RSI Length",group="RSI")
stochatr(atr,smoothK,lookback,weighting,lengthStoch)=>
y = k.rationalQuadratic(ta.stoch(atr,atr,atr,lengthStoch),lookback,weighting,smoothK)
y
atr = ta.atr(l)
k = stochatr(atr,smoothK,lb,rw,lengthStoch)
rsi = ta.rsi(rsisrc,rsilen)
bull = math.sqrt(rsi * k)
bear = math.sqrt((100 - rsi) * k)
barcolor(bull > bear and math.min(bull,bear) > threshold ? color.lime : bear > bull and math.min(bull,bear) > threshold ? color.red : color.rgb(230, 226, 14))
/////////////////////////////////////////////////////////////////////////////////////////////////////
//@version=5
len22=input(1)
o22=ta.ema(open,len22)
c22=ta.ema(close,len22)
h22=ta.ema(high,len22)
l22=ta.ema(low,len22)
haclose = (o22+h22+l22+c22)/4
haopen = o22 // initialize haopen variable
haopen := na(haopen[1]) ? (o22 + c22)/2 : (haopen[1] + haclose[1]) / 2
hahigh = math.max (h22, math.max(haopen,haclose))
halow = math.min (l22, math.min(haopen,haclose))
len233=input(1)
o233=ta.ema(haopen, len233)
c233=ta.ema(haclose, len233)
h233=ta.ema(hahigh, len233)
l233=ta.ema(halow, len233)
// calculate Sancho indicator
sebastine = ((c233 / o233) - 1) * 200
// plot the Sebastine, signal, upper and lower bands
color_sebastine = sebastine >= 0 ? color.rgb(213, 228, 11) : color.red
plot(sebastine, color=color_sebastine, linewidth=2, title="TR",style=plot.style_cross)
hline(0, title="Zero Line", color=color.rgb(122, 121, 121, 52), linestyle=hline.style_dashed, linewidth=1)
//////////////////////////////
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Gedhusek
//@version=5
indicator("Gedhusek TrendFibonacci",shorttitle=".",max_bars_back=100, max_lines_count=100,overlay = true)
//////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////
//@version=5
import jdehorty/KernelFunctions/2 as kernel
DFT(x, y, Nx, _dir) =>
float _arg = 0.0
float _cos = 0.0
float _sin = 0.0
float xArr_i = 0.0
float yArr_i = 0.0
xArr = array.new_float(array.size(x))
yArr = array.new_float(array.size(y))
for i = 0 to Nx - 1 by 1
xArr_i := 0.0
yArr_i := 0.0
kx = float(i) / float(Nx)
_arg := -_dir * 2 * math.pi * kx
for k = 0 to Nx - 1 by 1
_cos := math.cos(k * _arg)
_sin := math.sin(k * _arg)
xArr_i += array.get(x, k) * _cos - array.get(y, k) * _sin
yArr_i += array.get(x, k) * _sin + array.get(y, k) * _cos
yArr_i
array.set(xArr, i, xArr_i)
array.set(yArr, i, yArr_i)
if _dir == 1
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i) / float(Nx))
array.set(y, i, array.get(yArr, i) / float(Nx))
else
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i))
array.set(y, i, array.get(yArr, i))
//======================================================================================================================
// INPUTS
//======================================================================================================================
N = input.int(1,"Fourier Period")
xval = input.source(close,"Fourier X Series",tooltip = "i.e. the source of the discrete Fourier"+
" transform (with the Y Series being the bars through time.)")
highlighting = input.bool(true,"Highlighting")
smoothing = input.int(10,"Kernel Smoothing")
//======================================================================================================================
// CALCULATIONS
//======================================================================================================================
// Fourier transform
x = array.new_float(N, 0.0)
y = array.new_float(N, 0.0)
for i = 0 to N - 1
array.set(x, i, xval[i])
array.set(y, i, 0.0)
DFT(x, y, N, 1)
mag = array.new_float(N, 0.0)
for i = 0 to N - 1
mag_i = math.sqrt(math.pow(array.get(x, i), 2) + math.pow(array.get(y, i), 2))
array.set(mag, i, mag_i)
dft = array.get(mag,0)
dfts = kernel.rationalQuadratic(dft,25,1,smoothing)
//======================================================================================================================
// DISPLAY
//======================================================================================================================
//plot(dft, "TR", color= color.white)
plot(dfts, "Stop", color = dfts > dft ? color.rgb(255, 82, 82, 100) : color.rgb(0, 230, 119, 100))
//fill(ft,fts,color = highlighting and dfts > dft ? color.new(color.red,75) : highlighting and dfts < dft ? color.new(color.lime,75) : na)
////////////////////////////////////////////////////////////////
PHP Code:
//@version=2
study("Parabolic SAR", "*", overlay = true)
//Plots
acx32fX = input(true, title="Adaptive Coloring", type=bool)
//////////////////////////////////////////////////////////////////////////
a1 = sar(0,0.01,1)
plot(a1, title="@", style=cross, color=acx32fX?(a1>close?red:lime) : silver, transp=00, linewidth=2)
///////////////////////////////////////////////////////////////////////////////////////
leno1 = input(1, minval=1, title="Length")
srco1 = input(close, title="Source")
starto1 = input(0)
incremento1 = input(0.001)
maximumo1 = input(1)
momo1 = srco1 - srco1[leno1]
outo1 = sar(starto1, incremento1, maximumo1)
smdo1 = outo1 - momo1
plot(smdo1, title="TR", style=line, color=acx32fX?(smdo1>close?red:lime) : silver, transp=00, linewidth=1)
////////////////////////////////
-
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © carefulCode53358
// ------------------------------------------------------------------
// RJT CRYSTALS v1.02
// [en]Version 1.1 (solved the new compilator detection errors)
// Use this graphic tracer based in crystals to help interpreting
// the evolution of the price under a new and different perspective.
// The form of the crystals and the overlap between them will show
// a new mode to predict the begin and the end of trends.
// A clue... find the triangles. ;)
// *Parameters: Coloured Crystals?
// ------------------------------------------------------------------
// [es]Version 1.1 (resuelta la nueva detección de errores del compilador)
// Utiliza este trazador gráfico a base de cristales para ayudarte
// a interpretar la evolución del precio bajo una nueva y diferente
// perspectiva. La forma de los cristales así como su superposición
// entre ellos mostrarán un modo diferente de predecir el comienzo y
// final de las tendencias. Una pista... encuentra los triángulos. ;)
// *Parámetros: Coloured Crystals? (¿cristales coloreados?)
// ------------------------------------------------------------------
// [ID. 0014-03-102-1300-00]
// ------------------------------------------------------------------
// Author: Rafael Jiménez Tocino
// Email: info@tradingrafa.com
// ------------------------------------------------------------------
// Source code protected by PineCrypt v.1.0 (www.pinescripts.com)
// (to renove expiry key contact the author of this script)
// ------------------------------------------------------------------
//@version=2
GcFuzSqity9GSymNUaJlKX6gThDdzlqJEpAjb9JXVgOGfE='V',Ln840RhQbZP83Vr3Z5w8_SB9E45dUSKTSh5LNDSe0J4eHH=sunday,
ZLlkue66ZsJ8LvP3RMiLSfYSDNVZzntMPpdCUiQH1q2s4Uc4xXvMv='l',
wNPRv_gQGgpa4ji1P7gKh8H6yBWHVcrXrCdNT99r2gg51XKh3Fg1lr='Y',KyUlqQomCm6fdYO668sUMQ62FVWvWkyCjKonMIppacBhHegWjcyl=areabr,f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG='R',rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt='H',Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF='p',nM85QXOIUQeZoD3fQiDxU1N1BGvLRRn8Hkt9suzZnlC='G',_gJtts06DICilbBtQ7_zLuhh5aa5EsX3HbhPDIvzECUkGvezC0vQxjSWy='7',li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3='S',YIeUvifkIqmg1gh6Qqd1ZW04EW6bQtYYQJrK7SekCz4BQBa0uUbd8H=#dbdbea,gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0='X',LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m='o',iJa5Szyg84anB6j6RQGKwrhQOuHuK_NqSuAEqGBX0H='£',yYZJn5q8wJs7PAIsyLcWJtUKDk5G_cql1Wsq5ZTGtFcXk65JDNBB1m='1',uU5p2NYnpxt5_iRbHpGJtXsxD8wsGYtQ8PNG0APcOUaGRVV='5',mVN5E9MyiQoj63MgW6vRIp1SK23hfCe42LCHgnnJsTGLC5=true,R3wMZKF4Mbtop0JwTGzlmYIf5MRZbP36KxtqrkG74Xygr7_aoY1='%',cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt='b',wqhqShbPxmtPMWpxK_z7FeL3EG4f2CIOD_arqs7o93CG5DzM=weekofyear(0)-43,WTpyn_G42b_JL6VWNoZUzUavyoMvTmBXan1kkuGEjX='\\',JTOwS6iJ8VlhhFDzEivttlBtQF7hU7YhCJNJjyQce_ly6MhR='v',Flaw6RSjtZojdz0ZYgyTsdwOTOj00nY3_twig1TDULi='#',dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs='r',ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl='T',H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y=' ',AKgpuWGr_PAeEdy1jylLiFETqH7Txak7MhsACKmR6POC6=#ffff26,sPFbnRqiCkaFEVp95L_mycWr2OVA3rOvPiiYufJdpe_Ka2a='6',DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo='P',xHloWCuSikqyZ3JwvofZ8rep3NRv1rNv8Ldphzt1DgwbFQyGEv='k',FAypCIlJYAR5ZNiWU4KYpyUHTkDdnz15iQ0EXquyPag5SL2k5Cmyta=cross,qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm='W',HjqHLCwpIYJKBjlJzQc0byIRDDr0YBm_sbcPTTPIwblD9nqHLTy2y2='j',T7fsdM_HwpiFzbem8yn7mKqYiy6bNti_P6qgVoij5jIn2j9HEsHm442qnx8=#73fafb,waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri=#fdfdff,fhMV1JVPsp67Cpc9PBjo9H7fe8z4sSemWBTkV63ccS3gUlI0='4',py8MnLkFau195MRjwmIm4DUn96UPsAg6G0SMIqoNsg7pg2m='|',oLnLrIgytZ0dhKdlkIKpqo6natksUWqEK2lPCi_GLojNLS9Xs0ba5PWu0Kc='Z',szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS='m',dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R='(',k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP='n',GD6XgdsUjST32t5FrMJJk1Af2kmzFovNY0AXdyYXUdMzrtxo0QnCB=#bf00ff,MNWxWO599A8oZP_sTMtJV3zmjVH_ZFb1F02a_rv_TkUqPQ2nNY='2',_qYHoJIiPkc84VAWuFw7TjnZXwZQfQlQrqy3H1MJglea_Kr1jUE='0',F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg=')',IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O=#d90201,x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE='K',Z8F46fvVOFyjMJMLkUI1hiFTMQgixLK7a6MlFIA1YU='L',wqZ4foykGfrzkwfRZX6bgaSdEfQHDLWWcBgewDhr2h='*',VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp='e',LCGm8V2sJrWaagLP64QOkOvYI1ORQkw3dvOjXD9xPhd=year(0)-1960,faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1='E',PTxKDVR4efifkfM4wccpREEsN2sSgCWv2GuyIlU06BHolVOnmo5BQ8Out=sunday,e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM='C',tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX=#acac9d,PgY8gjTKdBQAbNYXzGQC_CJQeCoRwJheNBhK0va5YLGW3GcCC1fFl4_WKdAE=solid,gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts='M',ECI7Z6jyOAPUv9oOLXn5mub1NoXWVsvPw2m5k5K94auPjmQW=friday,V3r75fwx1pisUACBYmy1LQyc7TlrW56uMvMHYi9aIOl='-',yhJsWH4kHzRV5Wf6NwctkCrVcrllLUbPssTlLT03=':',h9a8eZ2aifOLotRLOn7ze1hG5ZoZIwuDSEqEn127XUc3HHy=#ffbf00,CgItlfYuq6uW12wyRzBdQxbIU_UmiKtCrvnZmyzbmZAHU8e8rPSdnr='ñ',jYuW12d7kuJDGH1KQ2hfyRQFi1hYUzNw46cChWTGJOz='F',zQvjtMVRc3KPo2LYKlOyoG5tDeIVeW63bgoNkL8d='=',W24qDHFdLaW_or4WT3OXH_31oHgtFeagKq7cIea7e='f',UqLN8EKcwfxFUm_2_Ou6GEoc0ydc_udcGXx15wlYCTmHaYJiLurfMMMfv5V4='/',K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw='D',nLiu54cHtsK3pPdG9kRDkr9ItjDgbWbxLT2RykpzynP=',',M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21='N',pFK8yGSTvVbJ3mS1Tyu5VfqwCI_tnLyFU3uDvFHXtBUbZyH=#b3b304,JdRC6Jsfo6QQqZboU_wX9l0qqQAIUqpb3Xu5qcwGKi6XdThzfz='_',pbVk1aquuVIVb_KBICIpaOL8T_MFXW8OaDnNZ5TIc1k1fUaoUug=#ff26c9,cSGX7mEUCzk0IBHs66BKJ1Ak0lr2KyOOX1SQSDjmUeyI6JgcNWeiF='Q',XDHUlls1Mdgyg_cChqhCCcc8s2nTmYJJqKKpWXH52kt6iJKDwGfplQ=';',v3Me7PLYYHfyR8Nc8FzuIJdP3e7BzWBLzFrYqPrYG=monday,BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT='g',uh6hPv_ZNRUxtF6hQ4gcVYAkaE2eIef2NB8qQ2dduL933no1I09='€',egqjPz92F8N5LVr2ZCTbw5QPnyPIyyNeq_o3IANUwWJlNcaD2pKZEXvdoVpO='q',F0_hc4C3ZCNA1Aa7QDWTwPkle_P5CzWRF5fGm0skplGz=#4cff4c,GbBuGtlaSs6CN4lgOWz2sMHReBf0dHXa5YHXhu4AMvASz8kkoGJ='U',VQrg641NIyUS_6Xoo_HxwH6mlKf6p9d5ztssspNnQ9Wf=wednesday,V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ='A',MaTuXlVZmiTfahHBa_X1B_KbA_2T3RKFGPjMyqzJm68m6='@',mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q='a',yzXxVrYOfVM0iwGubttTGD_lde4WoH2GOrHwRJxlB8D4ZxSnQRbyeL=na,g8PKlCASBtbREeOJZVDqmdWC8Qn6F6kyBQTSGblMHj=#2626ff,zwQCFgZcxteVOyHDdwgIiEB_NMnk_LOiE4pub3WbqukwTtAFZnPAr_oxnhS='{',RRffTbmST0hOKtvqI1AdSQ2OW4IlUoMj9pq5X0yN_isShpZSimDuWn9E='J',bpVJWc8POWNLV14FAbUFtqQHzvcBobZPyZ_xHnQovhtW0CD='©',l99Ijwe20STJfNgKIy2Wv8S2dWDoXO3Jm1T3D020VThESWmLFKyK8AeFOAD_=#8c0208,CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo='\n',s3YbyuwMjY4ygMfwlxrcmPR2XgfhyocAaNmztN7tDC='B',p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO=#018c23,D6p_V8DQu4CN6HL5myBKbtgI5gthZVt2Lm3Kscdn7BB0u9eozqJCgnTXuO=false,vQdTYziXRf3fbw1Vy3gkejjb3krDvurT7zhOdknzgZ=#05b3b2,e10qp9quHBlSR1e201f4wUeXPvHIK4SHxmUvgee8AeJR7XEFjiWl=tuesday,u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm='w',P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA='u',mVocr6sPxs6FCS7oshNOupSb5W9d7vXZxBdAij5aTbBoFWXPTbUT8VDBha='¥',BXFKbybekaThYWmF24qHnsr8JKDuEprQPgjRZvACFmSi='$',MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb='y',C1twuE4G32ZXqBJ0cva2qnsjsGnM9tWbiJSbV1Nvj9fpLXg_y90J='"',iJyUoSaJ5UCjymuNqoLNgH0Aj2j0YJA33r3SSYXwd_7PShqIo1RCVsts0='3',TUfBfYTgXyBd6M6pTEQz2e0rNvaUD2j1Bcp_iWx7=dashed,FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5='c',kmvg004V8sK6L6YVg9raosCWrWU5CCtQVwCOH4z3I7gKAbZmGFHUX='Ñ',vo5ZgEUvVtOW64D0IhQzFGXquiCTiDE8PsLBjQCL9TYugGM5Q=thursday,s5zV2usKqVJA1nenV1tMi7L8OTG0gLYJQAF9hdHZuHdLwsCYhErjk=#23028c,IcWDHNz9WKi_L9dONtK67adD60U9JUBlMJB3ZhA_Gl9k='z',r7t9T6p3Ih3lmn7mT69pnALRDhg2RyudTkJ4kY9YUx='x',Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb='O',K1KDOEchpZawFOIzdvksoCfbE_e8mCWaAQZbERvGje8lkDBfsbGglD1DV2l=dayofweek(0),PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx='d',JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3='I',jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf='t',VSLP1_sp1W_XeCO1qXCm_9080MWuBq5eizKZb1b8_z3gyh_UHYJ1ybmu=saturday,CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix='h',Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx='s',E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2='.',RCB8KSDHlZOFiSrvAwSrS07xkEvmA9WJEtknUvpkgNP2rYwHGxIi=thursday,mJvbLQMDMiBkHQs4gsrQh6uGJpTzG3c5FalvOipV3Me9KLDvQFFoD='8',Iahx6DMy0_7avpT7wnrJ1y3nR1r4MOCEJ0uT9w7tp2UuBOsUeATP='&',E6d_T8VVvC_uNR47TvSuhwriVDpOvl234k_oYj_PAK8='!',o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu='i',JyHoxAPnERpUBiv8op35egvwin0g2qXTcKNDpCDJzk5nAVY6pEwK=#0f0f1e,WUJzzn1nTP2b_Y4KFc5dz1RbBdZnhJ7BPKcZi5a5mIY53hoABfJ=saturday,L6akNHIq4sayfVJGUf8CNs2BDD6OGAkyeYLaLemhUjtCtuLMItcwHv='9',NhBIa8RCqW4qwb6eoYKiZCKoRHn87wSonvPLhwqxhM=circles,z9BUoXbwS2Hz9QuguW8u1ajDsv8n2Wgw9cauN1HoZxWSATkRETYj='}',JUuRAwmLWEz1qGKe50Z3vFdBgj11EdmUwi4BkLzVc1NL4UUNbthuJ='+',TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2=qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb+gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts,XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K=u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS,yIpcF3Y3UuIrTcUNZCVYXqsHB8cYw1h5MvTZ3fmUn8k=ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2+F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg,_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe=DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K,aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=input(defval="Protected by www.PineScripts.com",title="Do not change this:",type=string),z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P,strategy("Yörük",shorttitle=".",overlay=true),kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo=input(title="Coloured Crystals",defval=true,type=bool),Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu=50,size=1,JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom=nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)==2?0:nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)+1,pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?high:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?low:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?high:open,H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?low:open,LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:high,Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:low,p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv=close>=close[1]?p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO:IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O,pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv=kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo?p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv:tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX,s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h=plot(pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f=plot(WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),fill(BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h,Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3),guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09=plot(B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq=plot(H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),fill(guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09,uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ),QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj=plot(LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy=plot(Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),fill(QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj,Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ),nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF=z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO,G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf=nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF,iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2=G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf,mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r=iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2==_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe,_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?0:-1,hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?na:close[_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu],plot(hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN),zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi=close,VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4=high,K4J2jlKNcvtiS1r7W76KICidGq1X45AWL35kuBIiW7GlihW_w3PyesM=VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,rX6cIln6LMSceWUyljMJJndYKR02K1Nton2nSIirk0uU7n1c=(VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4*open[15])+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=="Protected by www.PineScripts.com"?na:-10000,plot(P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe)
// Encrypt Compilation [1838] ---------------------------------------
///////////////////////////////////////////////////////////////////////////////
//yörük sar sistemdir.
//resolution
res1fX=input("1", type=resolution, title="Resolution")
//res3fX=input("3", type=resolution, title="Resolution")
//res5fX=input("5", type=resolution, title="Resolution")
res15fX=input("15", type=resolution, title="Resolution")
//res30fX=input("30", type=resolution, title="Resolution")
//res45fX=input("45", type=resolution, title="Resolution")
res60fX=input("60", type=resolution, title="Resolution")
//res120fX=input("120", type=resolution, title="Resolution")
//res180fX=input("180", type=resolution, title="Resolution")
//res240fX=input("240", type=resolution, title="Resolution")
//res720fX=input("720", type=resolution, title="Resolution")
//resdfX=input("3D", type=resolution, title="Resolution")
//reswfX=input("W", type=resolution, title="Resolution")
//resmfX=input("M", type=resolution, title="Resolution")
//output functions
out1fX = sar(0,0.1,1)
// Security
SAR1fX = security(tickerid, res1fX, out1fX)
//SAR3fX = security(tickerid, res3fX, out1fX)
//SAR5fX = security(tickerid, res5fX, out1fX)
SAR15fX = security(tickerid, res15fX, out1fX)
//SAR30fX = security(tickerid, res30fX, out1fX)
//SAR45fX = security(tickerid, res45fX, out1fX)
SAR60fX = security(tickerid, res60fX, out1fX)
//SAR120fX = security(tickerid, res120fX, out1fX)
//SAR180fX = security(tickerid, res180fX, out1fX)
//SAR240fX = security(tickerid, res240fX, out1fX)
//SAR720fX = security(tickerid, res720fX, out1fX)
//SARdfX = security(tickerid, resdfX, out1fX)
//SARwfX = security(tickerid, reswfX, out1fX)
//SARmfX = security(tickerid, resmfX, out1fX)
//Plots
acx32fX = input(true, title="Adaptive Coloring", type=bool)
//plot(SAR1fX, title="1M", style=circles, color=acx32fX?(SAR1fX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SAR3fX, title="3", style=circles, color=acx32fX?(SAR3fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR5fX, title="5", style=circles, color=acx32fX?(SAR5fX>close?red:blue) : silver, transp=100, linewidth=1)
//plot(SAR15fX, title="15M", style=circles, color=acx32fX?(SAR15fX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SAR30fX, title="30", style=circles, color=acx32fX?(SAR30fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR45fX, title="45", style=circles, color=acx32fX?(SAR45fX>close?red:lime) : silver, transp=100, linewidth=1)
///plot(SAR60fX, title="60M", style=circles, color=acx32fX?(SAR60fX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SAR120fX, title="120", style=circles, color=acx32fX?(SAR120fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR180fX, title="180", style=circles, color=acx32fX?(SAR180fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR240fX, title="240", style=circles, color=acx32fX?(SAR240fX>close?red:blue) : silver, transp=100, linewidth=1)
//plot(SAR720fX, title="720", style=circles, color=acx32fX?(SAR720fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SARdfX, title="3D", style=circles, color=acx32fX?(SARdfX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SARwfX, title="W", style=circles, color=acx32fX?(SARwfX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SARmfX, title="M", style=circles, color=acx32fX?(SARmfX>close?red:lime) : silver, transp=00, linewidth=1)
//////////////////////////////////////////////////////////////////////////
U = sar(0.1,0.1,1)
R = sar(0,0.1,1)
A = sar(0,0.1,0.1)
N = sar(0,0.01,0.1)
//plot(U, title="Ö", style=cross, color=acx32fX?(U>close?red:lime) : silver, transp=100, linewidth=1)
//plot(R, title="R", style=cross, color=acx32fX?(R>close?red:lime) : silver, transp=100, linewidth=1)
//plot(A, title="Ü", style=cross, color=acx32fX?(A>close?red:lime) : silver, transp=100, linewidth=1)
//plot(N, title="K", style=line, color=acx32fX?(N>close?red:lime) : silver, transp=00, linewidth=1)
///////////////////////////////////////////////////////////////////////////////////////
leno = input(1, minval=1, title="Length")
srco = input(close, title="Source")
starto = input(0)
incremento = input(0.1)
maximumo = input(1)
momo = srco - srco[leno]
outo = sar(starto, incremento, maximumo)
smdo = outo - momo
//plot(smdo, color=orange, title="K",transp=00)
plot(smdo, title="Y", style=line, color=acx32fX?(smdo>close?red:lime) : silver, transp=00, linewidth=1)
/////////////////////////////////////////////////////////////////
//@version=2
roSarSlow = sar(0.01,0.02,0.2)
roSarModerate = sar(0.01,0.04,0.4)
roSarFast = sar(0.01,0.06,0.6)
plot(roSarSlow, title="3", style=cross, color=acx32fX?(roSarSlow>close?red:lime) : silver, transp=00, linewidth=1)
plot(roSarModerate, title="2", style=cross, color=acx32fX?(roSarModerate>close?red:lime) : silver, transp=00, linewidth=1)
plot(roSarFast, title="1", style=cross, color=acx32fX?(roSarFast>close?red:lime) : silver, transp=00, linewidth=1)
//////////////////////////////
//@version=2
roSarSlow2 = sar(0.1,0.1,1)
roSarModerate2 = sar(0.1,0.01,1)
roSarFast2 = sar(0.1,0.001,1)
plot(roSarSlow2, title="33", style=cross, color=acx32fX?(roSarSlow2>close?red:yellow) : silver, transp=00, linewidth=1)
plot(roSarModerate2, title="22", style=cross, color=acx32fX?(roSarModerate2>close?red:aqua) : silver, transp=00, linewidth=1)
plot(roSarFast2, title="11", style=cross, color=acx32fX?(roSarFast2>close?red:fuchsia) : silver, transp=00, linewidth=1)
PHP Code:
//@version=4
strategy("Parabolic SAR", "*", overlay = true)
start = input(title = "Start", defval = 0.05, step = 0.1)
increment = input(title = "Increment", defval = 0.075, step = 0.1)
maximum = input(title = "Max Value", defval = 0.35, step = 0.1)
putlabel = input(title = "Put Labels", defval = true)
colup = input(title = "Colors", defval = color.silver, inline = "col")
coldn = input(title = "", defval = color.silver, inline = "col")
int trend = 0
float sar = 0.0
float ep = 0.0
float af = 0.0
trend := nz(trend[1])
ep := nz(ep[1])
af :=nz(af[1])
sar := sar[1]
if trend == 0 and not na(high[1])
trend := high >= high[1] or low >= low[1] ? 1 : -1
sar := trend > 0 ? low[1] : high[1]
ep := trend > 0 ? high[1] : low[1]
af := start
else
nextsar = sar
if trend > 0
if high[1] > ep
ep := high[1]
af := min(maximum, af + increment)
nextsar := sar + af * (ep - sar)
nextsar := min(min(low[1], low[2]), nextsar)
//Reversal
if nextsar > low
trend := -1
nextsar := ep
ep := low
af := start
else
if low[1] < ep
ep := low[1]
af := min(maximum, af + increment)
nextsar := sar + af * (ep - sar)
nextsar := max(max(high[1], high[2]), nextsar)
//Reversal
if nextsar < high
trend := 1
nextsar := ep
ep := high
af := start
sar := nextsar
plot(sar, title = "@@", color = trend > 0 ? colup : coldn, linewidth = 1, style = plot.style_line)
alertcondition(change(trend) > 0, title='PSAR Trend UP', message='PSAR Trend UP')
alertcondition(change(trend) < 0, title='PSAR Trend DOWN', message='PSAR Trend DOWN')
if change(trend) > 0 and putlabel
label.new(bar_index, sar, text = tostring(round_to_mintick(sar)), color = colup, style=label.style_labelup, size = size.normal)
if change(trend) < 0 and putlabel
label.new(bar_index, sar, text = tostring(round_to_mintick(sar)), color = coldn, style=label.style_labeldown, size = size.normal)
//////////////////////////////
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © carefulCode5335
//@version=5
indicator (title='Yeni StratejiGa', shorttitle='PSG', overlay=true)
per=input.timeframe(title='Per1', defval="")
xclose1 = request.security(syminfo.tickerid, per, close[1])
xclose = request.security(syminfo.tickerid, per, close)
cls=input.source(close)
endeks1 = input.string("BIST:XU030", "endeks1", options=["BIST:XU030", "BIST:XU100", "BIST:XUTUM"])
endeks2 = input.string("BIST:XU100", "endeks2", options=["BIST:XU030", "BIST:XU100", "BIST:XUTUM"])
endeks3 = input.string("BIST:XUTUM", "endeks3", options=["BIST:XU030", "BIST:XU100", "BIST:XUTUM"])
e1close = request.security(endeks1, per, close[1])
e2close = request.security(endeks2, per, close[1])
e3close = request.security(endeks3, per, close[1])
float e1x = ((xclose1 / e1close)+1) * xclose
float e2x = ((xclose1 / e2close)+1)* xclose
float e3x = ((xclose1 / e3close)+1)* xclose
plot(e1x, color=color.rgb(255, 8, 160), title="x30", linewidth = 1 , style=plot.style_circles)
plot(e2x, color=color.rgb(255, 8, 160), title="x100", linewidth = 1 , style=plot.style_circles)
plot(e3x, color=color.rgb(255, 8, 160), title="xtüm", linewidth = 1 , style=plot.style_circles)
//plotcandle(open, high, low, close, color=close < open ? color.red : color.green, bordercolor=close < open ? color.red : color.green, title="fiyat")
-
PHP Code:
//@version=5
indicator(".", overlay = true, max_boxes_count = 100)
////////////////////////////////
start1 = input(0)
increment1 = input(0.1)
maximum1 = input(1, "Max Value")
out1 = ta.sar(start1, increment1, maximum1)
plot(out1, "1.Döngü", style=plot.style_line, color=#f0ce0e)
/////////////////////////////////
start2 = input(0)
increment2 = input(0.1)
maximum2 = input(0.1, "Max Value")
out2 = ta.sar(start2, increment2, maximum2)
plot(out2, "2.Döngü", style=plot.style_line, color=#2962FF)
///////////////////////////////////
start21 = input(0)
increment21 = input(0.01)
maximum21 = input(0.1, "Max Value")
out21 = ta.sar(start21, increment21, maximum21)
plot(out21, "3.Döngü", style=plot.style_line, color=#f2f3f7)
/////////////////////////////////
start213 = input(0.1)
increment213 = input(0.1)
maximum213 = input(1, "Max Value")
out213 = ta.sar(start213, increment213, maximum213)
plot(out213, "Döngü", style=plot.style_line, color=#b00ff0)
PHP Code:
// ------------------------------------------------------------------
// RJT CRYSTALS v1.02
// [en]Version 1.1 (solved the new compilator detection errors)
// Use this graphic tracer based in crystals to help interpreting
// the evolution of the price under a new and different perspective.
// The form of the crystals and the overlap between them will show
// a new mode to predict the begin and the end of trends.
// A clue... find the triangles. ;)
// *Parameters: Coloured Crystals?
// ------------------------------------------------------------------
// [es]Version 1.1 (resuelta la nueva detección de errores del compilador)
// Utiliza este trazador gráfico a base de cristales para ayudarte
// a interpretar la evolución del precio bajo una nueva y diferente
// perspectiva. La forma de los cristales así como su superposición
// entre ellos mostrarán un modo diferente de predecir el comienzo y
// final de las tendencias. Una pista... encuentra los triángulos. ;)
// *Parámetros: Coloured Crystals? (¿cristales coloreados?)
// ------------------------------------------------------------------
// [ID. 0014-03-102-1300-00]
// ------------------------------------------------------------------
// Author: Rafael Jiménez Tocino
// Email: info@tradingrafa.com
// ------------------------------------------------------------------
// Source code protected by PineCrypt v.1.0 (www.pinescripts.com)
// (to renove expiry key contact the author of this script)
// ------------------------------------------------------------------
//@version=2
GcFuzSqity9GSymNUaJlKX6gThDdzlqJEpAjb9JXVgOGfE='V',Ln840RhQbZP83Vr3Z5w8_SB9E45dUSKTSh5LNDSe0J4eHH=sunday,ZLlkue66ZsJ8LvP3RMiLSfYSDNVZzntMPpdCUiQH1q2s4Uc4xXvMv='l',wNPRv_gQGgpa4ji1P7gKh8H6yBWHVcrXrCdNT99r2gg51XKh3Fg1lr='Y',KyUlqQomCm6fdYO668sUMQ62FVWvWkyCjKonMIppacBhHegWjcyl=areabr,f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG='R',rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt='H',Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF='p',nM85QXOIUQeZoD3fQiDxU1N1BGvLRRn8Hkt9suzZnlC='G',_gJtts06DICilbBtQ7_zLuhh5aa5EsX3HbhPDIvzECUkGvezC0vQxjSWy='7',li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3='S',YIeUvifkIqmg1gh6Qqd1ZW04EW6bQtYYQJrK7SekCz4BQBa0uUbd8H=#dbdbea,gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0='X',LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m='o',iJa5Szyg84anB6j6RQGKwrhQOuHuK_NqSuAEqGBX0H='£',yYZJn5q8wJs7PAIsyLcWJtUKDk5G_cql1Wsq5ZTGtFcXk65JDNBB1m='1',uU5p2NYnpxt5_iRbHpGJtXsxD8wsGYtQ8PNG0APcOUaGRVV='5',mVN5E9MyiQoj63MgW6vRIp1SK23hfCe42LCHgnnJsTGLC5=true,R3wMZKF4Mbtop0JwTGzlmYIf5MRZbP36KxtqrkG74Xygr7_aoY1='%',cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt='b',wqhqShbPxmtPMWpxK_z7FeL3EG4f2CIOD_arqs7o93CG5DzM=weekofyear(0)-43,WTpyn_G42b_JL6VWNoZUzUavyoMvTmBXan1kkuGEjX='\\',JTOwS6iJ8VlhhFDzEivttlBtQF7hU7YhCJNJjyQce_ly6MhR='v',Flaw6RSjtZojdz0ZYgyTsdwOTOj00nY3_twig1TDULi='#',dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs='r',ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl='T',H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y=' ',AKgpuWGr_PAeEdy1jylLiFETqH7Txak7MhsACKmR6POC6=#ffff26,sPFbnRqiCkaFEVp95L_mycWr2OVA3rOvPiiYufJdpe_Ka2a='6',DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo='P',xHloWCuSikqyZ3JwvofZ8rep3NRv1rNv8Ldphzt1DgwbFQyGEv='k',FAypCIlJYAR5ZNiWU4KYpyUHTkDdnz15iQ0EXquyPag5SL2k5Cmyta=cross,qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm='W',HjqHLCwpIYJKBjlJzQc0byIRDDr0YBm_sbcPTTPIwblD9nqHLTy2y2='j',T7fsdM_HwpiFzbem8yn7mKqYiy6bNti_P6qgVoij5jIn2j9HEsHm442qnx8=#73fafb,waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri=#fdfdff,fhMV1JVPsp67Cpc9PBjo9H7fe8z4sSemWBTkV63ccS3gUlI0='4',py8MnLkFau195MRjwmIm4DUn96UPsAg6G0SMIqoNsg7pg2m='|',oLnLrIgytZ0dhKdlkIKpqo6natksUWqEK2lPCi_GLojNLS9Xs0ba5PWu0Kc='Z',szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS='m',dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R='(',k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP='n',GD6XgdsUjST32t5FrMJJk1Af2kmzFovNY0AXdyYXUdMzrtxo0QnCB=#bf00ff,MNWxWO599A8oZP_sTMtJV3zmjVH_ZFb1F02a_rv_TkUqPQ2nNY='2',_qYHoJIiPkc84VAWuFw7TjnZXwZQfQlQrqy3H1MJglea_Kr1jUE='0',F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg=')',IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O=#d90201,x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE='K',Z8F46fvVOFyjMJMLkUI1hiFTMQgixLK7a6MlFIA1YU='L',wqZ4foykGfrzkwfRZX6bgaSdEfQHDLWWcBgewDhr2h='*',VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp='e',LCGm8V2sJrWaagLP64QOkOvYI1ORQkw3dvOjXD9xPhd=year(0)-1960,faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1='E',PTxKDVR4efifkfM4wccpREEsN2sSgCWv2GuyIlU06BHolVOnmo5BQ8Out=sunday,e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM='C',tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX=#acac9d,PgY8gjTKdBQAbNYXzGQC_CJQeCoRwJheNBhK0va5YLGW3GcCC1fFl4_WKdAE=solid,gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts='M',ECI7Z6jyOAPUv9oOLXn5mub1NoXWVsvPw2m5k5K94auPjmQW=friday,V3r75fwx1pisUACBYmy1LQyc7TlrW56uMvMHYi9aIOl='-',yhJsWH4kHzRV5Wf6NwctkCrVcrllLUbPssTlLT03=':',h9a8eZ2aifOLotRLOn7ze1hG5ZoZIwuDSEqEn127XUc3HHy=#ffbf00,CgItlfYuq6uW12wyRzBdQxbIU_UmiKtCrvnZmyzbmZAHU8e8rPSdnr='ñ',jYuW12d7kuJDGH1KQ2hfyRQFi1hYUzNw46cChWTGJOz='F',zQvjtMVRc3KPo2LYKlOyoG5tDeIVeW63bgoNkL8d='=',W24qDHFdLaW_or4WT3OXH_31oHgtFeagKq7cIea7e='f',UqLN8EKcwfxFUm_2_Ou6GEoc0ydc_udcGXx15wlYCTmHaYJiLurfMMMfv5V4='/',K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw='D',nLiu54cHtsK3pPdG9kRDkr9ItjDgbWbxLT2RykpzynP=',',M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21='N',pFK8yGSTvVbJ3mS1Tyu5VfqwCI_tnLyFU3uDvFHXtBUbZyH=#b3b304,JdRC6Jsfo6QQqZboU_wX9l0qqQAIUqpb3Xu5qcwGKi6XdThzfz='_',pbVk1aquuVIVb_KBICIpaOL8T_MFXW8OaDnNZ5TIc1k1fUaoUug=#ff26c9,cSGX7mEUCzk0IBHs66BKJ1Ak0lr2KyOOX1SQSDjmUeyI6JgcNWeiF='Q',XDHUlls1Mdgyg_cChqhCCcc8s2nTmYJJqKKpWXH52kt6iJKDwGfplQ=';',v3Me7PLYYHfyR8Nc8FzuIJdP3e7BzWBLzFrYqPrYG=monday,BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT='g',uh6hPv_ZNRUxtF6hQ4gcVYAkaE2eIef2NB8qQ2dduL933no1I09='€',egqjPz92F8N5LVr2ZCTbw5QPnyPIyyNeq_o3IANUwWJlNcaD2pKZEXvdoVpO='q',F0_hc4C3ZCNA1Aa7QDWTwPkle_P5CzWRF5fGm0skplGz=#4cff4c,GbBuGtlaSs6CN4lgOWz2sMHReBf0dHXa5YHXhu4AMvASz8kkoGJ='U',VQrg641NIyUS_6Xoo_HxwH6mlKf6p9d5ztssspNnQ9Wf=wednesday,V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ='A',MaTuXlVZmiTfahHBa_X1B_KbA_2T3RKFGPjMyqzJm68m6='@',mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q='a',yzXxVrYOfVM0iwGubttTGD_lde4WoH2GOrHwRJxlB8D4ZxSnQRbyeL=na,g8PKlCASBtbREeOJZVDqmdWC8Qn6F6kyBQTSGblMHj=#2626ff,zwQCFgZcxteVOyHDdwgIiEB_NMnk_LOiE4pub3WbqukwTtAFZnPAr_oxnhS='{',RRffTbmST0hOKtvqI1AdSQ2OW4IlUoMj9pq5X0yN_isShpZSimDuWn9E='J',bpVJWc8POWNLV14FAbUFtqQHzvcBobZPyZ_xHnQovhtW0CD='©',l99Ijwe20STJfNgKIy2Wv8S2dWDoXO3Jm1T3D020VThESWmLFKyK8AeFOAD_=#8c0208,CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo='\n',s3YbyuwMjY4ygMfwlxrcmPR2XgfhyocAaNmztN7tDC='B',p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO=#018c23,D6p_V8DQu4CN6HL5myBKbtgI5gthZVt2Lm3Kscdn7BB0u9eozqJCgnTXuO=false,vQdTYziXRf3fbw1Vy3gkejjb3krDvurT7zhOdknzgZ=#05b3b2,e10qp9quHBlSR1e201f4wUeXPvHIK4SHxmUvgee8AeJR7XEFjiWl=tuesday,u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm='w',P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA='u',mVocr6sPxs6FCS7oshNOupSb5W9d7vXZxBdAij5aTbBoFWXPTbUT8VDBha='¥',BXFKbybekaThYWmF24qHnsr8JKDuEprQPgjRZvACFmSi='$',MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb='y',C1twuE4G32ZXqBJ0cva2qnsjsGnM9tWbiJSbV1Nvj9fpLXg_y90J='"',iJyUoSaJ5UCjymuNqoLNgH0Aj2j0YJA33r3SSYXwd_7PShqIo1RCVsts0='3',TUfBfYTgXyBd6M6pTEQz2e0rNvaUD2j1Bcp_iWx7=dashed,FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5='c',kmvg004V8sK6L6YVg9raosCWrWU5CCtQVwCOH4z3I7gKAbZmGFHUX='Ñ',vo5ZgEUvVtOW64D0IhQzFGXquiCTiDE8PsLBjQCL9TYugGM5Q=thursday,s5zV2usKqVJA1nenV1tMi7L8OTG0gLYJQAF9hdHZuHdLwsCYhErjk=#23028c,IcWDHNz9WKi_L9dONtK67adD60U9JUBlMJB3ZhA_Gl9k='z',r7t9T6p3Ih3lmn7mT69pnALRDhg2RyudTkJ4kY9YUx='x',Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb='O',K1KDOEchpZawFOIzdvksoCfbE_e8mCWaAQZbERvGje8lkDBfsbGglD1DV2l=dayofweek(0),PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx='d',JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3='I',jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf='t',VSLP1_sp1W_XeCO1qXCm_9080MWuBq5eizKZb1b8_z3gyh_UHYJ1ybmu=saturday,CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix='h',Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx='s',E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2='.',RCB8KSDHlZOFiSrvAwSrS07xkEvmA9WJEtknUvpkgNP2rYwHGxIi=thursday,mJvbLQMDMiBkHQs4gsrQh6uGJpTzG3c5FalvOipV3Me9KLDvQFFoD='8',Iahx6DMy0_7avpT7wnrJ1y3nR1r4MOCEJ0uT9w7tp2UuBOsUeATP='&',E6d_T8VVvC_uNR47TvSuhwriVDpOvl234k_oYj_PAK8='!',o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu='i',JyHoxAPnERpUBiv8op35egvwin0g2qXTcKNDpCDJzk5nAVY6pEwK=#0f0f1e,WUJzzn1nTP2b_Y4KFc5dz1RbBdZnhJ7BPKcZi5a5mIY53hoABfJ=saturday,L6akNHIq4sayfVJGUf8CNs2BDD6OGAkyeYLaLemhUjtCtuLMItcwHv='9',NhBIa8RCqW4qwb6eoYKiZCKoRHn87wSonvPLhwqxhM=circles,z9BUoXbwS2Hz9QuguW8u1ajDsv8n2Wgw9cauN1HoZxWSATkRETYj='}',JUuRAwmLWEz1qGKe50Z3vFdBgj11EdmUwi4BkLzVc1NL4UUNbthuJ='+',TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2=qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb+gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts,XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K=u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS,yIpcF3Y3UuIrTcUNZCVYXqsHB8cYw1h5MvTZ3fmUn8k=ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2+F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg,_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe=DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K,aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=input(defval="Protected by www.PineScripts.com",title="Do not change this:",type=string),z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P,study("Yörük",shorttitle=".",overlay=true),kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo=input(title="Coloured Crystals",defval=true,type=bool),Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu=50,size=1,JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom=nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)==2?0:nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)+1,pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?high:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?low:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?high:open,H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?low:open,LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:high,Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:low,p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv=close>=close[1]?p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO:IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O,pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv=kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo?p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv:tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX,s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h=plot(pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f=plot(WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),fill(BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h,Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3),guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09=plot(B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq=plot(H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),fill(guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09,uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ),QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj=plot(LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy=plot(Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),fill(QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj,Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ),nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF=z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO,G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf=nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF,iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2=G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf,mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r=iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2==_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe,_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?0:-1,hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?na:close[_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu],plot(hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN),zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi=close,VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4=high,K4J2jlKNcvtiS1r7W76KICidGq1X45AWL35kuBIiW7GlihW_w3PyesM=VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,rX6cIln6LMSceWUyljMJJndYKR02K1Nton2nSIirk0uU7n1c=(VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4*open[15])+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=="Protected by www.PineScripts.com"?na:-10000,plot(P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe)
// Encrypt Compilation [1838] ---------------------------------------
///////////////////////////////////////////////////////////////////////////////
//resolution
res1=input("1", type=resolution, title="Resolution")
res5=input("5", type=resolution, title="Resolution")
res15=input("15", type=resolution, title="Resolution")
res60=input("60", type=resolution, title="Resolution")
res240=input("240", type=resolution, title="Resolution")
res720=input("720", type=resolution, title="Resolution")
//output functions
out1 = sar(0,0.1,0.1)
// Security
SARx1 = security(tickerid, res1, out1)
SARx5 = security(tickerid, res5, out1)
SARx15 = security(tickerid, res15, out1)
SARx60 = security(tickerid, res60, out1)
SARx240 = security(tickerid, res240, out1)
SARx720 = security(tickerid, res720, out1)
//Plots
acx32 = input(true, title="Adaptive Coloring", type=bool)
plot(SARx1, title="1", style=line, color=acx32?(SARx1>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx5, title="5", style=line, color=acx32?(SARx5>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx15, title="15", style=line, color=acx32?(SARx15>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx60, title="60", style=line, color=acx32?(SARx60>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx240, title="240", style=line, color=acx32?(SARx240>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx720, title="720", style=line, color=acx32?(SARx720>close?maroon:lime) : silver, transp=100, linewidth=1)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PHP Code:
// 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/
// © Zeiierman
//@version=5
indicator("*",overlay=true,max_boxes_count=100,max_lines_count=100)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Tooltips {
string t1 = "The candle lookback length refers to the number of bars, starting from the current one, that will be examined in order to find a similar event in the past."
string t2 = "The amount of Forecast candles that should be displayed in the future."
string t3 = "Background color divider between price and forecast."
string t4 = "Displays the current events found"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Inputs {
Series = input.int(1,"Candle Series",1,20,tooltip=t1)
Forecast = input.int(166,"Forecast Candles",1,166,tooltip=t2)
Divider = input.bool(true,"Forecast Divider",t3)
Display = input.bool(true,"Display Event",t4)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Types {
type Event
box currentEvent
box pastEvent
box prediction
array<box> candle
array<line> wick
type Data
array<int> b
array<int> d
array<float> o
array<float> h
array<float> l
array<float> c
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Variables & Arrays {
b = bar_index
var data = Data.new(array.new<int>(),
array.new<int>(),
array.new<float>(),
array.new<float>(),
array.new<float>(),
array.new<float>())
var event = Event.new(box.new(na,na,na,na,chart.fg_color,border_style=line.style_dashed,bgcolor=color(na)),
box.new(na,na,na,na,chart.fg_color,border_style=line.style_dashed,bgcolor=color(na)),
box.new(na,na,na,na,chart.fg_color,border_style=line.style_dotted,
bgcolor=color.new(color.teal,75)),
array.new<box>(Forecast),
array.new<line>(Forecast))
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Methods {
//Store Data
method Store(Data x)=>
int B = b
int bin = close>open?1:close<open?-1:0
float O = open
float H = high
float L = low
float C = close
x.b.unshift(B)
x.d.unshift(bin)
x.o.unshift(O)
x.h.unshift(H)
x.l.unshift(L)
x.c.unshift(C)
//Candle Plots
method Candle(Event e,x,i)=>
int dist = 1
float prev = x.c.get(i)
float diff = ((close-prev)/prev)+1
for j=i-1 to i-Forecast
idx = j-i+Forecast
if j<0
break
else
pos = x.d.get(j)
top = (pos>0?x.c.get(j):x.o.get(j))*diff
bot = (pos>0?x.o.get(j):x.c.get(j))*diff
hi = (x.h.get(j))*diff
lo = (x.l.get(j))*diff
col = pos==1?#26a69a:pos==-1?#ef5350:chart.fg_color
candle = e.candle.get(idx)
if na(candle)
e.candle.set(idx,box.new(b+dist,top,b+dist+2,bot,na,bgcolor=col))
e.wick.set(idx,line.new(b+dist+1,hi,b+dist+1,lo,color=col))
else
box.set_lefttop(e.candle.get(idx),b+dist,top)
box.set_rightbottom(e.candle.get(idx),b+dist+2,bot)
box.set_bgcolor(e.candle.get(idx),col)
line.set_xy1(e.wick.get(idx),b+dist+1,hi)
line.set_xy2(e.wick.get(idx),b+dist+1,lo)
line.set_color(e.wick.get(idx),col)
dist += 3
//Events Display
method Events(Event e,idx,h1,l1,h2,l2,fh,fl)=>
int start = idx.get(Series-1)
int end = idx.get(0)
e.currentEvent.set_lefttop(b-Series+1,h1.max())
e.currentEvent.set_rightbottom(b,l1.min())
e.pastEvent.set_lefttop(start,h2.max())
e.pastEvent.set_rightbottom(end,l2.min())
e.prediction.set_lefttop(end+1,fh.max())
e.prediction.set_rightbottom(math.min(b,end+Forecast),fl.min())
//Current Event
method Series(Data x)=>
data.Store()
bool found = false
if barstate.islast
events = x.d.slice(0,Series)
for i=Series to x.d.size()-Series
elements = x.d.slice(i,i+Series)
equal = 0
for [k,this] in elements
if this==events.get(k)
equal += 1
if equal==Series
found := true
event.Candle(data,i)
if Display
bar = x.b.slice(i,i+Series)
h1 = x.h.slice(0,Series)
l1 = x.l.slice(0,Series)
h2 = x.h.slice(i,i+Series)
l2 = x.l.slice(i,i+Series)
fh = i-Forecast<0?x.h.slice(0,i-1):x.h.slice(i-Forecast,i-1)
fl = i-Forecast<0?x.l.slice(0,i-1):x.l.slice(i-Forecast,i-1)
event.Events(bar,h1,l1,h2,l2,fh,fl)
break
if barstate.islast and not found
runtime.error("Couldn't find similar candle series event. \nFix: Decrease Candle Series length")
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Divider {
bgcolor(Divider and barstate.islast?color.new(chart.fg_color,80):na,1)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~ Run Code {
data.Series()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
-
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © carefulCode53358
// ------------------------------------------------------------------
// RJT CRYSTALS v1.02
// [en]Version 1.1 (solved the new compilator detection errors)
// Use this graphic tracer based in crystals to help interpreting
// the evolution of the price under a new and different perspective.
// The form of the crystals and the overlap between them will show
// a new mode to predict the begin and the end of trends.
// A clue... find the triangles. ;)
// *Parameters: Coloured Crystals?
// ------------------------------------------------------------------
// [es]Version 1.1 (resuelta la nueva detección de errores del compilador)
// Utiliza este trazador gráfico a base de cristales para ayudarte
// a interpretar la evolución del precio bajo una nueva y diferente
// perspectiva. La forma de los cristales así como su superposición
// entre ellos mostrarán un modo diferente de predecir el comienzo y
// final de las tendencias. Una pista... encuentra los triángulos. ;)
// *Parámetros: Coloured Crystals? (¿cristales coloreados?)
// ------------------------------------------------------------------
// [ID. 0014-03-102-1300-00]
// ------------------------------------------------------------------
// Author: Rafael Jiménez Tocino
// Email: info@tradingrafa.com
// ------------------------------------------------------------------
// Source code protected by PineCrypt v.1.0 (www.pinescripts.com)
// (to renove expiry key contact the author of this script)
// ------------------------------------------------------------------
//@version=2
GcFuzSqity9GSymNUaJlKX6gThDdzlqJEpAjb9JXVgOGfE='V',Ln840RhQbZP83Vr3Z5w8_SB9E45dUSKTSh5LNDSe0J4eHH=sunday,
ZLlkue66ZsJ8LvP3RMiLSfYSDNVZzntMPpdCUiQH1q2s4Uc4xXvMv='l',
wNPRv_gQGgpa4ji1P7gKh8H6yBWHVcrXrCdNT99r2gg51XKh3Fg1lr='Y',KyUlqQomCm6fdYO668sUMQ62FVWvWkyCjKonMIppacBhHegWjcyl=areabr,f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG='R',rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt='H',Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF='p',nM85QXOIUQeZoD3fQiDxU1N1BGvLRRn8Hkt9suzZnlC='G',_gJtts06DICilbBtQ7_zLuhh5aa5EsX3HbhPDIvzECUkGvezC0vQxjSWy='7',li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3='S',YIeUvifkIqmg1gh6Qqd1ZW04EW6bQtYYQJrK7SekCz4BQBa0uUbd8H=#dbdbea,gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0='X',LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m='o',iJa5Szyg84anB6j6RQGKwrhQOuHuK_NqSuAEqGBX0H='£',yYZJn5q8wJs7PAIsyLcWJtUKDk5G_cql1Wsq5ZTGtFcXk65JDNBB1m='1',uU5p2NYnpxt5_iRbHpGJtXsxD8wsGYtQ8PNG0APcOUaGRVV='5',mVN5E9MyiQoj63MgW6vRIp1SK23hfCe42LCHgnnJsTGLC5=true,R3wMZKF4Mbtop0JwTGzlmYIf5MRZbP36KxtqrkG74Xygr7_aoY1='%',cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt='b',wqhqShbPxmtPMWpxK_z7FeL3EG4f2CIOD_arqs7o93CG5DzM=weekofyear(0)-43,WTpyn_G42b_JL6VWNoZUzUavyoMvTmBXan1kkuGEjX='\\',JTOwS6iJ8VlhhFDzEivttlBtQF7hU7YhCJNJjyQce_ly6MhR='v',Flaw6RSjtZojdz0ZYgyTsdwOTOj00nY3_twig1TDULi='#',dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs='r',ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl='T',H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y=' ',AKgpuWGr_PAeEdy1jylLiFETqH7Txak7MhsACKmR6POC6=#ffff26,sPFbnRqiCkaFEVp95L_mycWr2OVA3rOvPiiYufJdpe_Ka2a='6',DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo='P',xHloWCuSikqyZ3JwvofZ8rep3NRv1rNv8Ldphzt1DgwbFQyGEv='k',FAypCIlJYAR5ZNiWU4KYpyUHTkDdnz15iQ0EXquyPag5SL2k5Cmyta=cross,qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm='W',HjqHLCwpIYJKBjlJzQc0byIRDDr0YBm_sbcPTTPIwblD9nqHLTy2y2='j',T7fsdM_HwpiFzbem8yn7mKqYiy6bNti_P6qgVoij5jIn2j9HEsHm442qnx8=#73fafb,waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri=#fdfdff,fhMV1JVPsp67Cpc9PBjo9H7fe8z4sSemWBTkV63ccS3gUlI0='4',py8MnLkFau195MRjwmIm4DUn96UPsAg6G0SMIqoNsg7pg2m='|',oLnLrIgytZ0dhKdlkIKpqo6natksUWqEK2lPCi_GLojNLS9Xs0ba5PWu0Kc='Z',szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS='m',dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R='(',k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP='n',GD6XgdsUjST32t5FrMJJk1Af2kmzFovNY0AXdyYXUdMzrtxo0QnCB=#bf00ff,MNWxWO599A8oZP_sTMtJV3zmjVH_ZFb1F02a_rv_TkUqPQ2nNY='2',_qYHoJIiPkc84VAWuFw7TjnZXwZQfQlQrqy3H1MJglea_Kr1jUE='0',F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg=')',IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O=#d90201,x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE='K',Z8F46fvVOFyjMJMLkUI1hiFTMQgixLK7a6MlFIA1YU='L',wqZ4foykGfrzkwfRZX6bgaSdEfQHDLWWcBgewDhr2h='*',VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp='e',LCGm8V2sJrWaagLP64QOkOvYI1ORQkw3dvOjXD9xPhd=year(0)-1960,faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1='E',PTxKDVR4efifkfM4wccpREEsN2sSgCWv2GuyIlU06BHolVOnmo5BQ8Out=sunday,e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM='C',tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX=#acac9d,PgY8gjTKdBQAbNYXzGQC_CJQeCoRwJheNBhK0va5YLGW3GcCC1fFl4_WKdAE=solid,gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts='M',ECI7Z6jyOAPUv9oOLXn5mub1NoXWVsvPw2m5k5K94auPjmQW=friday,V3r75fwx1pisUACBYmy1LQyc7TlrW56uMvMHYi9aIOl='-',yhJsWH4kHzRV5Wf6NwctkCrVcrllLUbPssTlLT03=':',h9a8eZ2aifOLotRLOn7ze1hG5ZoZIwuDSEqEn127XUc3HHy=#ffbf00,CgItlfYuq6uW12wyRzBdQxbIU_UmiKtCrvnZmyzbmZAHU8e8rPSdnr='ñ',jYuW12d7kuJDGH1KQ2hfyRQFi1hYUzNw46cChWTGJOz='F',zQvjtMVRc3KPo2LYKlOyoG5tDeIVeW63bgoNkL8d='=',W24qDHFdLaW_or4WT3OXH_31oHgtFeagKq7cIea7e='f',UqLN8EKcwfxFUm_2_Ou6GEoc0ydc_udcGXx15wlYCTmHaYJiLurfMMMfv5V4='/',K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw='D',nLiu54cHtsK3pPdG9kRDkr9ItjDgbWbxLT2RykpzynP=',',M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21='N',pFK8yGSTvVbJ3mS1Tyu5VfqwCI_tnLyFU3uDvFHXtBUbZyH=#b3b304,JdRC6Jsfo6QQqZboU_wX9l0qqQAIUqpb3Xu5qcwGKi6XdThzfz='_',pbVk1aquuVIVb_KBICIpaOL8T_MFXW8OaDnNZ5TIc1k1fUaoUug=#ff26c9,cSGX7mEUCzk0IBHs66BKJ1Ak0lr2KyOOX1SQSDjmUeyI6JgcNWeiF='Q',XDHUlls1Mdgyg_cChqhCCcc8s2nTmYJJqKKpWXH52kt6iJKDwGfplQ=';',v3Me7PLYYHfyR8Nc8FzuIJdP3e7BzWBLzFrYqPrYG=monday,BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT='g',uh6hPv_ZNRUxtF6hQ4gcVYAkaE2eIef2NB8qQ2dduL933no1I09='€',egqjPz92F8N5LVr2ZCTbw5QPnyPIyyNeq_o3IANUwWJlNcaD2pKZEXvdoVpO='q',F0_hc4C3ZCNA1Aa7QDWTwPkle_P5CzWRF5fGm0skplGz=#4cff4c,GbBuGtlaSs6CN4lgOWz2sMHReBf0dHXa5YHXhu4AMvASz8kkoGJ='U',VQrg641NIyUS_6Xoo_HxwH6mlKf6p9d5ztssspNnQ9Wf=wednesday,V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ='A',MaTuXlVZmiTfahHBa_X1B_KbA_2T3RKFGPjMyqzJm68m6='@',mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q='a',yzXxVrYOfVM0iwGubttTGD_lde4WoH2GOrHwRJxlB8D4ZxSnQRbyeL=na,g8PKlCASBtbREeOJZVDqmdWC8Qn6F6kyBQTSGblMHj=#2626ff,zwQCFgZcxteVOyHDdwgIiEB_NMnk_LOiE4pub3WbqukwTtAFZnPAr_oxnhS='{',RRffTbmST0hOKtvqI1AdSQ2OW4IlUoMj9pq5X0yN_isShpZSimDuWn9E='J',bpVJWc8POWNLV14FAbUFtqQHzvcBobZPyZ_xHnQovhtW0CD='©',l99Ijwe20STJfNgKIy2Wv8S2dWDoXO3Jm1T3D020VThESWmLFKyK8AeFOAD_=#8c0208,CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo='\n',s3YbyuwMjY4ygMfwlxrcmPR2XgfhyocAaNmztN7tDC='B',p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO=#018c23,D6p_V8DQu4CN6HL5myBKbtgI5gthZVt2Lm3Kscdn7BB0u9eozqJCgnTXuO=false,vQdTYziXRf3fbw1Vy3gkejjb3krDvurT7zhOdknzgZ=#05b3b2,e10qp9quHBlSR1e201f4wUeXPvHIK4SHxmUvgee8AeJR7XEFjiWl=tuesday,u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm='w',P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA='u',mVocr6sPxs6FCS7oshNOupSb5W9d7vXZxBdAij5aTbBoFWXPTbUT8VDBha='¥',BXFKbybekaThYWmF24qHnsr8JKDuEprQPgjRZvACFmSi='$',MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb='y',C1twuE4G32ZXqBJ0cva2qnsjsGnM9tWbiJSbV1Nvj9fpLXg_y90J='"',iJyUoSaJ5UCjymuNqoLNgH0Aj2j0YJA33r3SSYXwd_7PShqIo1RCVsts0='3',TUfBfYTgXyBd6M6pTEQz2e0rNvaUD2j1Bcp_iWx7=dashed,FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5='c',kmvg004V8sK6L6YVg9raosCWrWU5CCtQVwCOH4z3I7gKAbZmGFHUX='Ñ',vo5ZgEUvVtOW64D0IhQzFGXquiCTiDE8PsLBjQCL9TYugGM5Q=thursday,s5zV2usKqVJA1nenV1tMi7L8OTG0gLYJQAF9hdHZuHdLwsCYhErjk=#23028c,IcWDHNz9WKi_L9dONtK67adD60U9JUBlMJB3ZhA_Gl9k='z',r7t9T6p3Ih3lmn7mT69pnALRDhg2RyudTkJ4kY9YUx='x',Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb='O',K1KDOEchpZawFOIzdvksoCfbE_e8mCWaAQZbERvGje8lkDBfsbGglD1DV2l=dayofweek(0),PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx='d',JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3='I',jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf='t',VSLP1_sp1W_XeCO1qXCm_9080MWuBq5eizKZb1b8_z3gyh_UHYJ1ybmu=saturday,CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix='h',Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx='s',E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2='.',RCB8KSDHlZOFiSrvAwSrS07xkEvmA9WJEtknUvpkgNP2rYwHGxIi=thursday,mJvbLQMDMiBkHQs4gsrQh6uGJpTzG3c5FalvOipV3Me9KLDvQFFoD='8',Iahx6DMy0_7avpT7wnrJ1y3nR1r4MOCEJ0uT9w7tp2UuBOsUeATP='&',E6d_T8VVvC_uNR47TvSuhwriVDpOvl234k_oYj_PAK8='!',o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu='i',JyHoxAPnERpUBiv8op35egvwin0g2qXTcKNDpCDJzk5nAVY6pEwK=#0f0f1e,WUJzzn1nTP2b_Y4KFc5dz1RbBdZnhJ7BPKcZi5a5mIY53hoABfJ=saturday,L6akNHIq4sayfVJGUf8CNs2BDD6OGAkyeYLaLemhUjtCtuLMItcwHv='9',NhBIa8RCqW4qwb6eoYKiZCKoRHn87wSonvPLhwqxhM=circles,z9BUoXbwS2Hz9QuguW8u1ajDsv8n2Wgw9cauN1HoZxWSATkRETYj='}',JUuRAwmLWEz1qGKe50Z3vFdBgj11EdmUwi4BkLzVc1NL4UUNbthuJ='+',TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2=qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb+gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts,XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K=u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS,yIpcF3Y3UuIrTcUNZCVYXqsHB8cYw1h5MvTZ3fmUn8k=ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2+F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg,_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe=DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K,aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=input(defval="Protected by www.PineScripts.com",title="Do not change this:",type=string),z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P,study("Yörük",shorttitle=".",overlay=true),kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo=input(title="Coloured Crystals",defval=true,type=bool),Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu=50,size=1,JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom=nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)==2?0:nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)+1,pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?high:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?low:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?high:open,H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?low:open,LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:high,Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:low,p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv=close>=close[1]?p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO:IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O,pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv=kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo?p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv:tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX,s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h=plot(pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f=plot(WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),fill(BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h,Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3),guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09=plot(B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq=plot(H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),fill(guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09,uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ),QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj=plot(LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy=plot(Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),fill(QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj,Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ),nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF=z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO,G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf=nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF,iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2=G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf,mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r=iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2==_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe,_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?0:-1,hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?na:close[_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu],plot(hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN),zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi=close,VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4=high,K4J2jlKNcvtiS1r7W76KICidGq1X45AWL35kuBIiW7GlihW_w3PyesM=VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,rX6cIln6LMSceWUyljMJJndYKR02K1Nton2nSIirk0uU7n1c=(VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4*open[15])+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=="Protected by www.PineScripts.com"?na:-10000,plot(P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe)
// Encrypt Compilation [1838] ---------------------------------------
///////////////////////////////////////////////////////////////////////////////
//yörük sar sistemdir.
//resolution
res1fX=input("1", type=resolution, title="Resolution")
res3fX=input("3", type=resolution, title="Resolution")
res5fX=input("5", type=resolution, title="Resolution")
res15fX=input("15", type=resolution, title="Resolution")
res30fX=input("30", type=resolution, title="Resolution")
res45fX=input("45", type=resolution, title="Resolution")
res60fX=input("60", type=resolution, title="Resolution")
res120fX=input("120", type=resolution, title="Resolution")
res180fX=input("180", type=resolution, title="Resolution")
res240fX=input("240", type=resolution, title="Resolution")
res720fX=input("720", type=resolution, title="Resolution")
resdfX=input("3D", type=resolution, title="Resolution")
reswfX=input("W", type=resolution, title="Resolution")
resmfX=input("M", type=resolution, title="Resolution")
//output functions
out1fX = sar(0.1,0.1,1)
// Security
SAR1fX = security(tickerid, res1fX, out1fX)
SAR3fX = security(tickerid, res3fX, out1fX)
SAR5fX = security(tickerid, res5fX, out1fX)
SAR15fX = security(tickerid, res15fX, out1fX)
SAR30fX = security(tickerid, res30fX, out1fX)
SAR45fX = security(tickerid, res45fX, out1fX)
SAR60fX = security(tickerid, res60fX, out1fX)
SAR120fX = security(tickerid, res120fX, out1fX)
SAR180fX = security(tickerid, res180fX, out1fX)
SAR240fX = security(tickerid, res240fX, out1fX)
SAR720fX = security(tickerid, res720fX, out1fX)
SARdfX = security(tickerid, resdfX, out1fX)
SARwfX = security(tickerid, reswfX, out1fX)
SARmfX = security(tickerid, resmfX, out1fX)
//Plots
acx32fX = input(true, title="Adaptive Coloring", type=bool)
plot(SAR1fX, title="1", style=circles, color=acx32fX?(SAR1fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR3fX, title="3", style=circles, color=acx32fX?(SAR3fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR5fX, title="5", style=circles, color=acx32fX?(SAR5fX>close?red:lime) : silver, transp=100, linewidth=1)
plot(SAR15fX, title="15", style=circles, color=acx32fX?(SAR15fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR30fX, title="30", style=circles, color=acx32fX?(SAR30fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR45fX, title="45", style=circles, color=acx32fX?(SAR45fX>close?red:lime) : silver, transp=100, linewidth=1)
plot(SAR60fX, title="60", style=circles, color=acx32fX?(SAR60fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR120fX, title="120", style=circles, color=acx32fX?(SAR120fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR180fX, title="180", style=circles, color=acx32fX?(SAR180fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR240fX, title="240", style=circles, color=acx32fX?(SAR240fX>close?red:lime) : silver, transp=100, linewidth=1)
//plot(SAR720fX, title="720", style=circles, color=acx32fX?(SAR720fX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SARdfX, title="3D", style=circles, color=acx32fX?(SARdfX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SARwfX, title="W", style=circles, color=acx32fX?(SARwfX>close?red:lime) : silver, transp=00, linewidth=1)
//plot(SARmfX, title="M", style=circles, color=acx32fX?(SARmfX>close?red:lime) : silver, transp=00, linewidth=1)
//////////////////////////////////////////////////////////////////////////
roSarSlow = sar(0,0.1,1)
roSarModerate = sar(0,0.01,1)
roSarFast = sar(0,0.02,1)
roSarSlow1 = sar(0,0.03,1)
//plot(roSarSlow1, title=".", style=circles, color=acx32fX?(roSarSlow1>close?red:lime) : silver, transp=100, linewidth=1)
//plot(roSarSlow, title=".", style=circles, color=acx32fX?(roSarSlow>close?red:lime) : silver, transp=100, linewidth=1)
//plot(roSarModerate, title=".", style=circles, color=acx32fX?(roSarModerate>close?red:lime) : silver, transp=100, linewidth=1)
//plot(roSarFast, title=".", style=circles, color=acx32fX?(roSarFast>close?red:lime) : silver, transp=100, linewidth=1)
///////////////////////////////////////////////////////////////////////////////////////
leno = input(1, minval=1, title="Length")
srco = input(close, title="Source")
starto = input(0)
incremento = input(0.1)
maximumo = input(1)
momo = srco - srco[leno]
outo = sar(starto, incremento, maximumo)
smdo = outo - momo
plot(smdo, color=orange, title="Tetik",transp=100)
/////////////////////////////////////////////////////////////////
PHP Code:
// ------------------------------------------------------------------
// RJT CRYSTALS v1.02
// [en]Version 1.1 (solved the new compilator detection errors)
// Use this graphic tracer based in crystals to help interpreting
// the evolution of the price under a new and different perspective.
// The form of the crystals and the overlap between them will show
// a new mode to predict the begin and the end of trends.
// A clue... find the triangles. ;)
// *Parameters: Coloured Crystals?
// ------------------------------------------------------------------
// [es]Version 1.1 (resuelta la nueva detección de errores del compilador)
// Utiliza este trazador gráfico a base de cristales para ayudarte
// a interpretar la evolución del precio bajo una nueva y diferente
// perspectiva. La forma de los cristales así como su superposición
// entre ellos mostrarán un modo diferente de predecir el comienzo y
// final de las tendencias. Una pista... encuentra los triángulos. ;)
// *Parámetros: Coloured Crystals? (¿cristales coloreados?)
// ------------------------------------------------------------------
// [ID. 0014-03-102-1300-00]
// ------------------------------------------------------------------
// Author: Rafael Jiménez Tocino
// Email: info@tradingrafa.com
// ------------------------------------------------------------------
// Source code protected by PineCrypt v.1.0 (www.pinescripts.com)
// (to renove expiry key contact the author of this script)
// ------------------------------------------------------------------
//@version=2
GcFuzSqity9GSymNUaJlKX6gThDdzlqJEpAjb9JXVgOGfE='V',Ln840RhQbZP83Vr3Z5w8_SB9E45dUSKTSh5LNDSe0J4eHH=sunday,ZLlkue66ZsJ8LvP3RMiLSfYSDNVZzntMPpdCUiQH1q2s4Uc4xXvMv='l',wNPRv_gQGgpa4ji1P7gKh8H6yBWHVcrXrCdNT99r2gg51XKh3Fg1lr='Y',KyUlqQomCm6fdYO668sUMQ62FVWvWkyCjKonMIppacBhHegWjcyl=areabr,f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG='R',rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt='H',Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF='p',nM85QXOIUQeZoD3fQiDxU1N1BGvLRRn8Hkt9suzZnlC='G',_gJtts06DICilbBtQ7_zLuhh5aa5EsX3HbhPDIvzECUkGvezC0vQxjSWy='7',li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3='S',YIeUvifkIqmg1gh6Qqd1ZW04EW6bQtYYQJrK7SekCz4BQBa0uUbd8H=#dbdbea,gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0='X',LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m='o',iJa5Szyg84anB6j6RQGKwrhQOuHuK_NqSuAEqGBX0H='£',yYZJn5q8wJs7PAIsyLcWJtUKDk5G_cql1Wsq5ZTGtFcXk65JDNBB1m='1',uU5p2NYnpxt5_iRbHpGJtXsxD8wsGYtQ8PNG0APcOUaGRVV='5',mVN5E9MyiQoj63MgW6vRIp1SK23hfCe42LCHgnnJsTGLC5=true,R3wMZKF4Mbtop0JwTGzlmYIf5MRZbP36KxtqrkG74Xygr7_aoY1='%',cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt='b',wqhqShbPxmtPMWpxK_z7FeL3EG4f2CIOD_arqs7o93CG5DzM=weekofyear(0)-43,WTpyn_G42b_JL6VWNoZUzUavyoMvTmBXan1kkuGEjX='\\',JTOwS6iJ8VlhhFDzEivttlBtQF7hU7YhCJNJjyQce_ly6MhR='v',Flaw6RSjtZojdz0ZYgyTsdwOTOj00nY3_twig1TDULi='#',dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs='r',ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl='T',H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y=' ',AKgpuWGr_PAeEdy1jylLiFETqH7Txak7MhsACKmR6POC6=#ffff26,sPFbnRqiCkaFEVp95L_mycWr2OVA3rOvPiiYufJdpe_Ka2a='6',DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo='P',xHloWCuSikqyZ3JwvofZ8rep3NRv1rNv8Ldphzt1DgwbFQyGEv='k',FAypCIlJYAR5ZNiWU4KYpyUHTkDdnz15iQ0EXquyPag5SL2k5Cmyta=cross,qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm='W',HjqHLCwpIYJKBjlJzQc0byIRDDr0YBm_sbcPTTPIwblD9nqHLTy2y2='j',T7fsdM_HwpiFzbem8yn7mKqYiy6bNti_P6qgVoij5jIn2j9HEsHm442qnx8=#73fafb,waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri=#fdfdff,fhMV1JVPsp67Cpc9PBjo9H7fe8z4sSemWBTkV63ccS3gUlI0='4',py8MnLkFau195MRjwmIm4DUn96UPsAg6G0SMIqoNsg7pg2m='|',oLnLrIgytZ0dhKdlkIKpqo6natksUWqEK2lPCi_GLojNLS9Xs0ba5PWu0Kc='Z',szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS='m',dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R='(',k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP='n',GD6XgdsUjST32t5FrMJJk1Af2kmzFovNY0AXdyYXUdMzrtxo0QnCB=#bf00ff,MNWxWO599A8oZP_sTMtJV3zmjVH_ZFb1F02a_rv_TkUqPQ2nNY='2',_qYHoJIiPkc84VAWuFw7TjnZXwZQfQlQrqy3H1MJglea_Kr1jUE='0',F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg=')',IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O=#d90201,x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE='K',Z8F46fvVOFyjMJMLkUI1hiFTMQgixLK7a6MlFIA1YU='L',wqZ4foykGfrzkwfRZX6bgaSdEfQHDLWWcBgewDhr2h='*',VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp='e',LCGm8V2sJrWaagLP64QOkOvYI1ORQkw3dvOjXD9xPhd=year(0)-1960,faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1='E',PTxKDVR4efifkfM4wccpREEsN2sSgCWv2GuyIlU06BHolVOnmo5BQ8Out=sunday,e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM='C',tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX=#acac9d,PgY8gjTKdBQAbNYXzGQC_CJQeCoRwJheNBhK0va5YLGW3GcCC1fFl4_WKdAE=solid,gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts='M',ECI7Z6jyOAPUv9oOLXn5mub1NoXWVsvPw2m5k5K94auPjmQW=friday,V3r75fwx1pisUACBYmy1LQyc7TlrW56uMvMHYi9aIOl='-',yhJsWH4kHzRV5Wf6NwctkCrVcrllLUbPssTlLT03=':',h9a8eZ2aifOLotRLOn7ze1hG5ZoZIwuDSEqEn127XUc3HHy=#ffbf00,CgItlfYuq6uW12wyRzBdQxbIU_UmiKtCrvnZmyzbmZAHU8e8rPSdnr='ñ',jYuW12d7kuJDGH1KQ2hfyRQFi1hYUzNw46cChWTGJOz='F',zQvjtMVRc3KPo2LYKlOyoG5tDeIVeW63bgoNkL8d='=',W24qDHFdLaW_or4WT3OXH_31oHgtFeagKq7cIea7e='f',UqLN8EKcwfxFUm_2_Ou6GEoc0ydc_udcGXx15wlYCTmHaYJiLurfMMMfv5V4='/',K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw='D',nLiu54cHtsK3pPdG9kRDkr9ItjDgbWbxLT2RykpzynP=',',M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21='N',pFK8yGSTvVbJ3mS1Tyu5VfqwCI_tnLyFU3uDvFHXtBUbZyH=#b3b304,JdRC6Jsfo6QQqZboU_wX9l0qqQAIUqpb3Xu5qcwGKi6XdThzfz='_',pbVk1aquuVIVb_KBICIpaOL8T_MFXW8OaDnNZ5TIc1k1fUaoUug=#ff26c9,cSGX7mEUCzk0IBHs66BKJ1Ak0lr2KyOOX1SQSDjmUeyI6JgcNWeiF='Q',XDHUlls1Mdgyg_cChqhCCcc8s2nTmYJJqKKpWXH52kt6iJKDwGfplQ=';',v3Me7PLYYHfyR8Nc8FzuIJdP3e7BzWBLzFrYqPrYG=monday,BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT='g',uh6hPv_ZNRUxtF6hQ4gcVYAkaE2eIef2NB8qQ2dduL933no1I09='€',egqjPz92F8N5LVr2ZCTbw5QPnyPIyyNeq_o3IANUwWJlNcaD2pKZEXvdoVpO='q',F0_hc4C3ZCNA1Aa7QDWTwPkle_P5CzWRF5fGm0skplGz=#4cff4c,GbBuGtlaSs6CN4lgOWz2sMHReBf0dHXa5YHXhu4AMvASz8kkoGJ='U',VQrg641NIyUS_6Xoo_HxwH6mlKf6p9d5ztssspNnQ9Wf=wednesday,V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ='A',MaTuXlVZmiTfahHBa_X1B_KbA_2T3RKFGPjMyqzJm68m6='@',mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q='a',yzXxVrYOfVM0iwGubttTGD_lde4WoH2GOrHwRJxlB8D4ZxSnQRbyeL=na,g8PKlCASBtbREeOJZVDqmdWC8Qn6F6kyBQTSGblMHj=#2626ff,zwQCFgZcxteVOyHDdwgIiEB_NMnk_LOiE4pub3WbqukwTtAFZnPAr_oxnhS='{',RRffTbmST0hOKtvqI1AdSQ2OW4IlUoMj9pq5X0yN_isShpZSimDuWn9E='J',bpVJWc8POWNLV14FAbUFtqQHzvcBobZPyZ_xHnQovhtW0CD='©',l99Ijwe20STJfNgKIy2Wv8S2dWDoXO3Jm1T3D020VThESWmLFKyK8AeFOAD_=#8c0208,CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo='\n',s3YbyuwMjY4ygMfwlxrcmPR2XgfhyocAaNmztN7tDC='B',p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO=#018c23,D6p_V8DQu4CN6HL5myBKbtgI5gthZVt2Lm3Kscdn7BB0u9eozqJCgnTXuO=false,vQdTYziXRf3fbw1Vy3gkejjb3krDvurT7zhOdknzgZ=#05b3b2,e10qp9quHBlSR1e201f4wUeXPvHIK4SHxmUvgee8AeJR7XEFjiWl=tuesday,u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm='w',P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA='u',mVocr6sPxs6FCS7oshNOupSb5W9d7vXZxBdAij5aTbBoFWXPTbUT8VDBha='¥',BXFKbybekaThYWmF24qHnsr8JKDuEprQPgjRZvACFmSi='$',MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb='y',C1twuE4G32ZXqBJ0cva2qnsjsGnM9tWbiJSbV1Nvj9fpLXg_y90J='"',iJyUoSaJ5UCjymuNqoLNgH0Aj2j0YJA33r3SSYXwd_7PShqIo1RCVsts0='3',TUfBfYTgXyBd6M6pTEQz2e0rNvaUD2j1Bcp_iWx7=dashed,FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5='c',kmvg004V8sK6L6YVg9raosCWrWU5CCtQVwCOH4z3I7gKAbZmGFHUX='Ñ',vo5ZgEUvVtOW64D0IhQzFGXquiCTiDE8PsLBjQCL9TYugGM5Q=thursday,s5zV2usKqVJA1nenV1tMi7L8OTG0gLYJQAF9hdHZuHdLwsCYhErjk=#23028c,IcWDHNz9WKi_L9dONtK67adD60U9JUBlMJB3ZhA_Gl9k='z',r7t9T6p3Ih3lmn7mT69pnALRDhg2RyudTkJ4kY9YUx='x',Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb='O',K1KDOEchpZawFOIzdvksoCfbE_e8mCWaAQZbERvGje8lkDBfsbGglD1DV2l=dayofweek(0),PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx='d',JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3='I',jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf='t',VSLP1_sp1W_XeCO1qXCm_9080MWuBq5eizKZb1b8_z3gyh_UHYJ1ybmu=saturday,CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix='h',Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx='s',E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2='.',RCB8KSDHlZOFiSrvAwSrS07xkEvmA9WJEtknUvpkgNP2rYwHGxIi=thursday,mJvbLQMDMiBkHQs4gsrQh6uGJpTzG3c5FalvOipV3Me9KLDvQFFoD='8',Iahx6DMy0_7avpT7wnrJ1y3nR1r4MOCEJ0uT9w7tp2UuBOsUeATP='&',E6d_T8VVvC_uNR47TvSuhwriVDpOvl234k_oYj_PAK8='!',o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu='i',JyHoxAPnERpUBiv8op35egvwin0g2qXTcKNDpCDJzk5nAVY6pEwK=#0f0f1e,WUJzzn1nTP2b_Y4KFc5dz1RbBdZnhJ7BPKcZi5a5mIY53hoABfJ=saturday,L6akNHIq4sayfVJGUf8CNs2BDD6OGAkyeYLaLemhUjtCtuLMItcwHv='9',NhBIa8RCqW4qwb6eoYKiZCKoRHn87wSonvPLhwqxhM=circles,z9BUoXbwS2Hz9QuguW8u1ajDsv8n2Wgw9cauN1HoZxWSATkRETYj='}',JUuRAwmLWEz1qGKe50Z3vFdBgj11EdmUwi4BkLzVc1NL4UUNbthuJ='+',TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2=qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+qKr1YAGXuJDcFEbWsDJISVzdLKL4I3vWBe1h6eau1D0phZBDIxNUsppTPm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+M6YRrYCnneffiw3m51lNav_HSdnRB9K6YG73ioMdrzT2a5KTOq21+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+Kv_kcdnpq2hJLUeM5X4sgT9r9yfkD7X5yud7Y0kxGYnkQnHIHu0Hm8gyb+gw__OiRjFE8rqMkfQMVQt0bIaRhnkvvNDXLJsXm7z5kj1ts,XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K=u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+o4VY1EYRGRPd7I3CP4gHh7uMoCuz5oIn1iG_9hMjZKsyTsXvq3N4ZAZu+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+Wu0DFfeuJrYouyceqJm8ePFFMc0b2VEBioVTEeYQfAJgx+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+szuqCKVI48Mc10TOQ9mOwopjTrDTvmXnApPYhXjd1lFNS,yIpcF3Y3UuIrTcUNZCVYXqsHB8cYw1h5MvTZ3fmUn8k=ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+ucQW2BjC2isWOqcAVnfZVPWQNLmbGvmzIG3NwxLHXbiLjpcqQ9A43D7IDl+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+rz_ZiJcnaPNYfmT4E6vp2mIiXI8OlFjXaqC3rJDjj0XwKshMCvJwcwKyt+V8qAlVCh5ZOyW2hvAgRYgNzd8jvFXnBV1XZi5SxRu2rXG3eRIW3jIHvj6XZ+li5_GWTSIArsvQ0GYJs5t0rcSsoAApOj2xv6DYQiT3+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+gNkRgCig3sGuNVMgOzgIze8oRA95fgnAMuU9sgDv54mExSUzcC_VZD0+DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+JdDwmIUOxSrfg3e4iSY2fEqpB5eMQMUqSjNVfHBFnQxKZhG2uXUgsfHE5e3+f6mLmDZpdyyFj9YuPG8Q_lPZD9c9Upuz4jnQZlUwcgjGfG+faf7ajrzk_i0UxzhJSkgAqRzZiGFObNaJC_vEHGEkIqv1+K_rZAL9JE7RyuaB9TDF2hTo3ofNwaY1vcN9H9W1mGMBjqQQx8mTvKhsgdsw+E0x3xktM8JRoEeWOCc7EFkepkPcqBLB_i40drC0toP2+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+e6dEORZu_UKZfNVneAm92bxbNYx57GXT4MllsuxM+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+P_TQqis5Hg9qid9DjXKRezoGgwtapabgjPKrtkG0HlPTA+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+CsDfgxebTvnUvH7lM7N3m2ysAUJoI_PkKJuvxQTnhxKdIiix+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+BJWz42pe1_9l2NAvHlOwCVXLFJTw2ArckzWK3cfoKS5hmwT+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+mUFBAomv0x_aY4yFfQjruIdYW8avjPu9RZDFQX9okpSDDh45y55F3cCjpY9q+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+k0m6GT3P538HSlUq_uPPe_EUDDZFZWavGCvTL4QkfmxG81hBP+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+u7KlYrkFx6XAm6hkqRUnoTSD8YbZNHuhPEfxNbG0DqCaaDQN37_lm+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+x3JcXa_FBjFqicRJEz8FWOlcSd0R8YwNea5nIABCRDeUzjs7hE+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+CzbjfxLgjZ8mvZdpeok9FmzUv50GfvDAuXc4G1_e7dZuaXASul1Kmph1slo+dzLLzMcAaPD2U_gBZZBt6VyHf8UIG4vJ06cwD5xZxflm_A_R+Xpis3JXGi7odLm_avxWrj1lNOgZ59WwFdqH6WULXp_gXcF+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+TIatrXQo5X4CxZp5YFYxODLgsG_zoJGIhEj7jBst4y2+F0earkWF_97ICRSvo8FDv_96YRTVUbyxZ1RkHqzHOxZzygS7fg,_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe=DmMuaSYttz_Ztw3QrNCOAfDBwrRWONpVMVXZf_r2aMo+dj9EvhtgHr6LgISsqTdCtfIEojlelK28Wvq6voG3XlrOaDVTPGNs+LeNKDF9MgTw1Y6wSeu38pN2iuyn91G7zhU_QU19icdfgeKc6km77m+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+FOq2JFOiUHX1ni2mEI5jc3AizkajXCOyFlSUvtk4j7Z5FJXzJKH8rvHj5+jmQSISfemsz1iqV3eyYV0Vz01v4B4A01CZlyrfIbPuf+VBHfdDcmHXXF80KPtoAO5O9awj8WvQYURFnR_BGp+PsCbLNKkeEiTuNofCc7NV12xrwut5zdw9fOElMi7npxTaD8qi68cqx+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+cYcixbkUVPiafMBGmWkhsjTj8_aKjEikoIFL3TvnUWt+MlkBRRlTdu57RNWlbSrZ0VZ8Q2iSsIDxqDzbqnhnW8Fx8J6XzZb+H_RQ8zLa89f2AZrlNbxiyBP6_hsaZ80VYEKXQknfBI54y+XkRBbzWQv7g0z_qpPTNsAFuPMYL2u8pCVoP8ZYsi0K,aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=input(defval="Protected by www.PineScripts.com",title="Do not change this:",type=string),z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P,study("Yörük",shorttitle=".",overlay=true),kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo=input(title="Coloured Crystals",defval=true,type=bool),Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu=50,size=1,JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom=nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)==2?0:nz(JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom[1],0)+1,pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?high:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?low:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?open:close,B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?high:open,H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?close:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?low:open,LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:high,Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?open:JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?close:low,p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv=close>=close[1]?p9AhwpPCgL9Nt8OTX3DtBHnyHkwO5vfahTxqKeStxuzV9OrK4FO:IGznK6g3xPi2MiYPzYokQyiOR5o4F7CGbQ3N1qTKpzN9O,pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv=kitHrHSgbQzNXEP394ABUILQ3ae9h8hOXGv4mGQo?p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv:tm6D8VL5QS6u9QJrCsxpG4oxm0d9XGO4H_TX2573kAobb_YDYdX,s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?na:p_7XreXNftmjq_No8R_tgdF1_q4b6NtBTeMEQuGo_byv,q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==0?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==1?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3=JGMjbBNRMP5bKh_fI2o1c7IZXnVgHGxOkukE1P462nfND6yGBVIUsitom==2?waHH5rAjClM6qRGDfBR2DNXbOm2DyBsBzzYyS4P14eE7ri:pwk7HlMTbZAnhXbZKJ2snM2LL3bwJLDuKfSd5wb_e7CZi_8VOWT8ezfv,BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h=plot(pR2Xtf2Jr9FZnhyetDFEtpbgNWkv8CC3nKbMBJebNo4U2k4n2sxfj2TG,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f=plot(WMAouErwmjtwruTqtTFQkXBQdhl9LrkGFBixNAyEyrHv1NUOiEQQt,transp=0,linewidth=size,style=line,****=true,color=NotTJ5V776tSeBTYb6exI2ts71pdZ5GI8vPkzE7pATjRr),fill(BPZAANEc8fRcuL6dSmNnX1_CZo6nJK9DVTmVTMNjFTYsW4h,Zb1xkZK9Il89LpS1nqlKbXlCdJOcCZEfy20A4TndedtU5f,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=_3P6obn2T8WMKcq_1qWBfGE98m0HU3lScMoDcRHUdCF1aMmTQfwf6aEjaBu3),guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09=plot(B6K6ycIZZ1a5O0PgwIHX6oOy62SPnmxfj_aUMiFj8lcKUD4XafSxs,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq=plot(H6vPa6kjBCiKRzS7oOS_3eDFI7QPkAa27nS9QQiHsurowZwcrvD,transp=0,linewidth=size,style=circles,****=true,color=s9XR4fGGXFXq9idsrWqHBjsMpXdPow20j_je_y_3jJ6EhIBjz),fill(guU7LEPon1Y7ogNupxzv3ZVhqSJbw0if3AyhyTrXWjaEz7yYtLlR_09,uOKSBBL8yK5QVpfRHL9jV5FcO4sV5HjjPW2Nq6XQlVRX_er6VPAwmq,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=q5cQYFGSOWU_xoa0gyOW2ssxpDdRGhtHDckn82uUHEnIMQE2yEj4iZ),QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj=plot(LaTE7Majfp26QTTzaydQ2gh7Dmn8CvX3vr2XiRyd,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy=plot(Yl5PT3ESlD1khHsMSRk27rEBkJyY9bCW95CCMJ8jV,transp=0,linewidth=size,style=circles,****=true,color=XW3B5YBJmnqTQIQKDeziOIpRhE22DU2Q5KpaFIFMsg),fill(QSH9z2grqSGiyliKwiU_Z3F1tnXWTGJN6LEOnqfHlvdN0Tlx2lWPHlLRj,Ddfb4f29Jt4wxfaSSK3pcKRsZCXDKNFSBAVISJhfi0e7kCy,transp=Lnsar3bPNOUy4pvpKguwBJ185x8FY1gR9vZ_gxJMi7726svsIBzCo34dgu,color=wGatSkza6xPH2cJyEtukU1TFXFRhUt8G_7R_No9oRzRybtud_s9jMyzQ),nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF=z9GzrEXmrop7fV4vW1VgUzzrwN4ar7SeTRvjsIEPeXTZmSO,G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf=nIygynyDXCdXGrOF8lInLfpjuFuW6WZkEmpYKxvmRwYy0yBqFRkF,iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2=G3aJS_mfSiwGJrVGQuXbMBA3DUM_ozvIjBrrwEGxhXc9yt9Zf,mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r=iLDSiZ1nAUUfVfHImS1MqboJTVTZtxn0WUqjNDeSK5OI2==_fAUQL6gyA8nyC6yFL6D4S4mzVWblHfV7ty3Rv_x_BmreRWe,_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?0:-1,hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN=mo7pp7lhzCTyu4mNeCr2h7UEiTr2gxY_KyxI958ZBM6ERHTI7oFzI0r?na:close[_yn7ttTHoxR6KJngAyd2sWOOdwbBl0DIJDoPC4EMEC8wu],plot(hrv2IIFtLx3JJhdtrlFmFBdFktZzHnXbFpAN9KShCuN),zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi=close,VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4=high,K4J2jlKNcvtiS1r7W76KICidGq1X45AWL35kuBIiW7GlihW_w3PyesM=VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,rX6cIln6LMSceWUyljMJJndYKR02K1Nton2nSIirk0uU7n1c=(VDhmznjndtMibnBeW02kdV3n8hZFk5WVxdziGRTUd0vWOV2qeXGfhUd4*open[15])+zwKllUgrZrbxmM_U4S34k_jmlxiiNVqIeRk9Ra74HGXw_YMRV4RSOmi,P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe=aaa7lCelvXyPIPy8t68AGttUSElxXoGP4BI4LJb443Vv8LDyD0bQoIeZhW0P=="Protected by www.PineScripts.com"?na:-10000,plot(P8fadzT4TQ_9xeQE3fExvrS1WBtY_99hj0zyq3nLwpGLiqXqb4l7cIe)
// Encrypt Compilation [1838] ---------------------------------------
///////////////////////////////////////////////////////////////////////////////
//resolution
res1=input("1", type=resolution, title="Resolution")
res5=input("5", type=resolution, title="Resolution")
res15=input("15", type=resolution, title="Resolution")
res60=input("60", type=resolution, title="Resolution")
res240=input("240", type=resolution, title="Resolution")
res720=input("720", type=resolution, title="Resolution")
//output functions
out1 = sar(0.1,0.1,1)
// Security
SARx1 = security(tickerid, res1, out1)
SARx5 = security(tickerid, res5, out1)
SARx15 = security(tickerid, res15, out1)
SARx60 = security(tickerid, res60, out1)
SARx240 = security(tickerid, res240, out1)
SARx720 = security(tickerid, res720, out1)
//Plots
acx32 = input(true, title="Adaptive Coloring", type=bool)
plot(SARx1, title="1", style=line, color=acx32?(SARx1>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx5, title="5", style=line, color=acx32?(SARx5>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx15, title="15", style=line, color=acx32?(SARx15>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx60, title="60", style=line, color=acx32?(SARx60>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx240, title="240", style=line, color=acx32?(SARx240>close?maroon:lime) : silver, transp=100, linewidth=1)
plot(SARx720, title="720", style=line, color=acx32?(SARx720>close?maroon:lime) : silver, transp=100, linewidth=1)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
x1 = sar(0,0.1,1)
x12 = sar(0,0.1,0.1)
x123 = sar(0.1,0.01,0.1)
x1234 = sar(0.1,0.1,1)
plot(x1, title="1.Döngü", style=line, color=yellow, transp=00, linewidth=1)
plot(x12, title="2.Döngü", style=line, color=aqua, transp=00, linewidth=1)
plot(x123, title="3.Döngü", style=line, color=white, transp=00, linewidth=1)
plot(x1234, title="Döngü", style=line, color=fuchsia, transp=00, linewidth=1)
///////////////////////////////////////////////////////////////////////////////////////////////////
leno = input(1, minval=1, title="Length")
srco = input(close, title="Source")
starto = input(0.1)
incremento = input(0.1)
maximumo = input(1)
momo = srco - srco[leno]
outo = sar(starto, incremento, maximumo)
smdo = outo - momo
plot(smdo, color=blue, title="TR-Sar",transp=00)
// Determine buy and sell signals
buySignal = crossover(smdo, close)
sellSignal = crossunder(smdo, close)
// Plot buy and sell signals
plotshape(buySignal, title='Buy Signal', text='SAT')
plotshape(sellSignal, title='Sell Signal', text='AL')
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Created & Developed by : Kıvanç Özbilgiç (@KivancOzbilgic)
// Screener Panel & Adjustments: @dg_factor
//@version=5
indicator('*', overlay=true, format=format.price, precision=2)
src = input.source(title='Source', defval=close, group='ALPHATREND')
AP = input.int(title='Length', defval=1, group='ALPHATREND')
coeff = input.float(title='Multiplier', defval=3.1, step=0.1, group='ALPHATREND')
novolumedata = input.bool(title='Change Calculation (No Volume Data)', defval=true, group='ALPHATREND')
showsignalsk = input(title='Show Signals ', defval=true, group='ALPHATREND')
ATR = ta.sma(ta.tr, AP)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT
color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])
K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])
direction = 0
direction := buySignalk and O1 > K2 ? 1 : sellSignalk and O2 > K1 ? -1 : direction[1]
//k1 = plot(AlphaTrend, title='x', color=#0022fc, linewidth=1)
//k2 = plot(AlphaTrend[2], title='y', color=#fc0400, linewidth=1)
//fill(k1, k2, title='Fill Color', color=color1)
plotshape(showsignalsk and buySignalk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='A', location=location.absolute, style=shape.labelup, size=size.tiny, color=#0022FC, textcolor=color.white)
plotshape(showsignalsk and sellSignalk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='S', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.maroon, textcolor=color.white)
string gr_sc = 'SCREENER'
string gr_sy = 'SYMBOL'
string t00 = 'Tarama'
color c00 = #e6d708
lb_sh = input.bool(title='Show Label', defval=true, group=gr_sc)
lb_xa = input.int(title='Horizontal Axis', defval=5, group=gr_sc, tooltip='Label Position x Axis')
lb_ya = input.int(title='Vertical Axis', defval=20, group=gr_sc, tooltip='Label Position y Axis')
lb_sz = input.string(title='Label Size', options=['Auto', 'Tiny', 'Small', 'Normal', 'Large', 'Huge'], defval='Small', group=gr_sc)
lb_cl = input.color(title='Colours', defval=#00bb00, group=gr_sc, inline='0')
lb_cs = input.color(title='', defval=#ff0000, group=gr_sc, inline='0')
sh01 = input.bool(title='01', defval=true, group=gr_sy, inline="01")
sh02 = input.bool(title='02', defval=true, group=gr_sy, inline="02")
sh03 = input.bool(title='03', defval=true, group=gr_sy, inline="03")
sh04 = input.bool(title='04', defval=true, group=gr_sy, inline="04")
sh05 = input.bool(title='05', defval=true, group=gr_sy, inline="05")
sh06 = input.bool(title='06', defval=true, group=gr_sy, inline="06")
sh07 = input.bool(title='07', defval=true, group=gr_sy, inline="07")
sh08 = input.bool(title='08', defval=true, group=gr_sy, inline="08")
sh09 = input.bool(title='09', defval=true, group=gr_sy, inline="09")
sh10 = input.bool(title='10', defval=true, group=gr_sy, inline="10")
sh11 = input.bool(title='11', defval=true, group=gr_sy, inline="11")
sh12 = input.bool(title='12', defval=true, group=gr_sy, inline="12")
sh13 = input.bool(title='13', defval=true, group=gr_sy, inline="13")
sh14 = input.bool(title='14', defval=true, group=gr_sy, inline="14")
sh15 = input.bool(title='15', defval=true, group=gr_sy, inline="15")
sh16 = input.bool(title='16', defval=true, group=gr_sy, inline="16")
sh17 = input.bool(title='17', defval=true, group=gr_sy, inline="17")
sh18 = input.bool(title='18', defval=true, group=gr_sy, inline="18")
sh19 = input.bool(title='19', defval=true, group=gr_sy, inline="19")
sh20 = input.bool(title='20', defval=true, group=gr_sy, inline="20")
tf01 = input.timeframe(title='', defval='', group=gr_sy, inline="01")
tf02 = input.timeframe(title='', defval='', group=gr_sy, inline="02")
tf03 = input.timeframe(title='', defval='', group=gr_sy, inline="03")
tf04 = input.timeframe(title='', defval='', group=gr_sy, inline="04")
tf05 = input.timeframe(title='', defval='', group=gr_sy, inline="05")
tf06 = input.timeframe(title='', defval='', group=gr_sy, inline="06")
tf07 = input.timeframe(title='', defval='', group=gr_sy, inline="07")
tf08 = input.timeframe(title='', defval='', group=gr_sy, inline="08")
tf09 = input.timeframe(title='', defval='', group=gr_sy, inline="09")
tf10 = input.timeframe(title='', defval='', group=gr_sy, inline="10")
tf11 = input.timeframe(title='', defval='', group=gr_sy, inline="11")
tf12 = input.timeframe(title='', defval='', group=gr_sy, inline="12")
tf13 = input.timeframe(title='', defval='', group=gr_sy, inline="13")
tf14 = input.timeframe(title='', defval='', group=gr_sy, inline="14")
tf15 = input.timeframe(title='', defval='', group=gr_sy, inline="15")
tf16 = input.timeframe(title='', defval='', group=gr_sy, inline="16")
tf17 = input.timeframe(title='', defval='', group=gr_sy, inline="17")
tf18 = input.timeframe(title='', defval='', group=gr_sy, inline="18")
tf19 = input.timeframe(title='', defval='', group=gr_sy, inline="19")
tf20 = input.timeframe(title='', defval='', group=gr_sy, inline="20")
s01 = input.symbol(title='', group=gr_sy, inline='01', defval='BIST:XU100')
s02 = input.symbol(title='', group=gr_sy, inline='02', defval='BIST:XU030')
s03 = input.symbol(title='', group=gr_sy, inline='03', defval='BIST:XU030D1!')
s04 = input.symbol(title='', group=gr_sy, inline='04', defval='BIST:ALTIN')
s05 = input.symbol(title='', group=gr_sy, inline='05', defval='BIST:ASTOR')
s06 = input.symbol(title='', group=gr_sy, inline='06', defval='BIST:CWENE')
s07 = input.symbol(title='', group=gr_sy, inline='07', defval='BIST:ALFAS')
s08 = input.symbol(title='', group=gr_sy, inline='08', defval='BIST:EUPWR')
s09 = input.symbol(title='', group=gr_sy, inline='09', defval='BIST:GESAN')
s10 = input.symbol(title='', group=gr_sy, inline='10', defval='BIST:KONTR')
s11 = input.symbol(title='', group=gr_sy, inline='11', defval='BIST:SMRTG')
s12 = input.symbol(title='', group=gr_sy, inline='12', defval='BIST:KCHOL')
s13 = input.symbol(title='', group=gr_sy, inline='13', defval='BIST:YKBNK')
s14 = input.symbol(title='', group=gr_sy, inline='14', defval='BIST:NUHCM')
s15 = input.symbol(title='', group=gr_sy, inline='15', defval='BIST:CVKMD')
s16 = input.symbol(title='', group=gr_sy, inline='16', defval='BIST:KOPOL')
s17 = input.symbol(title='', group=gr_sy, inline='17', defval='BIST:TOASO')
s18 = input.symbol(title='', group=gr_sy, inline='18', defval='BIST:OYAKC')
s19 = input.symbol(title='', group=gr_sy, inline='19', defval='BIST:EREGL')
s20 = input.symbol(title='', group=gr_sy, inline='20', defval='BIST:SISE')
f_screener(s) =>
int x = na
int y = na
z = color(na)
if s
x := direction
y := ta.barssince(x != x[1])
z := x == 1 ? lb_cl : x == -1 ? lb_cs : c00
[x, y, z]
//
f_bars(x) =>
r = ' [' + str.tostring(x) + '] '
//
f_size(x) =>
x == 'Tiny' ? size.tiny :
x == 'Small' ? size.small :
x == 'Normal' ? size.normal :
x == 'Large' ? size.large :
x == 'Huge' ? size.huge : size.auto
//
f_label(l, t, c) =>
r = string(na)
for i = l*2 to 0
r += '\n\n'
r += t
var label lb = na
label.delete(lb)
fix_allign = ta.highest(200)
lb := lb_sh ? label.new(
x=bar_index + lb_xa,
y=bar_index > 200 ? fix_allign * (1 + lb_ya / 1000) : hl2 * (1 + lb_ya / 1000),
text=r, textcolor=c, textalign=text.align_right,
style=label.style_label_left, size=f_size(lb_sz), color=#00000000) : na
[a01, b01, c01] = request.security(s01, tf01, f_screener(sh01))
[a02, b02, c02] = request.security(s02, tf02, f_screener(sh02))
[a03, b03, c03] = request.security(s03, tf03, f_screener(sh03))
[a04, b04, c04] = request.security(s04, tf04, f_screener(sh04))
[a05, b05, c05] = request.security(s05, tf05, f_screener(sh05))
[a06, b06, c06] = request.security(s06, tf06, f_screener(sh06))
[a07, b07, c07] = request.security(s07, tf07, f_screener(sh07))
[a08, b08, c08] = request.security(s08, tf08, f_screener(sh08))
[a09, b09, c09] = request.security(s09, tf09, f_screener(sh09))
[a10, b10, c10] = request.security(s10, tf10, f_screener(sh10))
[a11, b11, c11] = request.security(s11, tf11, f_screener(sh11))
[a12, b12, c12] = request.security(s12, tf12, f_screener(sh12))
[a13, b13, c13] = request.security(s13, tf13, f_screener(sh13))
[a14, b14, c14] = request.security(s14, tf14, f_screener(sh14))
[a15, b15, c15] = request.security(s15, tf15, f_screener(sh15))
[a16, b16, c16] = request.security(s16, tf16, f_screener(sh16))
[a17, b17, c17] = request.security(s17, tf17, f_screener(sh17))
[a18, b18, c18] = request.security(s18, tf18, f_screener(sh18))
[a19, b19, c19] = request.security(s19, tf19, f_screener(sh19))
[a20, b20, c20] = request.security(s20, tf20, f_screener(sh20))
t01 = a01 == 1 ? '▲' + f_bars(b01) + s01 : a01 == -1 ? '▼' + f_bars(b01) + s01 : '■' + f_bars(b01) + s01
t02 = a02 == 1 ? '▲' + f_bars(b02) + s02 : a02 == -1 ? '▼' + f_bars(b02) + s02 : '■' + f_bars(b02) + s02
t03 = a03 == 1 ? '▲' + f_bars(b03) + s03 : a03 == -1 ? '▼' + f_bars(b03) + s03 : '■' + f_bars(b03) + s03
t04 = a04 == 1 ? '▲' + f_bars(b04) + s04 : a04 == -1 ? '▼' + f_bars(b04) + s04 : '■' + f_bars(b04) + s04
t05 = a05 == 1 ? '▲' + f_bars(b05) + s05 : a05 == -1 ? '▼' + f_bars(b05) + s05 : '■' + f_bars(b05) + s05
t06 = a06 == 1 ? '▲' + f_bars(b06) + s06 : a06 == -1 ? '▼' + f_bars(b06) + s06 : '■' + f_bars(b06) + s06
t07 = a07 == 1 ? '▲' + f_bars(b07) + s07 : a07 == -1 ? '▼' + f_bars(b07) + s07 : '■' + f_bars(b07) + s07
t08 = a08 == 1 ? '▲' + f_bars(b08) + s08 : a08 == -1 ? '▼' + f_bars(b08) + s08 : '■' + f_bars(b08) + s08
t09 = a09 == 1 ? '▲' + f_bars(b09) + s09 : a09 == -1 ? '▼' + f_bars(b09) + s09 : '■' + f_bars(b09) + s09
t10 = a10 == 1 ? '▲' + f_bars(b10) + s10 : a10 == -1 ? '▼' + f_bars(b10) + s10 : '■' + f_bars(b10) + s10
t11 = a11 == 1 ? '▲' + f_bars(b11) + s11 : a11 == -1 ? '▼' + f_bars(b11) + s11 : '■' + f_bars(b11) + s11
t12 = a12 == 1 ? '▲' + f_bars(b12) + s12 : a12 == -1 ? '▼' + f_bars(b12) + s12 : '■' + f_bars(b12) + s12
t13 = a13 == 1 ? '▲' + f_bars(b13) + s13 : a13 == -1 ? '▼' + f_bars(b13) + s13 : '■' + f_bars(b13) + s13
t14 = a14 == 1 ? '▲' + f_bars(b14) + s14 : a14 == -1 ? '▼' + f_bars(b14) + s14 : '■' + f_bars(b14) + s14
t15 = a15 == 1 ? '▲' + f_bars(b15) + s15 : a15 == -1 ? '▼' + f_bars(b15) + s15 : '■' + f_bars(b15) + s15
t16 = a16 == 1 ? '▲' + f_bars(b16) + s16 : a16 == -1 ? '▼' + f_bars(b16) + s16 : '■' + f_bars(b16) + s16
t17 = a17 == 1 ? '▲' + f_bars(b17) + s17 : a17 == -1 ? '▼' + f_bars(b17) + s17 : '■' + f_bars(b17) + s17
t18 = a18 == 1 ? '▲' + f_bars(b18) + s18 : a18 == -1 ? '▼' + f_bars(b18) + s18 : '■' + f_bars(b18) + s18
t19 = a19 == 1 ? '▲' + f_bars(b19) + s19 : a19 == -1 ? '▼' + f_bars(b19) + s19 : '■' + f_bars(b19) + s19
t20 = a20 == 1 ? '▲' + f_bars(b20) + s20 : a20 == -1 ? '▼' + f_bars(b20) + s20 : '■' + f_bars(b20) + s20
f_label(0, t00, c00)
f_label(1, t01, c01)
f_label(2, t02, c02)
f_label(3, t03, c03)
f_label(4, t04, c04)
f_label(5, t05, c05)
f_label(6, t06, c06)
f_label(7, t07, c07)
f_label(8, t08, c08)
f_label(9, t09, c09)
f_label(10, t10, c10)
f_label(11, t11, c11)
f_label(12, t12, c12)
f_label(13, t13, c13)
f_label(14, t14, c14)
f_label(15, t15, c15)
f_label(16, t16, c16)
f_label(17, t17, c17)
f_label(18, t18, c18)
f_label(19, t19, c19)
f_label(20, t20, c20)
-
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BobRivera990
//@version=4
study(title = "*", overlay = false, scale=scale.left,format=format.price, precision=2, max_bars_back = 200)
//==========================================================================[Inputs]==========================================================================
useAtr = input(true, title = "Use ATR to detect Sideways Movements") // Use Average True Range (ATR) to detect Sideways Movements
atrLen = input(14, minval = 1, title = "ATR Length") // length of the Average True Range (ATR) used to detect Sideways Movements
atrMaType = input("EMA", options = ["SMA", "EMA"],
title = "ATR Moving Average Type") // Type of the moving average of the ATR used to detect Sideways Movements
atrMaLen = input(27, minval = 1, title = "ATR MA Length") // length of the moving average of the ATR used to detect Sideways Movements
useAdx = input(true, title = "Use ADX to detect Sideways Movements") // Use Average Directional Index (ADX) to detect Sideways Movements
adxLen = input(14, minval = 1, maxval = 50, title = "ADX Smoothing") // length of the Average Directional Index (ADX) used to detect Sideways Movements
diLen = input(14, minval = 1, title = "DI Length") // length of the Plus and Minus Directional Indicators (+DI & -DI) used to determine the direction of the trend
adxLim = input(25, minval = 1, title = "ADX Limit") // A level of ADX used as the boundary between Trend Market and Sideways Market
smooth = input(3, minval = 1, maxval = 5, title = "Smoothing Factor") // Factor used for smoothing the oscillator
lag = input(8, minval = 0, maxval = 15, title = "Lag") // lag used to match indicator and chart
//============================================================================================================================================================
//===================================================================[Initial Calculations]===================================================================
atr = atr(atrLen) // Calculate the Average True Range (ATR)
atrMa = atrMaType == "EMA" ? ema(atr, atrMaLen) : sma(atr, atrMaLen) // Calculate the moving average of the ATR
up = change(high) // Calculate parameter related to ADX, +DI and -DI
down = -change(low) // Calculate parameter related to ADX, +DI and -DI
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) // Calculate parameter related to ADX, +DI and -DI
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) // Calculate parameter related to ADX, +DI and -DI
trur = rma(tr, diLen) // Calculate parameter related to ADX, +DI and -DI
plus = fixnan(100 * rma(plusDM, diLen) / trur) // Calculate Plus Directional Indicator (+DI)
minus = fixnan(100 * rma(minusDM, diLen) / trur) // Calculate Minus Directional Indicator (-DI)
sum = plus + minus // Calculate parameter related to ADX
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxLen) // Calculate Average Directional Index (ADX)
//============================================================================================================================================================
//========================================================================[Conditions]========================================================================
cndNa = na(atr) or na(adx) or na(plus) or na(minus) or na(atrMaLen) // Conditions for lack of sufficient data for calculations
cndSidwayss1 = useAtr and atr <= atrMa // Sideways Movement condition (based on ATR)
cndSidwayss2 = useAdx and adx <= adxLim // Sideways Movement condition (based on ADX)
cndSidways = cndSidwayss1 or cndSidwayss2 // General Sideways Movement condition
cndUp = plus > minus // uptrend condition
cndDown = minus >= plus // downtrend condition
trendType = cndNa ? na : cndSidways ? 0 : cndUp ? 2 : -2 // Determine the type of trend
smoothType = na(trendType) ? na : round(sma(trendType, smooth) / 2) * 2 // Calculate the smoothed trend type oscillator
//============================================================================================================================================================
//=========================================================================[Drawing]==========================================================================
colGreen30 = color.new(color.green, 10) // Define the color used in the drawings
colGreen90 = color.new(color.green, 70) // Define the color used in the drawings
colGray = color.new(color.gray, 20) // Define the color used in the drawings
colWhite90 = color.new(color.black, 100) // Define the color used in the drawings
colRed30 = color.new(color.red, 30) // Define the color used in the drawings
colRed90 = color.new(color.red, 70) // Define the color used in the drawings
band3 = plot(+3, title = "3", color=color.black,transp=100) // Draw the upper limit of the uptrend area
band2 = plot(+1, title = "2", color=color.black,transp=100) // Draw the boundary between Sideways and Uptrend areas
band1 = plot(-1, title = "1", color=color.black,transp=100) // Draw the boundary between Sideways and Downtrend areas
band0 = plot(-3, title = "0", color=color.black,transp=100) // Draw the lower limit of the downtrend area
fill(band2, band3, title = "Uptrend area", color = colGreen90) // Highlight the Uptrend area
fill(band1, band2, title = "Sideways area", color = colWhite90) // Highlight the Sideways area
fill(band0, band1, title = "Downtrend area", color = colRed90) // Highlight the Downtrend area
var label lblUp = na
label.delete(lblUp)
lblUp := label.new(x = time, y = 2, text = ".............POZİTİF",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size=size.normal, textalign = text.align_left) // Show Uptrend area label
var label lblSideways = na
label.delete(lblSideways)
lblSideways := label.new(x = time, y = 0, text = "...................YOK",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size = size.normal, textalign = text.align_left) // Show Sideways area label
var label lblDown = na
label.delete(lblDown)
lblDown := label.new(x = time, y = -2, text = "..............NEGATİF",
color = color.new(color.green, 100), textcolor = color.black,
style = label.style_label_left, xloc = xloc.bar_time,
yloc = yloc.price, size = size.normal, textalign = text.align_left) // Show Downtrend area label
var label lblCurrentType = na
label.delete(lblCurrentType)
lblCurrentType := label.new(x = time, y = smoothType,
color = color.new(color.blue, 30), style = label.style_label_right,
xloc = xloc.bar_time, yloc = yloc.price, size = size.small) // Show the latest status label
trendCol = smoothType == 2 ? colGreen30 : smoothType == 0 ? colGray : colRed30 // Determine the color of the oscillator in different conditions
//plot(smoothType, title = "Tr", color = trendCol,
// linewidth = 3, offset = -lag, style = plot.style_stepline) // Draw the trend type oscillator
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
PHP Code:
//@version=5
indicator("*", overlay = true, max_lines_count = 100, max_labels_count = 100, format=format.price)
////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © peacefulLizard50262
//@version=5
// Custom cosh function
cosh(float x) =>
(math.exp(x) + math.exp(-x)) / 2
// Custom acosh function
acosh(float x) =>
x < 1 ? na : math.log(x + math.sqrt(x * x - 1))
// Custom sinh function
sinh(float x) =>
(math.exp(x) - math.exp(-x)) / 2
// Custom asinh function
asinh(float x) =>
math.log(x + math.sqrt(x * x + 1))
// Custom inverse tangent function
atan(float x) =>
math.pi / 2 - math.atan(1 / x)
// Chebyshev Type I Moving Average
chebyshevI(float src, float len, float ripple) =>
a = 0.
b = 0.
g = 0.
chebyshev = 0.
a := cosh(1 / len * acosh(1 / (1 - ripple)))
b := sinh(1 / len * asinh(1 / ripple))
g := (a - b) / (a + b)
chebyshev := (1 - g) * src + g * nz(chebyshev[1])
chebyshev
// Chebyshev Type II Moving Average
chebyshevII(float src, float len, float ripple) =>
a = 0.
b = 0.
g = 0.
chebyshev = 0.
a := cosh(1 / len * acosh(1 / ripple))
b := sinh(1 / len * asinh(ripple))
g := (a - b) / (a + b)
chebyshev := (1 - g) * src + g * nz(chebyshev[1], src)
chebyshev
chebyshev(float src, float length, float ripple, bool style) =>
style ?
chebyshevI(src, length, ripple) :
chebyshevII(src, length, ripple)
source44 = input.source(hl2, "Source")
up_color = input.color(color.new(color.green, 20), "Up Color")
down_color = input.color(color.new(color.red, 20), "Down Color")
text_color = input.color(color.black, "Text Color")
mean_length = input.float(24, "Mean Length", 5, 1000, 0.5)
mean_ripple = input.float(0.5, "Mean Ripple", 0.01, 0.99, 0.01)
style44 = input.bool(false, "True Chebyshev I | False : Chebyshev II")
atr_style = input.bool(true, "True: |Open-Close| False: High-Low")
atr_length = input.float(64, "ATR Length", 6, 1000, 0.5)
atr_ripple = input.float(0.05, "Mean Ripple", 0.01, 0.99, 0.01)
multiplier = input.float(1.5, "Multiplier", 0.125, 10, 0.125)
alerts = input.bool(false, "Alerts")
labels = input.bool(false, "Labels")
atr = chebyshev(atr_style ? high - low : math.abs(open - close), atr_length, atr_ripple, style44)
mean = chebyshevI(source44, mean_length, mean_ripple)
var float offset = 0.0
var bool state = na
var float newOffset = 0.0
crossover = ta.crossover(source44, offset)
position = source44 > offset
crossunder = ta.crossunder(source44, offset)
prevOffset = nz(offset[1])
if crossover[2] and position[1] and position or (position and position[1] and position[2])
newOffset := mean - atr * multiplier
offset := newOffset < nz(prevOffset) or close[1] > nz(prevOffset) ? newOffset : nz(prevOffset)
state := true
if crossunder[2] and not position[1] and not position or (not position and not position[1] and not position[2])
newOffset := mean + atr * multiplier
offset := newOffset > nz(prevOffset) or close[1] < nz(prevOffset) ? newOffset : nz(prevOffset)
state := false
cross = ta.cross(close, offset)
down_trend = not state and not state[1]
up_trend = state and state[1]
colour = up_trend ? up_color : down_trend ? down_color : color.new(color.white, 100)
if up_trend and not up_trend[1] and labels
label.new(bar_index, offset, "Up Trend \n" + str.tostring(close), color = up_color, style = label.style_label_up, textcolor = text_color)
alert("Up Trend at " + str.tostring(close))
else
alert("Up Trend at " + str.tostring(close))
if down_trend and not down_trend[1] and labels
label.new(bar_index, offset, "Down Trend \n" + str.tostring(close), color = down_color, style = label.style_label_down, textcolor = text_color)
alert("Down Trend at " + str.tostring(close))
else
alert("Down Trend at " + str.tostring(close))
plot(offset, "Trend", colour, style = plot.style_stepline_diamond)
//plotshape(cross, "Trend Is Getting Ready To Change", shape.xcross, location.belowbar, color = close > offset ? up_color : down_color)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Gedhusek
//@version=5
BackStep = input.int(27,"Analysis Period")
lowerValue = input.float(0.382,"Lower Fibonacci Level",options=[0.236, 0.382, 0.50, 0.618, 0.786])
upperValue = input.float(0.618,"Upper Fibonacci Level",options=[0.236, 0.382, 0.50, 0.618, 0.786])
showFill = input.bool(true,"Show Filling")
changeCandle = input.bool(true,"Change Candle Color")
atr77 = ta.atr(200)
max = ta.highest(close,BackStep)
min = ta.lowest(close,BackStep)
lowerFib = min + (max-min)*lowerValue
upperFib = min + (max-min)*upperValue
ma = ta.wma(close,6)
float closeVal = ma
float openVal = ma
color clrToUse = closeVal>upperFib and openVal>upperFib?color.green:closeVal<lowerFib and openVal<lowerFib?color.red:color.yellow
LowerFibLine = plot(lowerFib,title="0.382",color=color.rgb(189, 75, 255, 20))
UpperFibLine = plot(upperFib,title="0.618",color=color.rgb(189, 75, 255, 20))
float LowerRetracement = (max-min)*0.318
float UpperRetracement = (max-min)*0.618
//////////////////////////////////////////////////////
//@version=5
////////////////////////////////
length1=(1)
src1=close
start1 = input(0)
increment1 = input(0.001)
maximum1 = input(1, "Max Value")
out1 = ta.sar(start1, increment1, maximum1)
momo1 = src1 - src1[length1]
smdo1 = out1 - momo1
//plot(smdo1, "1.Döngü", style=plot.style_line, color=#f0ce0e)
color33 = smdo1 >= out1 ? color.red : color.lime
plot(smdo1, color=color33, linewidth=2, title="0",style=plot.style_stepline)
//////////////////////////////////////////////////////////////////////////////////////
start21 = input(0)
increment21 = input(0.001)
maximum21 = input(1, "Max Value")
out21 = ta.sar(start21, increment21, maximum21)
//plot(out21, "Döngü", style=plot.style_line, color=#f0ce0e)
plot(out21, color=color33, linewidth=2, title="1",style=plot.style_stepline)
//////////////////////////////////////////////////////////////////////////////////////////
//@version=5
import jdehorty/KernelFunctions/2 as kernel
DFT(x, y, Nx, _dir) =>
float _arg = 0.0
float _cos = 0.0
float _sin = 0.0
float xArr_i = 0.0
float yArr_i = 0.0
xArr = array.new_float(array.size(x))
yArr = array.new_float(array.size(y))
for i = 0 to Nx - 1 by 1
xArr_i := 0.0
yArr_i := 0.0
kx = float(i) / float(Nx)
_arg := -_dir * 2 * math.pi * kx
for k = 0 to Nx - 1 by 1
_cos := math.cos(k * _arg)
_sin := math.sin(k * _arg)
xArr_i += array.get(x, k) * _cos - array.get(y, k) * _sin
yArr_i += array.get(x, k) * _sin + array.get(y, k) * _cos
yArr_i
array.set(xArr, i, xArr_i)
array.set(yArr, i, yArr_i)
if _dir == 1
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i) / float(Nx))
array.set(y, i, array.get(yArr, i) / float(Nx))
else
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i))
array.set(y, i, array.get(yArr, i))
//======================================================================================================================
// INPUTS
//======================================================================================================================
N = input.int(1,"Fourier Period")
xval = input.source(close,"Fourier X Series",tooltip = "i.e. the source of the discrete Fourier"+
" transform (with the Y Series being the bars through time.)")
highlighting = input.bool(true,"Highlighting")
smoothing = input.int(10,"Kernel Smoothing")
//======================================================================================================================
// CALCULATIONS
//======================================================================================================================
// Fourier transform
x = array.new_float(N, 0.0)
y = array.new_float(N, 0.0)
for i = 0 to N - 1
array.set(x, i, xval[i])
array.set(y, i, 0.0)
DFT(x, y, N, 1)
mag = array.new_float(N, 0.0)
for i = 0 to N - 1
mag_i = math.sqrt(math.pow(array.get(x, i), 2) + math.pow(array.get(y, i), 2))
array.set(mag, i, mag_i)
dft = array.get(mag,0)
dfts = kernel.rationalQuadratic(dft,25,1,smoothing)
//======================================================================================================================
// DISPLAY
//======================================================================================================================
plot(dfts, "Stop", color = dfts > dft ? color.rgb(255, 82, 82, 100) : color.rgb(0, 230, 119, 100))
////////////////////////////////////////////////////////////////
// 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
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length55 = input(50)
src55 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma55 = 0.
var os = 0.
target = ta.sma(src55, length55)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length55), 2)
os := r2 > 0.5 ? math.sign(src55[1] - target[1]) : os
ma55 := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma55[1], target)
: ma55[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src55, display = display.none, editable = false)
css = os == 1 ? #0cb51a00 : #ff110000
plot1 = plot(ma55, '50MA'
, css)
fill_css = src55 > ma55 ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
PHP Code:
//@version=5
indicator("deneme", overlay = true, max_lines_count = 100, max_labels_count = 100, format=format.price)
////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © peacefulLizard50262
//@version=5
// Custom cosh function
cosh(float x) =>
(math.exp(x) + math.exp(-x)) / 2
// Custom acosh function
acosh(float x) =>
x < 1 ? na : math.log(x + math.sqrt(x * x - 1))
// Custom sinh function
sinh(float x) =>
(math.exp(x) - math.exp(-x)) / 2
// Custom asinh function
asinh(float x) =>
math.log(x + math.sqrt(x * x + 1))
// Custom inverse tangent function
atan(float x) =>
math.pi / 2 - math.atan(1 / x)
// Chebyshev Type I Moving Average
chebyshevI(float src, float len, float ripple) =>
a = 0.
b = 0.
g = 0.
chebyshev = 0.
a := cosh(1 / len * acosh(1 / (1 - ripple)))
b := sinh(1 / len * asinh(1 / ripple))
g := (a - b) / (a + b)
chebyshev := (1 - g) * src + g * nz(chebyshev[1])
chebyshev
// Chebyshev Type II Moving Average
chebyshevII(float src, float len, float ripple) =>
a = 0.
b = 0.
g = 0.
chebyshev = 0.
a := cosh(1 / len * acosh(1 / ripple))
b := sinh(1 / len * asinh(ripple))
g := (a - b) / (a + b)
chebyshev := (1 - g) * src + g * nz(chebyshev[1], src)
chebyshev
chebyshev(float src, float length, float ripple, bool style) =>
style ?
chebyshevI(src, length, ripple) :
chebyshevII(src, length, ripple)
source44 = input.source(hl2, "Source")
up_color = input.color(color.new(color.green, 20), "Up Color")
down_color = input.color(color.new(color.red, 20), "Down Color")
text_color = input.color(color.black, "Text Color")
mean_length = input.float(24, "Mean Length", 5, 1000, 0.5)
mean_ripple = input.float(0.5, "Mean Ripple", 0.01, 0.99, 0.01)
style44 = input.bool(false, "True Chebyshev I | False : Chebyshev II")
atr_style = input.bool(true, "True: |Open-Close| False: High-Low")
atr_length = input.float(64, "ATR Length", 6, 1000, 0.5)
atr_ripple = input.float(0.05, "Mean Ripple", 0.01, 0.99, 0.01)
multiplier = input.float(1.5, "Multiplier", 0.125, 10, 0.125)
alerts = input.bool(false, "Alerts")
labels = input.bool(true, "Labels")
atr = chebyshev(atr_style ? high - low : math.abs(open - close), atr_length, atr_ripple, style44)
mean = chebyshevI(source44, mean_length, mean_ripple)
var float offset = 0.0
var bool state = na
var float newOffset = 0.0
crossover = ta.crossover(source44, offset)
position = source44 > offset
crossunder = ta.crossunder(source44, offset)
prevOffset = nz(offset[1])
if crossover[2] and position[1] and position or (position and position[1] and position[2])
newOffset := mean - atr * multiplier
offset := newOffset < nz(prevOffset) or close[1] > nz(prevOffset) ? newOffset : nz(prevOffset)
state := true
if crossunder[2] and not position[1] and not position or (not position and not position[1] and not position[2])
newOffset := mean + atr * multiplier
offset := newOffset > nz(prevOffset) or close[1] < nz(prevOffset) ? newOffset : nz(prevOffset)
state := false
cross = ta.cross(close, offset)
down_trend = not state and not state[1]
up_trend = state and state[1]
colour = up_trend ? up_color : down_trend ? down_color : color.new(color.white, 100)
if up_trend and not up_trend[1] and labels
label.new(bar_index, offset, "Up Trend \n" + str.tostring(close), color = up_color, style = label.style_label_up, textcolor = text_color)
alert("Up Trend at " + str.tostring(close))
else
alert("Up Trend at " + str.tostring(close))
if down_trend and not down_trend[1] and labels
label.new(bar_index, offset, "Down Trend \n" + str.tostring(close), color = down_color, style = label.style_label_down, textcolor = text_color)
alert("Down Trend at " + str.tostring(close))
else
alert("Down Trend at " + str.tostring(close))
plot(offset, "Trend", colour, style = plot.style_stepline_diamond)
//plotshape(cross, "Trend Is Getting Ready To Change", shape.xcross, location.belowbar, color = close > offset ? up_color : down_color)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Gedhusek
//@version=5
BackStep = input.int(27,"Analysis Period")
lowerValue = input.float(0.382,"Lower Fibonacci Level",options=[0.236, 0.382, 0.50, 0.618, 0.786])
upperValue = input.float(0.618,"Upper Fibonacci Level",options=[0.236, 0.382, 0.50, 0.618, 0.786])
showFill = input.bool(true,"Show Filling")
changeCandle = input.bool(true,"Change Candle Color")
atr77 = ta.atr(200)
max = ta.highest(close,BackStep)
min = ta.lowest(close,BackStep)
lowerFib = min + (max-min)*lowerValue
upperFib = min + (max-min)*upperValue
ma = ta.wma(close,6)
float closeVal = ma
float openVal = ma
color clrToUse = closeVal>upperFib and openVal>upperFib?color.green:closeVal<lowerFib and openVal<lowerFib?color.red:color.yellow
LowerFibLine = plot(lowerFib,title="0.382",color=color.rgb(189, 75, 255, 20))
UpperFibLine = plot(upperFib,title="0.618",color=color.rgb(189, 75, 255, 20))
float LowerRetracement = (max-min)*0.318
float UpperRetracement = (max-min)*0.618
//////////////////////////////////////////////////////
//@version=5
////////////////////////////////
length1=(1)
src1=close
start1 = input(0)
increment1 = input(0.001)
maximum1 = input(1, "Max Value")
out1 = ta.sar(start1, increment1, maximum1)
momo1 = src1 - src1[length1]
smdo1 = out1 - momo1
//plot(smdo1, "1.Döngü", style=plot.style_line, color=#f0ce0e)
color33 = smdo1 >= out1 ? color.red : color.lime
plot(smdo1, color=color33, linewidth=2, title="0",style=plot.style_stepline)
//////////////////////////////////////////////////////////////////////////////////////
start21 = input(0)
increment21 = input(0.001)
maximum21 = input(1, "Max Value")
out21 = ta.sar(start21, increment21, maximum21)
//plot(out21, "Döngü", style=plot.style_line, color=#f0ce0e)
plot(out21, color=color33, linewidth=2, title="1",style=plot.style_stepline)
//////////////////////////////////////////////////////////////////////////////////////////
//@version=5
import jdehorty/KernelFunctions/2 as kernel
DFT(x, y, Nx, _dir) =>
float _arg = 0.0
float _cos = 0.0
float _sin = 0.0
float xArr_i = 0.0
float yArr_i = 0.0
xArr = array.new_float(array.size(x))
yArr = array.new_float(array.size(y))
for i = 0 to Nx - 1 by 1
xArr_i := 0.0
yArr_i := 0.0
kx = float(i) / float(Nx)
_arg := -_dir * 2 * math.pi * kx
for k = 0 to Nx - 1 by 1
_cos := math.cos(k * _arg)
_sin := math.sin(k * _arg)
xArr_i += array.get(x, k) * _cos - array.get(y, k) * _sin
yArr_i += array.get(x, k) * _sin + array.get(y, k) * _cos
yArr_i
array.set(xArr, i, xArr_i)
array.set(yArr, i, yArr_i)
if _dir == 1
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i) / float(Nx))
array.set(y, i, array.get(yArr, i) / float(Nx))
else
for i = 0 to Nx - 1 by 1
array.set(x, i, array.get(xArr, i))
array.set(y, i, array.get(yArr, i))
//======================================================================================================================
// INPUTS
//======================================================================================================================
N = input.int(1,"Fourier Period")
xval = input.source(close,"Fourier X Series",tooltip = "i.e. the source of the discrete Fourier"+
" transform (with the Y Series being the bars through time.)")
highlighting = input.bool(true,"Highlighting")
smoothing = input.int(10,"Kernel Smoothing")
//======================================================================================================================
// CALCULATIONS
//======================================================================================================================
// Fourier transform
x = array.new_float(N, 0.0)
y = array.new_float(N, 0.0)
for i = 0 to N - 1
array.set(x, i, xval[i])
array.set(y, i, 0.0)
DFT(x, y, N, 1)
mag = array.new_float(N, 0.0)
for i = 0 to N - 1
mag_i = math.sqrt(math.pow(array.get(x, i), 2) + math.pow(array.get(y, i), 2))
array.set(mag, i, mag_i)
dft = array.get(mag,0)
dfts = kernel.rationalQuadratic(dft,25,1,smoothing)
//======================================================================================================================
// DISPLAY
//======================================================================================================================
plot(dfts, "Stop", color = dfts > dft ? color.rgb(255, 82, 82, 100) : color.rgb(0, 230, 119, 100))
////////////////////////////////////////////////////////////////
// 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
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length55 = input(5)
src55 = input(close)
//------------------------------------------------------------------------------
//Signal moving average
//-----------------------------------------------------------------------------{
var ma55 = 0.
var os = 0.
target = ta.sma(src55, length55)
abs_diff = math.abs(target - target[1])
r2 = math.pow(ta.correlation(close, bar_index, length55), 2)
os := r2 > 0.5 ? math.sign(src55[1] - target[1]) : os
ma55 := r2 > 0.5 ? r2 * target + (1 - r2) * nz(ma55[1], target)
: ma55[1] - abs_diff * os
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot0 = plot(src55, display = display.none, editable = false)
css = os == 1 ? #0cb51a00 : #ff110000
plot1 = plot(ma55, '5MA'
, css)
//fill_css = src > ma ? color.new(#0cb51a, 80) : color.new(#ff1100, 80)
//fill(plot0, plot1, fill_css, 'Fill')
//-----------------------------------------------------------------------------}
-
PHP Code:
//@version=5
indicator("*", max_lines_count=500, overlay=true, max_bars_back=201)
sp = '***********'
var linefill[] a_lf = array.new <linefill> ()
cLineUp = input.color (color.new(color.lime, 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cLineDn = input.color (color.new( #FF0000 , 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillUp = input.color (color.new(color.lime, 75), '*|*', group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillDn = input.color (color.new( #FF0000 , 75), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
lookback = input.int (125 , 'x bars back' , minval=0, maxval=125)
min = math.min (close, open) // lowest point of body
max = math.max (close, open) // highest point of body
mid = math.avg (close, open) // middle point of body
ixt = input.bool (true, '3', inline='e', group='extend lines')
iExt = input.string('both', '', options=[ 'none' , 'left' , 'right' , 'both' ], inline='e', group='extend lines')
aExt1 = array.from ( 'none' , 'left' , 'right' , 'both' )
aExt2 = array.from (extend.none, extend.left, extend.right, extend.both)
xt = array.get (aExt2 , array.indexof (aExt1, iExt))
//{
// B
//
// ◊
// ◊ ◊
// ◊ ◊
// ◊ ◊
// A ◊ ◊ C
// ◊ ◊
// ◊ ◊
// ◊ ◊
// ◊
//
// D
//}
if barstate.islast
while array.size(a_lf) > 0
fill = array.pop(a_lf)
line.delete(linefill.get_line1(fill))
line.delete(linefill.get_line1(fill))
linefill.delete (fill)
//
for i = 0 to lookback
cLn = close[i] > open[i] ? cLineUp : cLineDn
cFl = close[i] > open[i] ? cFillUp : cFillDn
Ax = bar_index - (i + 1), Ay = mid[i]
Bx = bar_index - (i ), By = max[i] + (max[i] - mid[i]) * (2 / 3)
Cx = bar_index - (i - 1), Cy = Ay
Dx = Bx , Dy = min[i] - (max[i] - mid[i]) * (2 / 3)
//
array.unshift(a_lf, linefill.new(
line.new(Ax, Ay, Bx, By, color= cLn),
line.new(Dx, Dy, Cx, Cy, color= cLn), color= cFl))
array.unshift(a_lf, linefill.new(
line.new(Bx, By, Cx, Cy, color= cLn),
line.new(Ax, Ay, Dx, Dy, color= cLn), color= na ))
idx = math.min(array.size(a_lf) -1, math.min(lookback, input.int(1, '', minval=0, maxval=125, inline='e', group='extend lines'))) * 2
//
if ixt
line.set_extend(linefill.get_line1(array.get(a_lf, array.size(a_lf) - idx -1)), xt)
line.set_extend(linefill.get_line2(array.get(a_lf, array.size(a_lf) - idx -2)), xt)
barcolor(color.new(color.blue, 100))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636
//@version=5
// input
start11 = 2
lookback11 = input(1, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp11 = 1
smoothing11 = input(1, "Smoothing")
source11 = input(close, "Source")
// global
var ix = -1
var mal = array.new_int(0)
// functions
avg(source11, len11) =>
sum = 0.0
for i = 0 to len11-1
sum += source11[i]
sum/len11
bull = close > open
wick_touch(x) =>
bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch(x) =>
bull ? (open < x and x < close) : (close < x and x < open)
touches(t) =>
touches = 0
for i = 0 to lookback11-1
touches += t[i] ? 1 : 0
touches
// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start11
cma = avg(source11, prev_mal)
cma_p1 = avg(source11, prev_mal+1)
cma_m1 = avg(source11, prev_mal-1)
d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))
d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))
any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp11 : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp11 : na))
uptrend = cma > cma[1]
downtrend = cma < cma[1]
against_trend = (uptrend and close < cma) or (downtrend and close > cma)
new_mal = no_wick_touch or against_trend ? prev_mal-resp11 : (any_body_touch ? prev_mal+resp11 : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal
array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))
// graph
scma = ta.ema(cma, smoothing11)
plot(scma, "1MA", color=color.yellow)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// input
start1122 = 20
lookback1122 = input(4, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp1122 = 1
smoothing1122 = input(1, "Smoothing")
source1122 = input(close, "Source")
// global
var ix11 = -1
var mal11 = array.new_int(0)
// functions
avg11(source1122, len1122) =>
sum = 0.0
for i = 0 to len1122-1
sum += source1122[i]
sum/len1122
bull11 = close > open
wick_touch11(x) =>
bull11 ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch11(x) =>
bull11 ? (open < x and x < close) : (close < x and x < open)
touches11(t) =>
touches = 0
for i = 0 to lookback1122-1
touches += t[i] ? 1 : 0
touches
// local
ix11 := ix11+1
prev_mal11 = ix >= 1 ? array.get(mal11, ix11-1) : start11
cma11 = avg11(source1122, prev_mal11)
cma_p111 = avg11(source1122, prev_mal11+1)
cma_m111 = avg11(source1122, prev_mal11-1)
d11 = touches11(wick_touch(cma11))
d_p111 = touches11(wick_touch(cma_p111))
d_m111 = touches11(wick_touch(cma_m111))
d_b11 = touches(body_touch(cma11))
d_p1_b11 = touches(body_touch(cma_p111))
d_m1_b11 = touches(body_touch(cma_m111))
any_body_touch11 = d_b11 > 0 or d_p1_b11 > 0 or d_m1_b11 > 0
no_wick_touch11 = d <= 0 and d_p111 <= 0 and d_m111 <= 0
wick_maximized11 = d >= d_p111 and d >= d_m111 ? prev_mal11 : (d_p111 >= d and d_p111 >= d_m111 ? prev_mal11+resp1122 : (d_m111 >= d and d_m111 >= d_p111 ? prev_mal11-resp1122 : na))
uptrend11 = cma11 > cma11[1]
downtrend11 = cma11 < cma11[1]
against_trend11 = (uptrend11 and close < cma11) or (downtrend11 and close > cma11)
new_mal11 = no_wick_touch11 or against_trend11 ? prev_mal11-resp1122 : (any_body_touch ? prev_mal11+resp1122 : wick_maximized11)
next_mal11 = na(new_mal11) ? prev_mal11 : new_mal11
array.push(mal11, next_mal11 < 2 ? 2 : (next_mal11 > 200 ? 200 : next_mal11))
// graph
scma11 = ta.ema(cma11, smoothing11)
plot(scma11, "4MA", color=color.blue)
crossUp = ta.crossover(scma,scma11)
crossDn = ta.crossunder(scma,scma11)
plotshape(crossUp,
title='Cross Long',
style=shape.labelup,
location=location.belowbar,
text='A',
textcolor=color.new(color.white, 0),
color=color.new(color.teal, 0),
size=size.auto,
editable=true)
plotshape(crossDn,
title='Cross Short',
style=shape.labeldown,
location=location.abovebar,
text='S',
textcolor=color.new(color.white, 0),
color=color.new(color.maroon, 0),
size=size.auto,
editable=true)
//Alerts
alertcondition(crossUp != 0, 'Long', 'Long')
alertcondition(crossDn != 0, 'Short', 'Short')
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// input
start112233 = 20
lookback112233 = input(10, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp112233 = 1
smoothing112233 = input(1, "Smoothing")
source112233 = input(close, "Source")
// global
var ix1133 = -1
var mal1133 = array.new_int(0)
// functions
avg1133(source112233, len112233) =>
sum = 0.0
for i = 0 to len112233-1
sum += source112233[i]
sum/len112233
bull1133 = close > open
wick_touch1133(x) =>
bull1133 ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch1133(x) =>
bull1133 ? (open < x and x < close) : (close < x and x < open)
touches1133(t) =>
touches = 0
for i = 0 to lookback112233-1
touches += t[i] ? 1 : 0
touches
// local
ix1133 := ix1133+1
prev_mal1133 = ix >= 1 ? array.get(mal1133, ix1133-1) : start112233
cma1133 = avg1133(source112233, prev_mal1133)
cma_p11133 = avg1133(source112233, prev_mal1133+1)
cma_m11133 = avg1133(source112233, prev_mal1133-1)
d1133 = touches1133(wick_touch(cma1133))
d_p11133 = touches1133(wick_touch(cma_p11133))
d_m11133 = touches1133(wick_touch(cma_m11133))
d_b1133 = touches(body_touch(cma1133))
d_p1_b1133 = touches(body_touch(cma_p11133))
d_m1_b1133 = touches(body_touch(cma_m11133))
any_body_touch1133 = d_b1133 > 0 or d_p1_b1133 > 0 or d_m1_b1133 > 0
no_wick_touch1133 = d <= 0 and d_p11133 <= 0 and d_m11133 <= 0
wick_maximized1133 = d >= d_p11133 and d >= d_m11133 ? prev_mal1133 : (d_p11133 >= d and d_p11133 >= d_m11133 ? prev_mal1133+resp112233 : (d_m11133 >= d and d_m11133 >= d_p11133 ? prev_mal1133-resp112233 : na))
uptrend1133 = cma1133 > cma1133[1]
downtrend1133 = cma1133 < cma1133[1]
against_trend1133 = (uptrend1133 and close < cma1133) or (downtrend1133 and close > cma1133)
new_mal1133 = no_wick_touch1133 or against_trend1133 ? prev_mal1133-resp112233 : (any_body_touch ? prev_mal1133+resp112233 : wick_maximized1133)
next_mal1133 = na(new_mal1133) ? prev_mal1133 : new_mal1133
array.push(mal1133, next_mal1133 < 2 ? 2 : (next_mal1133 > 200 ? 200 : next_mal1133))
// graph
scma1133 = ta.ema(cma1133, smoothing112233)
plot(scma1133, "4MA", color=color.fuchsia)
crossUp33 = ta.crossover(scma,scma1133)
crossDn33 = ta.crossunder(scma,scma11)
plotshape(crossUp33,
title='Cross Long',
style=shape.labelup,
location=location.belowbar,
text='AA',
textcolor=color.new(color.white, 0),
color=color.new(color.yellow, 0),
size=size.auto,
editable=true)
plotshape(crossDn33,
title='Cross Short',
style=shape.labeldown,
location=location.abovebar,
text='SS',
textcolor=color.new(color.white, 0),
color=color.new(color.blue, 0),
size=size.auto,
editable=true)
//Alerts
alertcondition(crossUp != 0, 'Long', 'Long')
alertcondition(crossDn != 0, 'Short', 'Short')
PHP Code:
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636
//@version=5
indicator('*', max_lines_count=200, overlay=true, max_bars_back=201,max_boxes_count = 200)
// input
start11 = 2
lookback11 = input(1, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp11 = 1
smoothing11 = input(1, "Smoothing")
source11 = input(close, "Source")
// global
var ix = -1
var mal = array.new_int(0)
// functions
avg(source11, len11) =>
sum = 0.0
for i = 0 to len11-1
sum += source11[i]
sum/len11
bull = close > open
wick_touch(x) =>
bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch(x) =>
bull ? (open < x and x < close) : (close < x and x < open)
touches(t) =>
touches = 0
for i = 0 to lookback11-1
touches += t[i] ? 1 : 0
touches
// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start11
cma = avg(source11, prev_mal)
cma_p1 = avg(source11, prev_mal+1)
cma_m1 = avg(source11, prev_mal-1)
d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))
d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))
any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp11 : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp11 : na))
uptrend = cma > cma[1]
downtrend = cma < cma[1]
against_trend = (uptrend and close < cma) or (downtrend and close > cma)
new_mal = no_wick_touch or against_trend ? prev_mal-resp11 : (any_body_touch ? prev_mal+resp11 : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal
array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))
// graph
scma = ta.ema(cma, smoothing11)
plot(scma, "MA1", color=color.rgb(255, 235, 59, 100))
///////////////////////////////
// input
start1122 = 2
lookback1122 = input(4, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp1122 = 1
smoothing1122 = input(1, "Smoothing")
source1122 = input(close, "Source")
// global
var ix11 = -1
var mal11 = array.new_int(0)
// functions
avg11(source1122, len1122) =>
sum = 0.0
for i = 0 to len1122-1
sum += source1122[i]
sum/len1122
bull11 = close > open
wick_touch11(x) =>
bull11 ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch11(x) =>
bull11 ? (open < x and x < close) : (close < x and x < open)
touches11(t) =>
touches = 0
for i = 0 to lookback1122-1
touches += t[i] ? 1 : 0
touches
// local
ix11 := ix11+1
prev_mal11 = ix >= 1 ? array.get(mal11, ix11-1) : start11
cma11 = avg11(source1122, prev_mal11)
cma_p111 = avg11(source1122, prev_mal11+1)
cma_m111 = avg11(source1122, prev_mal11-1)
d11 = touches11(wick_touch(cma11))
d_p111 = touches11(wick_touch(cma_p111))
d_m111 = touches11(wick_touch(cma_m111))
d_b11 = touches(body_touch(cma11))
d_p1_b11 = touches(body_touch(cma_p111))
d_m1_b11 = touches(body_touch(cma_m111))
any_body_touch11 = d_b11 > 0 or d_p1_b11 > 0 or d_m1_b11 > 0
no_wick_touch11 = d <= 0 and d_p111 <= 0 and d_m111 <= 0
wick_maximized11 = d >= d_p111 and d >= d_m111 ? prev_mal11 : (d_p111 >= d and d_p111 >= d_m111 ? prev_mal11+resp1122 : (d_m111 >= d and d_m111 >= d_p111 ? prev_mal11-resp1122 : na))
uptrend11 = cma11 > cma11[1]
downtrend11 = cma11 < cma11[1]
against_trend11 = (uptrend11 and close < cma11) or (downtrend11 and close > cma11)
new_mal11 = no_wick_touch11 or against_trend11 ? prev_mal11-resp1122 : (any_body_touch ? prev_mal11+resp1122 : wick_maximized11)
next_mal11 = na(new_mal11) ? prev_mal11 : new_mal11
array.push(mal11, next_mal11 < 2 ? 2 : (next_mal11 > 200 ? 200 : next_mal11))
// graph
scma11 = ta.ema(cma11, smoothing11)
plot(scma11, "MA2", color=color.rgb(33, 149, 243, 100))
crossUp = ta.crossover(scma,scma11)
crossDn = ta.crossunder(scma,scma11)
plotshape(crossUp,
title='Cross Long',
style=shape.labelup,
location=location.belowbar,
text='A',
textcolor=color.new(color.white, 0),
color=color.new(color.teal, 0),
size=size.auto,
editable=true)
plotshape(crossDn,
title='Cross Short',
style=shape.labeldown,
location=location.abovebar,
text='S',
textcolor=color.new(color.white, 0),
color=color.new(color.maroon, 0),
size=size.auto,
editable=true)
//Alerts
alertcondition(crossUp != 0, 'Long', 'Long')
alertcondition(crossDn != 0, 'Short', 'Short')
//////////////////////////////////////////////////////////
// © GASANOV_KIRILL
// v 2.0.1
// added labels
// removed std 257v
// setted up fib 274v
//@version=5
// INPUT
show_difference_label = input.bool(title ="Show difference", defval = true)
// alma
alma_source = close
alma_period = input.int(title='Window Size', defval=200, group='Alma')
alma_offset = input.float(title='Offset', defval=0.80, group='Alma')
alma_sigma = input.float(title='Sigma', defval=5.5, group='Alma')
border_first = input.float(title='First border offset', defval=4, group='Borders')
border_second = input.float(title='Second border offset (%)', defval=0.7, group='Borders')
border_third = input.float(title='Third border offset (%)', defval=1.4, group='Borders')
// keltner
kc_period = input.int(title='Keltner period', defval=100, group='Keltner')
kc_mult = input.float(title='Keltner mult.', defval=4, group='Keltner')
kc_atr_period = input.int(title='Keltner atr period', defval=50, group='Keltner')
kc_ma_period = input.int(title='Keltner ma period', defval=70, group='Keltner')
// fibonacci
fib_ma_period = input.int(title='Fibonacci ma period', defval=25, group='Fibonacci')
fib_atr_period = input.int(title='Fibonacci atr period', defval=25, group='Fibonacci')
fib_ratio_mult = input.float(title='Fibonacci ration', defval=3.5, group='Fibonacci')
fib_smooth_period = input.int(title='Fibonacci smooth period', defval=100, group='Fibonacci')
border_kc_lerp = input.float(title='Border kc lerp', defval=0.95, minval=0, maxval=1, group='Borders and lerp')
border_fib_lerp = input.float(title='Border fib lerp', defval=0.45, minval=0, maxval=1, group='Borders and lerp')
//PROPERTIES -----------------------------------------------------
get_kc_lerp() =>
border_kc_lerp
// FUNCTIONS -------------------------------------------------------------------
// ALMA MA
alma_template(source, length) =>
ta.alma(source, length, alma_offset, alma_sigma)
// Hull MA
hull_ma_build(source, length) =>
hullma = ta.wma(2 * ta.wma(source, length / 2) - ta.wma(source, length), math.floor(math.sqrt(length)))
hullma
// number to percent
do_percent(percent) =>
percent / 100
// percent difference from base value to other value
do_percent_diff(base_value, other_value) =>
((other_value*100)/base_value)-100
// create new coord for line based on percentage
do_offset_line(main_line, percent) =>
main_line * (1 + do_percent(percent))
// interpolates values
do_lerp(value_a, value_b, t) =>
(1 - t) * value_a + t * value_b
// normalize value between range min-max
do_normalize(min, max, value) =>
(value - min) / (max - min)
do_normalize_negative(min, max, value) =>
2 * ((value - min) / (max - min)) - 1
do_print(_text) =>
// Create label on the first bar.
var _label = label.new(bar_index, na, _text, xloc.bar_index, yloc.price, color.white, label.style_label_up, color.green, size.large, text.align_left)
// On next bars, update the label's x and y position, and the text it displays.
label.set_xy(_label, bar_index, ta.highest(10)[1])
label.set_text(_label, _text)
do_label(value_label, value_text, value_barindex, value_price) =>
label.set_xy(value_label, value_barindex, value_price)
label.set_text(value_label, value_text)
// MAIN ------------------------------------------------
// Fibonacci
fib_ma = ta.ema(close, fib_ma_period)
fib_tr1 = math.max(high - low, math.abs(high - close[1]))
fib_tr = math.max(fib_tr1, math.abs(low - close[1]))
fib_atr = ta.sma(fib_tr, fib_atr_period)
// green or red
//fib_prev_candle_state = ta.ema(close[1] > open[1] ? 1 : 0, 100)
// if trend not match border type (up-top, down-bottom) we minimise affect
//fib_ratio = fib_atr * fib_ratio_mult
//fib_top = fib_ma + (fib_ratio * fib_prev_candle_state)
//fib_bottom = fib_ma - (fib_ratio *(1-fib_prev_candle_state))
fib_ratio = fib_atr * fib_ratio_mult
fib_top = fib_ma + (fib_ratio)
fib_bottom = fib_ma - (fib_ratio)
fib_top_smoothed = hull_ma_build(fib_top, fib_smooth_period)
fib_bottom_smoothed = hull_ma_build(fib_bottom, fib_smooth_period)
// Keltner channel
kc_ma = ta.ema(alma_source, kc_period)
kc_range_ma = ta.atr(kc_atr_period)
kc_top = kc_ma + kc_range_ma * kc_mult
kc_bottom = kc_ma - kc_range_ma * kc_mult
// Ma based on kc_top/bottom and hma
kc_top_ma = hull_ma_build(kc_top, kc_ma_period)
kc_bottom_ma = hull_ma_build(kc_bottom, kc_ma_period)
// Main trend line
alma_main = alma_template(alma_source, alma_period)
// Calculate alma borders (top,bottom)
alma_top_raw = do_offset_line(alma_main, border_first)
alma_bottom_raw = do_offset_line(alma_main, -border_first)
// Lerp borders with kc
kc_lerp = get_kc_lerp()
alma_top = alma_top_raw
alma_bottom = alma_bottom_raw
// kc lerp
alma_top := do_lerp(alma_top, kc_top_ma, kc_lerp)
alma_bottom := do_lerp(alma_bottom, kc_bottom_ma, kc_lerp)
// Second pass ------------------------------------------------------------------
// price calculations
// normalize price between borders in range [-infinity[-1,+1]+infintiy]
normalized_price_top = do_normalize(alma_main, alma_top, close)
normalized_price_bottom = 1 - do_normalize(alma_bottom, alma_main, close)
normalized_price_top := normalized_price_top < 1 ? 0 : normalized_price_top
normalized_price_bottom := normalized_price_bottom < 1 ? 0 : normalized_price_bottom
// fibonacci lerp values
fib_lerp_top = 0.0
fib_lerp_bottom = 0.0
fib_lerp_top := normalized_price_top * border_fib_lerp
fib_lerp_bottom := normalized_price_bottom * border_fib_lerp
// apply fibonacci to border
alma_top := do_lerp(alma_top, fib_top_smoothed, border_fib_lerp)
alma_bottom := do_lerp(alma_bottom, fib_bottom_smoothed, border_fib_lerp)
// construct additional border layers
alma_top_2 = do_offset_line(alma_top, border_second)
alma_top_3 = do_offset_line(alma_top, border_third)
alma_bottom_2 = do_offset_line(alma_bottom, -border_second)
alma_bottom_3 = do_offset_line(alma_bottom, -border_third)
//plot(alma_top_2)
//plot(alma_bottom_2)
//plot(alma_top_3)
//plot(alma_bottom_3)
// THIRD PASS ------------------------------------------------
// Percent from main line.
normalized_price_top_for_diff = do_normalize(alma_bottom, alma_top, close)
// clamp normalized value
normalized_price_top_for_diff := ta.ema(normalized_price_top_for_diff < 0 ? 0: normalized_price_top_for_diff > 1 ? 1: normalized_price_top_for_diff, kc_period)
normalized_price_bottom_for_diff = 1 - normalized_price_top_for_diff
difference_percent_top = do_percent_diff(alma_main, alma_top_2)
difference_percent_bottom = do_percent_diff(alma_main, alma_bottom_2)
difference_percent_overall = difference_percent_top - difference_percent_bottom
mult_diff_overall = difference_percent_overall/10 < 1 ? 1 : difference_percent_overall/10
additional_percent_offset_top = normalized_price_top_for_diff * ((difference_percent_top/10) * mult_diff_overall)
additional_percent_offset_bottom = normalized_price_bottom_for_diff * ((difference_percent_bottom/10)* mult_diff_overall)
border_second_offset_top = border_second + additional_percent_offset_top/2
border_third_offset_top = border_third + additional_percent_offset_top
border_second_offset_bottom = -border_second + additional_percent_offset_bottom/2
border_third_offset_bottom = -border_third + additional_percent_offset_bottom
// calculate new alma borders
alma_top := ta.ema(alma_top,9)
alma_top_2 := do_offset_line(alma_top, border_second_offset_top)
alma_top_3 := do_offset_line(alma_top, border_third_offset_top)
alma_bottom_2 := do_offset_line(alma_bottom, border_second_offset_bottom)
alma_bottom_3 := do_offset_line(alma_bottom, border_third_offset_bottom)
// PLOT -------------------------------------------
//main lines
//plot(alma_main, title='Trend line', color=color.new(#7b1fa2, 0), style=plot.style_circles)
//borders
//plot(alma_top, title='Border top 1', color=color.new(#fff176, 50), linewidth=4)
//plot(alma_top_2, title='Border top 2', color=color.new(#e57373, 0))
//plot(alma_top_3, title='Border top 3', color=color.new(#ef5350, 0), linewidth=4)
//plot(alma_bottom, title='Border bottom 1', color=color.new(#009688, 50), linewidth=4)
//plot(alma_bottom_2, title='Border bottom 2', color=color.new(#81c784, 0))
//plot(alma_bottom_3, title='Border bottom 3', color=color.new(#4caf50, 0), linewidth=4)
// keltner
//plot(kc_top, color=color.new(color.maroon, 0), title='KC+', display=display.none)
//plot(kc_bottom, color=color.new(color.orange, 0), title='KC-', display=display.none)
//plot(kc_top_ma, color=color.new(color.maroon, 0), title='KC+ HMA', style=plot.style_circles, display=display.none)
//plot(kc_bottom_ma, color=color.new(color.orange, 0), title='KC- HMA', style=plot.style_circles, display=display.none)
// fibonacci
//plot(fib_top, color=color.new(color.red, 0), title='Fib+', display=display.none)
//plot(fib_bottom, color=color.new(color.green, 0), title='Fib-', display=display.none)
//plot(fib_top_smoothed, color=color.new(color.red, 0), title='Fib+ Smooth', style=plot.style_circles, display=display.none)
//plot(fib_bottom_smoothed, color=color.new(color.green, 0), title='Fib- Smooth', style=plot.style_circles, display=display.none)
// LABELS -----------------------------------------------------
var drawing_color_top = color.new(#e57373, 0)
var drawing_color_bottom = color.new(#81c784, 0)
var drawing_color_main = color.new(#ab47bc, 0)
var drawing_color_overall = color.new(#ec407a,0)
// Difference label
difference_bar_index = bar_index + 5
var label_difference_top = label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_top, textcolor = color.black, style = label.style_label_down)
var label_difference_bottom = label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_bottom, textcolor = color.black, style = label.style_label_up)
var label_difference_overall =label.new(x = bar_index, y = close, yloc = yloc.price, color = drawing_color_overall, textcolor = color.black, style = label.style_label_down)
// helper arrow lines
line_difference_top = line.new(x1 = bar_index, y1 = alma_top_2, x2 =difference_bar_index, y2 = alma_top_2, style = line.style_arrow_left,color = drawing_color_top)
line_difference_bottom = line.new(x1 = bar_index, y1 = alma_bottom_2,x2 =difference_bar_index, y2 = alma_bottom_2, style = line.style_arrow_left,color = drawing_color_bottom)
line_difference_main_****t = line.new(x1 = difference_bar_index, y1 = alma_bottom_2, x2 =difference_bar_index, y2 = alma_top_2, style = line.style_arrow_both,color=drawing_color_overall)
line_difference_main_overall = line.new(x1 = difference_bar_index, y1 = alma_main, x2 =difference_bar_index+5, y2 = alma_main, style = line.style_arrow_left,color=drawing_color_overall)
line.delete(line_difference_top[1]) // redraw lines
line.delete(line_difference_bottom[1])
line.delete(line_difference_main_****t[1])
line.delete(line_difference_main_overall[1])
if show_difference_label
do_label(label_difference_top, "+"+ str.tostring(difference_percent_top, format.percent), difference_bar_index, alma_top_2)
do_label(label_difference_bottom, str.tostring(difference_percent_bottom, format.percent), difference_bar_index, alma_bottom_2)
do_label(label_difference_overall, str.tostring(difference_percent_overall, format.percent), difference_bar_index+5,alma_main)
else
label.delete(label_difference_top)
label.delete(label_difference_bottom)
label.delete(label_difference_overall)
line.delete(line_difference_top)
line.delete(line_difference_bottom)
line.delete(line_difference_main_****t)
line.delete(line_difference_main_overall)
// Labels
//var label_difference_top = label.new(x = bar_index, y = close,yloc = yloc.price,color = color.white, textcolor = color.black,style = label.style_label_down)
//do_label(label_difference_top, "Textik", bar_index+5, alma_top_2)
//if not show_difference_label
//label.delete(label_difference_top)
//var label_difference_bottom = label.new(x = bar_index, y = close,yloc = yloc.price,color = color.white, textcolor = color.black, style = label.style_label_up)
//do_label(label_difference_bottom, "Textik", bar_index+5, alma_bottom_2)
//if not show_difference_label
// label.delete(label_difference_bottom)
////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © starbolt
//@version=5
len = input.int(3, 'Length', step=1, minval=1)
displace = input.int(1, 'Displace', step=1, minval=0)
ma_type = input.string('SMA', 'MA Type', options=['SMA', 'EMA', 'WMA', 'ALMA', 'VWMA', 'HMA', 'LSMA', 'SMMA', 'DEMA'])
alma_offset6 = input.float(0.85, 'ALMA Offset', step=0.01, minval=0, maxval=1)
alma_sigma6 = input.float(6, 'ALMA Sigma', step=0.01)
lsma_offset = input.int(0, 'LSMA Offset', step=1)
//Hilo Activator
float hilo = na
hi = ta.sma(high, len)
lo = ta.sma(low, len)
// Exponential Moving Average (EMA)
if ma_type == 'EMA'
hi := ta.ema(high, len)
lo := ta.ema(low, len)
// Weighted Moving Average (WMA)
if ma_type == 'WMA'
hi := ta.wma(high, len)
lo := ta.wma(low, len)
// Arnaud Legoux Moving Average (ALMA)
if ma_type == 'ALMA'
hi := ta.alma(high, len, alma_offset6, alma_sigma6)
lo := ta.alma(low, len, alma_offset6, alma_sigma6)
// Hull Moving Average (HMA)
if ma_type == 'HMA'
hi := ta.wma(2 * ta.wma(high, len / 2) - ta.wma(high, len), math.round(math.sqrt(len)))
lo := ta.wma(2 * ta.wma(low, len / 2) - ta.wma(low, len), math.round(math.sqrt(len)))
// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
hi := ta.vwma(high, len)
lo := ta.vwma(low, len)
// Least Square Moving Average (LSMA)
if ma_type == 'LSMA'
hi := ta.linreg(high, len, lsma_offset)
lo := ta.linreg(low, len, lsma_offset)
// Smoothed Moving Average (SMMA)
if ma_type == 'SMMA'
hi := (hi[1] * (len - 1) + high) / len
lo := (lo[1] * (len - 1) + low) / len
// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
e1_high = ta.ema(high, len)
e1_low = ta.ema(low, len)
hi := 2 * e1_high - ta.ema(e1_high, len)
lo := 2 * e1_low - ta.ema(e1_low, len)
hilo := close > hi[displace] ? 1 : close < lo[displace] ? -1 : hilo[1]
ghla = hilo == -1 ? hi[displace] : lo[displace]
color = hilo == -1 ? color.red : color.green
//Alerts
buyCondition = hilo == 1 and hilo[1] == -1
sellCondition = hilo == -1 and hilo[1] == 1
if buyCondition
alert('Long', alert.freq_once_per_bar)
if sellCondition
alert('Short', alert.freq_once_per_bar)
//Plots
plot(ghla, color=color, style=plot.style_stepline)
/////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid
//@version=5
//Inputs
length = input.int(20, 'Upper Length', inline='length')
length2 = input.int(20, 'Lower Length', inline='length')
astart = input.int(2, 'Draw Upper Line From Pivot #', inline='pivot')
aend = input.int(0, 'To Pivot #', inline='pivot')
bstart = input.int(3, 'Draw Lower Line From Pivot #', inline='pivot2')
bend = input.int(0, 'To Pivot #', inline='pivot2')
csrc = input.bool(false, 'Use Custom Source?', inline='custom')
src = input.source(close, 'Select:', inline='custom')
color55 = input.string('Red/Green', 'Line Color:', options=['Red/Green', 'White', 'Yellow', 'Blue'], inline='custom2')
lwidth = input.string('1', 'Line Width:', options=['1', '2', '3', '4'], inline='custom2')
//Conditions
up = ta.pivothigh(csrc ? src : high, length, length)
dn = ta.pivotlow(csrc ? src : low, length2, length2)
n = bar_index
a1 = ta.valuewhen(not na(up), n, astart)
b1 = ta.valuewhen(not na(dn), n, bstart)
a2 = ta.valuewhen(not na(up), n, aend)
b2 = ta.valuewhen(not na(dn), n, bend)
//Colors
color1 = color.red
color2 = color.green
if color55 == 'White'
color1 := color.white
color2 := color.white
color2
if color55 == 'Yellow'
color1 := color.yellow
color2 := color.yellow
color2
if color55 == 'Blue'
color1 := color.blue
color2 := color.blue
color2
if color55 == 'Red/Green'
color1 := color.red
color2 := color.green
color2
//Width
width1 = 1
if lwidth == '1'
width1 := 1
width1
if lwidth == '2'
width1 := 2
width1
if lwidth == '3'
width1 := 3
width1
if lwidth == '4'
width1 := 4
width1
//Plots
line upper = line.new(n[n - a1 + length], up[n - a1], n[n - a2 + length], up[n - a2], extend=extend.right, color=color1, width=width1)
line lower = line.new(n[n - b1 + length2], dn[n - b1], n[n - b2 + length2], dn[n - b2], extend=extend.right, color=color2, width=width1)
line.delete(upper[1])
line.delete(lower[1])
///////////////////////////////
//@version=5
// INPUTS
Range = input.int(10, minval=2, title='Pivot Range')
ATRLength = input.int(10, minval=2, title='ATR Range')
ATRRange = ta.atr(ATRLength)
// PIVOTS
float PivotHigh = na
float PivotLow = na
PivotHigh := ta.pivothigh(Range, Range)
PivotLow := ta.pivotlow(Range, Range)
CountHigh = 0
CountHigh := PivotHigh[1] ? 0 : nz(CountHigh[1]) + 1
CountLow = 0
CountLow := PivotLow[1] ? 0 : nz(CountLow[1]) + 1
PivotHighPlot = 0.0
PivotHighPlot := PivotHigh[1] ? high[Range + 1] : PivotHighPlot[1]
PivotLowPlot = 0.0
PivotLowPlot := PivotLow[1] ? low[Range + 1] : PivotLowPlot[1]
// PLOTS
barcolor(hl2 + ATRRange > PivotHighPlot ? color.green : hl2 - ATRRange < PivotLowPlot ? color.red : color.yellow)
//////////////////////////////////////////////////
//@version=5
length33 = input(title='Length', defval=50)
offset33 = input(title='Offset', defval=0)
src33 = input(close, title='Source')
lsma33 = ta.linreg(src33, length33, offset33)
lsma233 = ta.linreg(lsma33, length33, offset33)
eq33 = lsma33 - lsma233
zlsma33 = lsma33 + eq33
zcolorchange33 = input(title='Change Color ?', defval=true)
zColor33 = zcolorchange33 ? zlsma33 > zlsma33[1] ? color.rgb(76, 175, 79, 100) : color.rgb(255, 82, 82, 100) : color.black
plot(zlsma33, title='50LAG', linewidth=1, color=zColor33)
//////////////////////////////////////////
//@version=5
sp = '***********'
var linefill[] a_lf = array.new <linefill> ()
cLineUp = input.color (color.new(color.lime, 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cLineDn = input.color (color.new( #FF0000 , 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillUp = input.color (color.new(color.lime, 75), '*|*', group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillDn = input.color (color.new( #FF0000 , 75), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
lookback = input.int (125 , 'x bars back' , minval=0, maxval=125)
min = math.min (close, open) // lowest point of body
max = math.max (close, open) // highest point of body
mid = math.avg (close, open) // middle point of body
ixt = input.bool (true, '3', inline='e', group='extend lines')
iExt = input.string('both', '', options=[ 'none' , 'left' , 'right' , 'both' ], inline='e', group='extend lines')
aExt1 = array.from ( 'none' , 'left' , 'right' , 'both' )
aExt2 = array.from (extend.none, extend.left, extend.right, extend.both)
xt = array.get (aExt2 , array.indexof (aExt1, iExt))
//{
// B
//
// ◊
// ◊ ◊
// ◊ ◊
// ◊ ◊
// A ◊ ◊ C
// ◊ ◊
// ◊ ◊
// ◊ ◊
// ◊
//
// D
//}
if barstate.islast
while array.size(a_lf) > 0
fill = array.pop(a_lf)
line.delete(linefill.get_line1(fill))
line.delete(linefill.get_line1(fill))
linefill.delete (fill)
//
for i = 0 to lookback
cLn = close[i] > open[i] ? cLineUp : cLineDn
cFl = close[i] > open[i] ? cFillUp : cFillDn
Ax = bar_index - (i + 1), Ay = mid[i]
Bx = bar_index - (i ), By = max[i] + (max[i] - mid[i]) * (2 / 3)
Cx = bar_index - (i - 1), Cy = Ay
Dx = Bx , Dy = min[i] - (max[i] - mid[i]) * (2 / 3)
//
array.unshift(a_lf, linefill.new(
line.new(Ax, Ay, Bx, By, color= cLn),
line.new(Dx, Dy, Cx, Cy, color= cLn), color= cFl))
array.unshift(a_lf, linefill.new(
line.new(Bx, By, Cx, Cy, color= cLn),
line.new(Ax, Ay, Dx, Dy, color= cLn), color= na ))
idx = math.min(array.size(a_lf) -1, math.min(lookback, input.int(1, '', minval=0, maxval=125, inline='e', group='extend lines'))) * 2
//
if ixt
line.set_extend(linefill.get_line1(array.get(a_lf, array.size(a_lf) - idx -1)), xt)
line.set_extend(linefill.get_line2(array.get(a_lf, array.size(a_lf) - idx -2)), xt)
barcolor(color.new(color.blue, 100))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Botnet101
//@version=5
// INPUTS
//{
_timeframe = input.string(defval='60' , title='Pivots Timeframe', options=['15', '30', '60', '240', 'D', 'W', 'M', '3M', '12M'])
colourBars = input.bool (defval=false, title='Colour Bars?' , group="Plot Settings")
showPivot = input.bool (defval=true , title='Show Pivot Points?', group="Plot Settings")
fillPlot = input.bool (defval=true , title='Fill plot?' , group="Plot Settings")
colour_bullish = input.color(defval=color.new(color.green, 70), title="Bullish", group="Colours")
colour_bearish = input.color(defval=color.new(color.red , 70), title="Bearish", group="Colours")
//}
// FUNCTIONS
//{
GetData(timeframe, data) => request.security(syminfo.tickerid, timeframe, data[1], lookahead=barmerge.lookahead_on)
GetColour (canShow, _colour) => canShow ? _colour : na
// Calculate Pivot Points
CalculatPivotPoint () =>
float dailyHigh = GetData(_timeframe, high )
float dailyLow = GetData(_timeframe, low )
float dailyClose = GetData(_timeframe, close)
(dailyHigh + dailyLow + dailyClose) / 3
//}
float pivotPoint = CalculatPivotPoint ()
color bias_colour = close > pivotPoint ? colour_bullish : colour_bearish
color cloud_colour = GetColour(fillPlot , bias_colour )
color pivotPoint_colour = GetColour(showPivot , color.new(bias_colour, 0))
color bar_colour = GetColour(colourBars, color.new(bias_colour, 0))
plot_close = plot(ohlc4 , title='Close', color=na , style=plot.style_stepline, editable=false )
plot_pivot = plot(pivotPoint, title='Pivot', color=pivotPoint_colour, style=plot.style_stepline, editable=true , linewidth=2)
fill (plot_pivot, plot_close, color=cloud_colour, editable=false)
//barcolor(bar_colour , editable=false)
//////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HoanGhetti
//@version=5
g_sr = 'Support and Resistance'
g_c = 'Conditions'
g_st = 'Styling'
t_r = 'Bar Confirmation: Generates alerts when candle closes. (1 Candle Later) \n\nHigh & Low: By default, the Break & Retest system uses the current close value to determine a condition, selecting High & Low will make the script utilize these two values instead of the close value. In return, the script won\'t repaint and will yield different results.'
t_rv = 'Whenever a potential retest is detected, the indicator knows that a retest is about to happen. In that given situation, this input grants the ability to raise the limit on how many bars are allowed to be actively checked while a potential retest event is active.\n\nExample, if you see the potential retest label, how many bars do you want that potential retest label to be active for to eventually confirm a retest? This system was implemented to prevent retest alerts from going off 10+ bars later from the potential retest point leading to inaccurate results.'
input_lookback = input.int(defval = 5, title = 'Lookback Range', minval = 1, tooltip = 'How many bars for a pivot event to occur.', group = g_sr)
input_retSince = input.int(defval = 2, title = 'Bars Since Breakout', minval = 1, tooltip = 'How many bars since breakout in order to detect a retest.', group = g_sr)
input_retValid = input.int(defval = 2, title = 'Retest Detection Limiter', minval = 1, tooltip = t_rv, group = g_sr)
input_breakout = input.bool(defval = false, title = 'Breakouts', group = g_c)
input_retest = input.bool(defval = false, title = 'Retests', group = g_c)
input_repType = input.string(defval = 'On', title = 'Repainting', options = ['On', 'Off: Candle Confirmation', 'Off: High & Low'], tooltip = t_r, group = g_c)
input_outL = input.string(defval = line.style_dotted, title = 'Outline', group = g_st, options = [line.style_dotted, line.style_dashed, line.style_solid])
input_extend = input.string(defval = extend.none, title = 'Extend', group = g_st, options = [extend.none, extend.right, extend.left, extend.both])
input_labelType = input.string(defval = 'Full', title = 'Label Type', options = ['Full', 'Simple'], group = g_st)
input_labelSize = input.string(defval = size.small, title = 'Label Size', options = [size.tiny, size.small, size.normal, size.large, size.huge], group = g_st)
input_plColor = input.color(defval = color.yellow, title = 'Support', inline = 'Color', group = g_st)
input_phColor = input.color(defval = color.yellow, title = 'Resistance', inline = 'Color', group = g_st)
input_override = input.bool(defval = false, title = 'Override Text Color ', inline = 'Override', group = g_st)
input_textColor = input.color(defval = color.white, title = '', inline = 'Override', group = g_st)
bb = input_lookback
rTon = input_repType == 'On'
rTcc = input_repType == 'Off: Candle Confirmation'
rThv = input_repType == 'Off: High & Low'
breakText = input_labelType == 'Simple' ? 'Br' : 'Break'
// Pivot Instance
pl = fixnan(ta.pivotlow(low, bb, bb))
ph = fixnan(ta.pivothigh(high, bb, bb))
// Box Height
s_yLoc = low[bb + 1] > low[bb - 1] ? low[bb - 1] : low[bb + 1]
r_yLoc = high[bb + 1] > high[bb - 1] ? high[bb + 1] : high[bb - 1]
//-----------------------------------------------------------------------------
// Functions
//-----------------------------------------------------------------------------
drawBox(condition, y1, y2, color) =>
var box drawBox = na
if condition
box.set_right(drawBox, bar_index - bb)
drawBox.set_extend(extend.none)
drawBox := box.new(bar_index - bb, y1, bar_index, y2, color, bgcolor = color.new(color, 90), border_style = input_outL, extend = input_extend)
[drawBox]
updateBox(box) =>
if barstate.isconfirmed
box.set_right(box, bar_index + 5)
breakLabel(y, color, style, textform) => label.new(bar_index, y, textform, textcolor = input_override ? input_textColor : color, style = style, color = color.new(color, 50), size = input_labelSize)
retestCondition(breakout, condition) => ta.barssince(na(breakout)) > input_retSince and condition
repaint(c1, c2, c3) => rTon ? c1 : rThv ? c2 : rTcc ? c3 : na
//-----------------------------------------------------------------------------
// Draw and Update Boxes
//-----------------------------------------------------------------------------
[sBox] = drawBox(ta.change(pl), s_yLoc, pl, input_plColor)
[rBox] = drawBox(ta.change(ph), ph, r_yLoc, input_phColor)
sTop = box.get_top(sBox), rTop = box.get_top(rBox)
sBot = box.get_bottom(sBox), rBot = box.get_bottom(rBox)
updateBox(sBox), updateBox(rBox)
//-----------------------------------------------------------------------------
// Breakout Event
//-----------------------------------------------------------------------------
var bool sBreak = na
var bool rBreak = na
cu = repaint(ta.crossunder(close, box.get_bottom(sBox)), ta.crossunder(low, box.get_bottom(sBox)), ta.crossunder(close, box.get_bottom(sBox)) and barstate.isconfirmed)
co = repaint(ta.crossover(close, box.get_top(rBox)), ta.crossover(high, box.get_top(rBox)), ta.crossover(close, box.get_top(rBox)) and barstate.isconfirmed)
switch
cu and na(sBreak) =>
sBreak := true
if input_breakout
breakLabel(sBot, input_plColor, label.style_label_upper_right, breakText)
co and na(rBreak) =>
rBreak := true
if input_breakout
breakLabel(rTop, input_phColor, label.style_label_lower_right, breakText)
if ta.change(pl)
if na(sBreak)
box.delete(sBox[1])
sBreak := na
if ta.change(ph)
if na(rBreak)
box.delete(rBox[1])
rBreak := na
//-----------------------------------------------------------------------------
// Retest Event
//-----------------------------------------------------------------------------
s1 = retestCondition(sBreak, high >= sTop and close <= sBot) // High is GOET top sBox value and the close price is LOET the bottom sBox value.
s2 = retestCondition(sBreak, high >= sTop and close >= sBot and close <= sTop) // High is GOET top sBox value and close is GOET the bottom sBox value and closing price is LOET the top sBox value.
s3 = retestCondition(sBreak, high >= sBot and high <= sTop) // High is in between the sBox.
s4 = retestCondition(sBreak, high >= sBot and high <= sTop and close < sBot) // High is in between the sBox, and the closing price is below.
r1 = retestCondition(rBreak, low <= rBot and close >= rTop) // Low is LOET bottom rBox value and close is GOET the top sBox value
r2 = retestCondition(rBreak, low <= rBot and close <= rTop and close >= rBot) // Low is LOET bottom rBox value and close is LOET the top sBox value and closing price is GOET the bottom rBox value.
r3 = retestCondition(rBreak, low <= rTop and low >= rBot) // Low is in between the rBox.
r4 = retestCondition(rBreak, low <= rTop and low >= rBot and close > rTop) // Low is in between the rBox, and the closing price is above.
retestEvent(c1, c2, c3, c4, y1, y2, col, style, pType) =>
if input_retest
var bool retOccurred = na
retActive = c1 or c2 or c3 or c4
retEvent = retActive and not retActive[1]
retValue = ta.valuewhen(retEvent, y1, 0)
if pType == 'ph' ? y2 < ta.valuewhen(retEvent, y2, 0) : y2 > ta.valuewhen(retEvent, y2, 0)
retEvent := retActive
// Must be reassigned here just in case the above if statement triggers.
retValue := ta.valuewhen(retEvent, y1, 0)
retSince = ta.barssince(retEvent)
var retLabel = array.new<label>()
if retEvent
retOccurred := na
array.push(retLabel, label.new(bar_index - retSince, y2[retSince], text = input_labelType == 'Simple' ? 'P. Re' : 'Potential Retest', color = color.new(col, 50), style = style, textcolor = input_override ? input_textColor : col, size = input_labelSize))
if array.size(retLabel) == 2
label.delete(array.first(retLabel))
array.shift(retLabel)
retConditions = pType == 'ph' ? repaint(close >= retValue, high >= retValue, close >= retValue and barstate.isconfirmed) : repaint(close <= retValue, low <= retValue, close <= retValue and barstate.isconfirmed)
retValid = ta.barssince(retEvent) > 0 and ta.barssince(retEvent) <= input_retValid and retConditions and not retOccurred
if retValid
label.new(bar_index - retSince, y2[retSince], text = input_labelType == 'Simple' ? 'Re' : 'Retest', color = color.new(col, 50), style = style, textcolor = input_override ? input_textColor : col, size = input_labelSize)
retOccurred := true
if retValid or ta.barssince(retEvent) > input_retValid
label.delete(array.first(retLabel))
if pType == 'ph' and ta.change(ph) and retOccurred
box.set_right(rBox[1], bar_index - retSince)
retOccurred := na
if pType == 'pl' and ta.change(pl) and retOccurred
box.set_right(sBox[1], bar_index - retSince)
retOccurred := na
[retValid, retEvent, retValue]
[rRetValid, rRetEvent] = retestEvent(r1, r2, r3, r4, high, low, input_phColor, label.style_label_upper_left, 'ph')
[sRetValid, sRetEvent] = retestEvent(s1, s2, s3, s4, low, high, input_plColor, label.style_label_lower_left, 'pl')
//-----------------------------------------------------------------------------
// Alerts
//-----------------------------------------------------------------------------
alertcondition(ta.change(pl), 'New Support Level')
alertcondition(ta.change(ph), 'New Resistance Level')
alertcondition(ta.barssince(na(sBreak)) == 1, 'Support Breakout')
alertcondition(ta.barssince(na(rBreak)) == 1, 'Resistance Breakout')
alertcondition(sRetValid, 'Support Retest')
alertcondition(sRetEvent, 'Potential Support Retest')
alertcondition(rRetValid, 'Resistance Retest')
alertcondition(rRetEvent, 'Potential Resistance Retest')
AllAlerts(condition, message) =>
if condition
alert(message)
AllAlerts(ta.change(pl), 'New Support Level')
AllAlerts(ta.change(ph), 'New Resistance Level')
AllAlerts(ta.barssince(na(sBreak)) == 1, 'Support Breakout')
AllAlerts(ta.barssince(na(rBreak)) == 1, 'Resistance Breakout')
AllAlerts(sRetValid, 'Support Retest')
AllAlerts(sRetEvent, 'Potential Support Retest')
AllAlerts(rRetValid, 'Resistance Retest')
AllAlerts(rRetEvent, 'Potential Resistance Retest')
///////////////////////////////////////////////////////////
PHP Code:
//@version=5
indicator("*", max_lines_count=500, overlay=true, max_bars_back=201)
sp = '***********'
var linefill[] a_lf = array.new <linefill> ()
cLineUp = input.color (color.new(color.lime, 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cLineDn = input.color (color.new( #FF0000 , 25), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillUp = input.color (color.new(color.lime, 75), '*|*', group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
cFillDn = input.color (color.new( #FF0000 , 75), '' , group= sp + 'lines' + sp + '*|*' + sp + '*fill', inline='line')
lookback = input.int (125 , 'x bars back' , minval=0, maxval=125)
min = math.min (close, open) // lowest point of body
max = math.max (close, open) // highest point of body
mid = math.avg (close, open) // middle point of body
ixt = input.bool (true, '3', inline='e', group='extend lines')
iExt = input.string('both', '', options=[ 'none' , 'left' , 'right' , 'both' ], inline='e', group='extend lines')
aExt1 = array.from ( 'none' , 'left' , 'right' , 'both' )
aExt2 = array.from (extend.none, extend.left, extend.right, extend.both)
xt = array.get (aExt2 , array.indexof (aExt1, iExt))
//{
// B
//
// ◊
// ◊ ◊
// ◊ ◊
// ◊ ◊
// A ◊ ◊ C
// ◊ ◊
// ◊ ◊
// ◊ ◊
// ◊
//
// D
//}
if barstate.islast
while array.size(a_lf) > 0
fill = array.pop(a_lf)
line.delete(linefill.get_line1(fill))
line.delete(linefill.get_line1(fill))
linefill.delete (fill)
//
for i = 0 to lookback
cLn = close[i] > open[i] ? cLineUp : cLineDn
cFl = close[i] > open[i] ? cFillUp : cFillDn
Ax = bar_index - (i + 1), Ay = mid[i]
Bx = bar_index - (i ), By = max[i] + (max[i] - mid[i]) * (2 / 3)
Cx = bar_index - (i - 1), Cy = Ay
Dx = Bx , Dy = min[i] - (max[i] - mid[i]) * (2 / 3)
//
array.unshift(a_lf, linefill.new(
line.new(Ax, Ay, Bx, By, color= cLn),
line.new(Dx, Dy, Cx, Cy, color= cLn), color= cFl))
array.unshift(a_lf, linefill.new(
line.new(Bx, By, Cx, Cy, color= cLn),
line.new(Ax, Ay, Dx, Dy, color= cLn), color= na ))
idx = math.min(array.size(a_lf) -1, math.min(lookback, input.int(1, '', minval=0, maxval=125, inline='e', group='extend lines'))) * 2
//
if ixt
line.set_extend(linefill.get_line1(array.get(a_lf, array.size(a_lf) - idx -1)), xt)
line.set_extend(linefill.get_line2(array.get(a_lf, array.size(a_lf) - idx -2)), xt)
barcolor(color.new(color.blue, 100))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fondDealer96636
//@version=5
// input
start11 = 2
lookback11 = input(50, "Sensitivity", tooltip="Low (High Sensitivity), High (Low Sensitivity).\n\nAdjust according to timeframe and asset.")
resp11 = 1
smoothing11 = input(1, "Smoothing")
source11 = input(close, "Source")
// global
var ix = -1
var mal = array.new_int(0)
// functions
avg(source11, len11) =>
sum = 0.0
for i = 0 to len11-1
sum += source11[i]
sum/len11
bull = close > open
wick_touch(x) =>
bull ? ((close <= x and x <= high) or (low <= x and x <= open)) : ((open <= x and x <= high) or (low <= x and x <= close))
body_touch(x) =>
bull ? (open < x and x < close) : (close < x and x < open)
touches(t) =>
touches = 0
for i = 0 to lookback11-1
touches += t[i] ? 1 : 0
touches
// local
ix := ix+1
prev_mal = ix >= 1 ? array.get(mal, ix-1) : start11
cma = avg(source11, prev_mal)
cma_p1 = avg(source11, prev_mal+1)
cma_m1 = avg(source11, prev_mal-1)
d = touches(wick_touch(cma))
d_p1 = touches(wick_touch(cma_p1))
d_m1 = touches(wick_touch(cma_m1))
d_b = touches(body_touch(cma))
d_p1_b = touches(body_touch(cma_p1))
d_m1_b = touches(body_touch(cma_m1))
any_body_touch = d_b > 0 or d_p1_b > 0 or d_m1_b > 0
no_wick_touch = d <= 0 and d_p1 <= 0 and d_m1 <= 0
wick_maximized = d >= d_p1 and d >= d_m1 ? prev_mal : (d_p1 >= d and d_p1 >= d_m1 ? prev_mal+resp11 : (d_m1 >= d and d_m1 >= d_p1 ? prev_mal-resp11 : na))
uptrend = cma > cma[1]
downtrend = cma < cma[1]
against_trend = (uptrend and close < cma) or (downtrend and close > cma)
new_mal = no_wick_touch or against_trend ? prev_mal-resp11 : (any_body_touch ? prev_mal+resp11 : wick_maximized)
next_mal = na(new_mal) ? prev_mal : new_mal
array.push(mal, next_mal < 2 ? 2 : (next_mal > 200 ? 200 : next_mal))
// graph
scma = ta.ema(cma, smoothing11)
plot(scma, "50MA", color=color.yellow)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//@version=5
length33 = input(title='Length', defval=50)
offset33 = input(title='Offset', defval=0)
src33 = input(close, title='Source')
lsma33 = ta.linreg(src33, length33, offset33)
lsma233 = ta.linreg(lsma33, length33, offset33)
eq33 = lsma33 - lsma233
zlsma33 = lsma33 + eq33
zcolorchange33 = input(title='Change Color ?', defval=true)
zColor33 = zcolorchange33 ? zlsma33 > zlsma33[1] ? color.yellow : color.blue : color.black
plot(zlsma33, title='50LAG', linewidth=1, color=zColor33)
//////////////////////////////////////////