Multi-timeframe Moving Average with Summary Table
unknown
plain_text
3 years ago
46 kB
13
Indexable
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © john_everist
//@version=5
indicator("Clean Multi-timeframe Moving Average with Summary Table", overlay = true)
get_colour(ave_tr1, tolerance, price_close, ma, ma_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_flat_below)=>
ave_tr = (ave_tr1/2)*tolerance
a = 1-ma / ma_back
b = 1-ma_back/ma
compare = a<0?b: b<0?a: 1
if syminfo.ticker == "NZDJPY" or syminfo.ticker == "AUDJPY" or syminfo.ticker == "EURJPY" or syminfo.ticker == "CHFJPY" or syminfo.ticker == "GBPJPY" or syminfo.ticker == "CADJPY" or syminfo.ticker == "USDJPY"
compare := compare * 100
color colour_text = col_text_flat
color colour = col_flat
//flat ma
if compare<ave_tr
if price_close > ma
colour_text := col_text_flat_above
else if price_close < ma
colour_text := col_text_flat_below
//ma up
else if ma > ma_back
colour := col_up_above
if price_close < ma
colour_text := col_down_below
//ma down
else if ma < ma_back
colour := col_down_below
if price_close > ma
colour_text := col_up_above
[colour, colour_text]
make_sma_ema(type, length, tf) =>
sma = request.security(syminfo.tickerid, tf, ta.sma(close, length))
ema = request.security(syminfo.tickerid, tf, ta.ema(close, length))
ma = type == 'SMA' ? sma : ema
ma
draw_line(ma_value, line_colour, line_width, line_style,line_ex_type) =>
ex_line = line.new(x1=bar_index[0], x2=bar_index[1], y1=ma_value, y2=ma_value, style=line_style, color=line_colour, width=line_width, extend=line_ex_type)
line.set_xloc(id=ex_line, x1=time, x2=time + 1, xloc=xloc.bar_time)
line.delete(ex_line[1])
recalc = input.bool(false, "Recalc")
john = recalc?1:0
var include_override = "Inclusion Overrides"
show_ma_curr = input.bool(true, 'Show ONLY Current timeframe Moving Average', group=include_override)
show_all_ma = input.bool(true, 'Show Moving average from ALL timeframes', group=include_override)
show_hl_curr = input.bool(false, 'Show ONLY Current Moving Average horizontal line', group=include_override)
show_all_hline = input.bool(true, "Show ALL ma horizontal lines", group=include_override)
show_tables = input.bool(true, "Show the summary tables of the options selected below")
var core = 'MA Specifications'
ma_type = input.string(title='Moving Average Type', options=['EMA', 'SMA'], defval='SMA', group=core)
ma_len = input.int(title='Moving Average Length', step=10, defval=200, group=core)
bars_back = input.int(10, title = "Bars back to compare for trend", group=core, tooltip = "How many bars back to compare the current MA level to define a trend on the summary table ")
tolerance = input.float(.4,title = "Tolerance to define 'flat' MA", step = .05, maxval = 100, group=core, tooltip = "A lower tolerance will require a steeper MA to show a trend on the summary table.\n\nWhether the MA is trending or not is defined by comparing the difference between the current level and level at the defined bars back against the average true range")
src = input(close, title="MA Source 200", group=core)
var line_options = 'MA Line Inclusion'
show_ma_3 = input.bool(title='Show 3M MA Line', defval=false, group=line_options)
show_ma_15 = input.bool(title='Show 15M MA Line', defval=false, group=line_options)
show_ma_60 = input.bool(title='Show 60M MA Line', defval=false, group=line_options)
show_ma_240 = input.bool(title='Show 240M MA Line', defval=false, group=line_options)
show_ma_D = input.bool(title='Show D MA Line', defval=false, group=line_options)
show_ma_W = input.bool(title='Show W MA Line', defval=false, group=line_options)
show_ma_M = input.bool(title='Show M MA Line', defval=false, group=line_options)
var hor_line_options = 'Horizontal Line Inclusion'
show_hl_3 = input.bool(title='Show 3M MA Line', defval=false, group=hor_line_options)
show_hl_15 = input.bool(title='Show 15M MA Line', defval=false, group=hor_line_options)
show_hl_60 = input.bool(title='Show 60M MA Line', defval=false, group=hor_line_options)
show_hl_240 = input.bool(title='Show 240M MA Line', defval=false, group=hor_line_options)
show_hl_D = input.bool(title='Show D MA Line', defval=false, group=hor_line_options)
show_hl_W = input.bool(title='Show W MA Line', defval=false, group=hor_line_options)
show_hl_M = input.bool(title='Show M MA Line', defval=false, group=hor_line_options)
var table_options = 'MA Table Inclusion'
show_ma_3_table = input.bool(title='Show 3M MA Table', defval=true, group=table_options)
show_ma_15_table = input.bool(title='Show 15M MA Table', defval=true, group=table_options)
show_ma_60_table = input.bool(title='Show 60M MA Table', defval=true, group=table_options)
show_ma_240_table = input.bool(title='Show 240M MA Table', defval=true, group=table_options)
show_ma_D_table = input.bool(title='Show D MA Table', defval=true, group=table_options)
show_ma_W_table = input.bool(title='Show W MA Table', defval=false, group=table_options)
show_ma_M_table = input.bool(title='Show M MA Table', defval=false, group=table_options)
var table_format = "Table Format"
color boarder_col = na
MABgColour = input(color.rgb(146, 147, 150, 51), "MA background Colour", group= table_format)
color col_text_flat = input.color(color.new(#f3efef, 0), title = "Text Colour", group = table_format)
col_down_below1 = input.color(color.new(#FF0000, 0), title = "Colour for MA down", group = table_format)
col_up_above1 = input.color(color.new(#00FF00, 0), title = "Colour for MA up", group = table_format)
col_flat1 = input.color(color.gray, title = "Colour for MA when MA is 'flat'", group = table_format, tooltip = "The definition of a flat MA is controlled with the tolerance")
var spacing_d = 'Table Shuffle Down'
spacer_down_1 = input.bool(true, "Add Down Spacer", group = spacing_d, tooltip = "Use to move the table")
spacer_down_2 = input.bool(false, "Add Down Spacer", group = spacing_d)
spacer_down_3 = input.bool(false, "Add Down Spacer", group = spacing_d)
spacer_down_4 = input.bool(false, "Add Down Spacer", group = spacing_d)
var spacing_a = 'Table Shuffle Across'
spacer_across_1 = input.bool(false, "Add Across Spacer", group = spacing_a)
spacer_across_2 = input.bool(false, "Add Across Spacer", group = spacing_a)
spacer_across_3 = input.bool(false, "Add Across Spacer", group = spacing_a)
spacer_across_4 = input.bool(false, "Add Across Spacer", group = spacing_a)
transp = input.int(30, title = "Summary Table Transparency", step = 5, group = table_format)
cell_height = input.int(5, title = "Summary Table Cell Height", group = table_format)
cell_width = input.int(3, title = "Summary Table Cell Width", group = table_format)
col_down_below = color.new(col_down_below1, transp)
col_up_above = color.new(col_up_above1, transp)
col_flat = color.new(col_flat1, transp)
color col_text_flat_above = col_up_above
color col_text_below = col_down_below
t_size_temp = input.string('normal', title='Text Size', options=['tiny', 'small', 'normal', 'large', 'huge'], group = table_format)
t_size = t_size_temp == 'tiny' ? size.tiny : t_size_temp == 'small' ? size.small : t_size_temp == 'normal' ? size.normal : t_size_temp == 'large' ? size.large : t_size_temp == 'huge' ? size.huge : size.normal
b_width = 0
h_align = text.align_center
v_align = text.align_center
show_ma_len = input.bool(false, "Show MA Length", group = table_format)
var ma_line = 'MA Format'
ma_color1 = input.color(title='Moving Average Colour', defval=color.new(color.yellow, 50), group=ma_line)
ma_transp = input.int(50, title = "Moving Average Transparency", step = 5, group = ma_line)
ma_color = color.new(ma_color1,transp = ma_transp)
ma_width = input.int(title='Moving Average Width', defval=1, step = 1, group=ma_line)
line_width = input.int(title='MA Line Width', defval=2, group=ma_line)
var ma_ex_line = 'Horizontal Line Format'
line_style_temp = input.string("dotted", title='Horizontsal line style', options=['solid', 'dashed', 'dotted'], group=ma_ex_line)
line_style = line_style_temp == 'solid' ? line.style_solid : line_style_temp == 'dashed' ? line.style_dashed : line_style_temp == 'dotted' ? line.style_dotted : na
line_ex_type_temp= input.string("Both", title = "MA line extention type", options = ["Left", "Right", "Both"], group=ma_ex_line)
line_ex_type =line_ex_type_temp == "Left" ? extend.left : line_ex_type_temp == "Right" ? extend.right : line_ex_type_temp == "Both" ? extend.both :extend.none
ex_line_width = input.int(title='horizontal line Width', defval=1, step = 1, group=ma_ex_line)
var label = 'labels'
show_ma_lab = input.bool(title='Show Moving Average Labels', defval=true, group=label)
lab_descrip = input.bool(true, title = "Include Description on label")
lab_size_ma_temp = input.string('normal', title='Moving Average Label Size', options=['tiny', 'small', 'normal', 'large', 'huge'], group=label)
lab_size_ma = lab_size_ma_temp == 'tiny' ? size.tiny : lab_size_ma_temp == 'small' ? size.small : lab_size_ma_temp == 'normal' ? size.normal : lab_size_ma_temp == 'large' ? size.large : lab_size_ma_temp == 'huge' ? size.huge : size.normal
text_shift = input.int(0, title='Label Distance from MA', group=label, tooltip = "Increase the distance of the label from the MA", step = 1)
var check = 'Check trend definition'
check_trend = input.bool(false, "Check trend definition", group = check, tooltip = "This will highlight the background based on the trend definition of the current timeframe. Its clearest if you high the bars and only show the ma")
ave_tr_length = 20
[close_3, sma_3, sma_3_back, ema_3, ema_3_back, atr_3] = request.security("","3", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_15, sma_15, sma_15_back, ema_15, ema_15_back, atr_15] = request.security("","15", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_60, sma_60, sma_60_back, ema_60, ema_60_back, atr_60] = request.security("","60", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_240, sma_240, sma_240_back, ema_240, ema_240_back, atr_240] = request.security("","240", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_D, sma_D, sma_D_back, ema_D, ema_D_back, atr_D] = request.security("","D", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_W, sma_W, sma_W_back, ema_W, ema_W_back, atr_W] = request.security("","W", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
[close_M, sma_M, sma_M_back, ema_M, ema_M_back, atr_M] = request.security("","M", [close, ta.sma(close, ma_len), ta.sma(close[bars_back], ma_len), ta.ema(close, ma_len), ta.ema(close[bars_back], ma_len), ta.sma(ta.tr(true), ave_tr_length)])
ma_3 = ma_type == "SMA" ? sma_3 : ema_3
ma_15 = ma_type == "SMA" ? sma_15 : ema_15
ma_60 = ma_type == "SMA" ? sma_60 : ema_60
ma_240 = ma_type == "SMA" ? sma_240 : ema_240
ma_D = ma_type == "SMA" ? sma_D : ema_D
ma_W = ma_type == "SMA" ? sma_W : ema_W
ma_M = ma_type == "SMA" ? sma_M : ema_M
ma_3_back = ma_type == "SMA" ? sma_3_back : ema_3_back
ma_15_back = ma_type == "SMA" ? sma_15_back : ema_15_back
ma_60_back = ma_type == "SMA" ? sma_60_back : ema_60_back
ma_240_back = ma_type == "SMA" ? sma_240_back : ema_240_back
ma_D_back = ma_type == "SMA" ? sma_D_back : ema_D_back
ma_W_back = ma_type == "SMA" ? sma_W_back : ema_W_back
ma_M_back = ma_type == "SMA" ? sma_M_back : ema_M_back
[ma_3_col, ma_3_col_text] = get_colour(atr_3, tolerance, close_3, ma_3, ma_3_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_15_col, ma_15_col_text] = get_colour(atr_15, tolerance, close_15, ma_15, ma_15_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_60_col, ma_60_col_text] = get_colour(atr_60, tolerance, close_60, ma_60, ma_60_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_240_col, ma_240_col_text] = get_colour(atr_240, tolerance, close_240, ma_240, ma_240_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_D_col, ma_D_col_text] = get_colour(atr_D, tolerance, close_D, ma_D, ma_D_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_W_col, ma_W_col_text] = get_colour(atr_W, tolerance, close_W, ma_W, ma_W_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
[ma_M_col, ma_M_col_text] = get_colour(atr_M, tolerance, close_M, ma_M, ma_M_back, col_up_above,col_down_below,col_flat, col_text_flat, col_text_flat_above, col_text_below)
color curr_colour = na
if not show_tables
show_ma_3_table := false
show_ma_15_table := false
show_ma_60_table := false
show_ma_240_table := false
show_ma_D_table := false
show_ma_W_table := false
show_ma_M_table := false
if check_trend
show_ma_curr := true
show_ma_3_table := false
show_ma_15_table := false
show_ma_60_table := false
show_ma_240_table := false
show_ma_D_table := false
show_ma_W_table := false
show_ma_M_table := true
if show_all_ma
show_ma_3 := true
show_ma_15 := true
show_ma_60 := true
show_ma_240 := true
show_ma_D := true
show_ma_W := true
show_ma_M := true
if show_all_hline
show_hl_3 := true
show_hl_15 := true
show_hl_60 := true
show_hl_240 := true
show_hl_D := true
show_hl_W := true
show_hl_M := true
///------
if show_ma_curr
show_ma_3 := false
show_ma_15 := false
show_ma_60 := false
show_ma_240 := false
show_ma_D := false
show_ma_W := false
show_ma_M := false
if timeframe.multiplier == 3
show_ma_3 := true
curr_colour := ma_3_col
if timeframe.multiplier == 15
show_ma_15 := true
curr_colour := ma_15_col
if timeframe.multiplier == 60
show_ma_60 := true
curr_colour := ma_60_col
if timeframe.multiplier == 240
show_ma_240 := true
curr_colour := ma_240_col
if timeframe.isdaily
show_ma_D := true
if timeframe.isweekly
show_ma_W := true
curr_colour := ma_W_col
if timeframe.ismonthly
show_ma_M := true
curr_colour := ma_M_col
if show_hl_curr
show_hl_3 := false
show_hl_15 := false
show_hl_60 := false
show_hl_240 := false
show_hl_D := false
show_hl_W := false
show_hl_M := false
if timeframe.multiplier == 3
show_hl_3 := true
if timeframe.multiplier == 15
show_hl_15 := true
if timeframe.multiplier == 60
show_hl_60 := true
if timeframe.multiplier == 240
show_hl_240 := true
if timeframe.isdaily
show_hl_D := true
if timeframe.isweekly
show_hl_W := true
if timeframe.ismonthly
show_hl_M := true
bgcolor(check_trend?color.new(curr_colour, 85):na)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for 3m TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_3m = request.security(syminfo.tickerid, '3', ta.sma(src, ma_len))
CurrDiffVar_3m = (src / sma_3m - 1 ) * 100
CurrDiff_3m = request.security(syminfo.tickerid, '', CurrDiffVar_3m)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_3m = (time - ta.valuewhen(ta.crossover(close, sma_3m), time, 0))/1000/3600
below_since_3m = (time - ta.valuewhen(ta.crossunder(close, sma_3m), time, 0))/1000/3600
_below_since_3m = (time - ta.valuewhen(ta.crossunder(close, sma_3m), time, 0))/1000/60
_above_since_3m = (time - ta.valuewhen(ta.crossover(close, sma_3m), time, 0))/1000/60
belowSinceStrDaysHrs_3m = str.tostring((below_since_3m-below_since_3m %24)/24, '00') + " days " +str.tostring(below_since_3m %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_3m = str.tostring((above_since_3m-above_since_3m %24)/24, '00') + " days " +str.tostring(above_since_3m %24, '00') + " hrs, ABOVE"
above_since_bar_3m = ta.barssince(close > sma_3m)
below_since_bar_3m = ta.barssince(close < sma_3m)
cond3 = math.round(src, 5) > math.round(sma_3m, 5)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for 15m TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_15m = request.security(syminfo.tickerid, '15', ta.sma(src , ma_len))
CurrDiffVar_15m = (src / sma_15m - 1 ) * 100
CurrDiff_15m = request.security(syminfo.tickerid, '', CurrDiffVar_15m)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_15m = (time - ta.valuewhen(ta.crossover(close, sma_15m), time, 0))/1000/3600
below_since_15m = (time - ta.valuewhen(ta.crossunder(close, sma_15m), time, 0))/1000/3600
_below_since_15m = (time - ta.valuewhen(ta.crossunder(close, sma_15m), time, 0))/1000/60
_above_since_15m = (time - ta.valuewhen(ta.crossover(close, sma_15m), time, 0))/1000/60
belowSinceStrDaysHrs_15m = str.tostring((below_since_15m-below_since_15m %24)/24, '00') + " days " +str.tostring(below_since_15m %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_15m = str.tostring((above_since_15m-above_since_15m %24)/24, '00') + " days " +str.tostring(above_since_15m %24, '00') + " hrs, ABOVE"
cond15 = math.round(close, 1) > math.round(sma_15m, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for 1h TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_1h = request.security(syminfo.tickerid, '60', ta.sma(src , ma_len))
CurrDiffVar_1h = (src / sma_1h - 1 ) * 100
CurrDiff_1h = request.security(syminfo.tickerid, '', CurrDiffVar_1h)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_1h = (time - ta.valuewhen(ta.crossover(close, sma_1h), time, 0))/1000/3600
below_since_1h = (time - ta.valuewhen(ta.crossunder(close, sma_1h), time, 0))/1000/3600
_below_since_1h = (time - ta.valuewhen(ta.crossunder(close, sma_1h), time, 0))/1000/60
_above_since_1h = (time - ta.valuewhen(ta.crossover(close, sma_1h), time, 0))/1000/60
belowSinceStrDaysHrs_1h = str.tostring((below_since_1h-below_since_1h %24)/24, '00') + " days " +str.tostring(below_since_1h %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_1h = str.tostring((above_since_1h-above_since_1h %24)/24, '00') + " days " +str.tostring(above_since_1h %24, '00') + " hrs, ABOVE"
cond1h = math.round(close, 1) > math.round(sma_1h, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for 4h TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_4h = request.security(syminfo.tickerid, '240', ta.sma(src , 200))
CurrDiffVar_4h = (src / sma_4h - 1 ) * 100
CurrDiff_4h = request.security(syminfo.tickerid, '', CurrDiffVar_4h)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_4h = (time - ta.valuewhen(ta.crossover(close, sma_4h), time, 0))/1000/3600
below_since_4h = (time - ta.valuewhen(ta.crossunder(close, sma_4h), time, 0))/1000/3600
_below_since_4h = (time - ta.valuewhen(ta.crossunder(close, sma_4h), time, 0))/1000/60
_above_since_4h = (time - ta.valuewhen(ta.crossover(close, sma_4h), time, 0))/1000/60
belowSinceStrDaysHrs_4h = str.tostring((below_since_4h-below_since_4h %24)/24, '00') + " days " +str.tostring(below_since_4h %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_4h = str.tostring((above_since_4h-above_since_4h %24)/24, '00') + " days " +str.tostring(above_since_4h %24, '00') + " hrs, ABOVE"
cond4h = math.round(close, 1) > math.round(sma_4h, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for D TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_d = request.security(syminfo.tickerid, 'D', ta.sma(src , 200))
CurrDiffVar_d = (src / sma_d - 1 ) * 100
CurrDiff_d = request.security(syminfo.tickerid, '', CurrDiffVar_d)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_d = (time - ta.valuewhen(ta.crossover(close, sma_d), time, 0))/1000/3600
below_since_d = (time - ta.valuewhen(ta.crossunder(close, sma_d), time, 0))/1000/3600
_below_since_d = (time - ta.valuewhen(ta.crossunder(close, sma_d), time, 0))/1000/60
_above_since_d = (time - ta.valuewhen(ta.crossover(close, sma_d), time, 0))/1000/60
belowSinceStrDaysHrs_d = str.tostring((below_since_d-below_since_d %24)/24, '00') + " days " +str.tostring(below_since_d %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_d = str.tostring((above_since_d-above_since_d %24)/24, '00') + " days " +str.tostring(above_since_d %24, '00') + " hrs, ABOVE"
condd = math.round(close, 1) > math.round(sma_d, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for W TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_w = request.security(syminfo.tickerid, 'W', ta.sma(src , 200))
CurrDiffVar_w = (src / sma_w - 1 ) * 100
CurrDiff_w = request.security(syminfo.tickerid, '', CurrDiffVar_w)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_w = (time - ta.valuewhen(ta.crossover(close, sma_w), time, 0))/1000/3600
below_since_w = (time - ta.valuewhen(ta.crossunder(close, sma_w), time, 0))/1000/3600
_below_since_w = (time - ta.valuewhen(ta.crossunder(close, sma_w), time, 0))/1000/60
_above_since_w = (time - ta.valuewhen(ta.crossover(close, sma_w), time, 0))/1000/60
belowSinceStrDaysHrs_w = str.tostring((below_since_w-below_since_w %24)/24, '00') + " days " +str.tostring(below_since_w %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_w = str.tostring((above_since_w-above_since_w %24)/24, '00') + " days " +str.tostring(above_since_w %24, '00') + " hrs, ABOVE"
condw = math.round(close, 1) > math.round(sma_w, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Calculations for M TF \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//Calculation for Difference between Price and SMA 200 \\
sma_m = request.security(syminfo.tickerid, 'M', ta.sma(src , 200))
CurrDiffVar_m = (src / sma_m - 1 ) * 100
CurrDiff_m = request.security(syminfo.tickerid, '', CurrDiffVar_m)
//Calculation for Since when and bars the price is above/below 200 SMA
above_since_m = (time - ta.valuewhen(ta.crossover(close, sma_m), time, 0))/1000/3600
below_since_m = (time - ta.valuewhen(ta.crossunder(close, sma_m), time, 0))/1000/3600
_below_since_m = (time - ta.valuewhen(ta.crossunder(close, sma_m), time, 0))/1000/60
_above_since_m = (time - ta.valuewhen(ta.crossover(close, sma_m), time, 0))/1000/60
belowSinceStrDaysHrs_m = str.tostring((below_since_m-below_since_m %24)/24, '00') + " days " +str.tostring(below_since_m %24, '00') + " hrs, BELOW"
aboveSinceStrDaysHrs_m = str.tostring((above_since_m-above_since_m %24)/24, '00') + " days " +str.tostring(above_since_m %24, '00') + " hrs, ABOVE"
condm = math.round(close, 1) > math.round(sma_m, 1)
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Table Settings \\
////////////////////////////// ~~~~~~~~~~~~~~~~~~ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
tablePositionY = input.string('top', title='Y-Position', options=['top', 'middle', 'bottom'], group="Table", inline="2")
tablePositionX = input.string('right', title='X-Position', options=['left', 'center', 'right'], group="Table", inline="2")
ma_table = table.new(tablePositionY + '_' + tablePositionX, columns = 11, rows = 50, bgcolor = na, border_color = boarder_col, border_width = 1)
string CurrString_3m=close>sma_3m?"ABOVE":"BELOW"
string CurrString_15m=close>sma_15m?"ABOVE":"BELOW"
string CurrString_1h=close>sma_1h?"ABOVE":"BELOW"
string CurrString_4h=close>sma_4h?"ABOVE":"BELOW"
string CurrString_d=close>sma_d?"ABOVE":"BELOW"
string CurrString_w=close>sma_w?"ABOVE":"BELOW"
string CurrString_m=close>sma_m?"ABOVE":"BELOW"
table.cell(table_id = ma_table, column = 0, row = 1, bgcolor=color.rgb(175,175,175), width=10, text="Time Frame")
table.cell(table_id = ma_table, column = 1, row = 1, bgcolor=color.rgb(175,175,175), width=10, text="DIFF")
table.cell(table_id = ma_table, column = 2, row = 1, bgcolor=color.rgb(175,175,175), text="Since When")
//table.cell(table_id = ma_table, column = 3, row = 1, bgcolor=color.rgb(175,175,175), text="Bars")
//table.cell(table_id = ma_table, column = 4, row = 1, bgcolor=color.rgb(175,175,175), text="Actual Price")
//table.cell(table_id = ma_table, column = 5, row = 1, bgcolor=color.rgb(175,175,175), text="SMA TF Price")
//table.cell(table_id = ma_table, column = 6, row = 1, bgcolor=color.rgb(175,175,175), text="MA")
int across = 0
int down = 0
if spacer_down_1
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
down+=1
if spacer_down_2
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
down+=1
if spacer_down_3
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
down+=1
if spacer_down_4
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
down+=1
if spacer_across_1
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
across+=1
if spacer_across_2
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
across+=1
if spacer_across_3
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
across+=1
if spacer_across_4
table.cell(table_id = ma_table, height = cell_height, width = cell_width, column = across, row = down, bgcolor = na, text = "")
across+=1
if show_ma_len
table.cell(table_id = ma_table, text_color = col_text_flat, height = cell_height, width = cell_width, column = 6, row = 2, bgcolor = MABgColour, text = str.tostring(ma_len), text_halign = h_align, text_valign = v_align, text_size = t_size)
down+=1
//if show_ma_3_table
//if timeframe.isintraday and timeframe.multiplier<=3
table.cell(table_id = ma_table, text_color = ma_3_col_text, height = cell_height, width = cell_width, column = 0, row = 2, bgcolor = ma_3_col, text = "3", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_3_col_text, height = cell_height, width = cell_width, column = 4, row = 2,text = str.tostring(math.round(src,2)), bgcolor = ma_3_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_3_col_text, height = cell_height, width = cell_width, column = 5, row = 2,text = str.tostring(math.round(sma_3m ,2)), bgcolor = ma_3_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 2,text = str.tostring(math.round(CurrDiff_3m,2)) + " % " + CurrString_3m, bgcolor= math.round(src, 1) > math.round(sma_3m, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 2,text = cond3 ? aboveSinceStrDaysHrs_3m:belowSinceStrDaysHrs_3m, bgcolor=cond3 ? color.green : color.red,text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = color.white, column = 3, row = 2,text = str.tostring(math.round((cond3 ? below_since_bar_3m:above_since_bar_3m),2)) +' ' + above_below_string_bar_3m, bgcolor=cond3 ? color.green : color.red, text_size = size.normal)
//if show_ma_15_table
//if timeframe.isintraday and timeframe.multiplier<=15
table.cell(table_id = ma_table, text_color = ma_15_col_text, height = cell_height, width = cell_width,column = 0, row = 3, bgcolor = ma_15_col, text = "15", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_15_col_text, height = cell_height, width = cell_width, column = 4, row = 3,text = str.tostring(math.round(src,2)), bgcolor = ma_15_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_15_col_text, height = cell_height, width = cell_width, column = 5, row = 3,text = str.tostring(math.round(sma_15m ,2)), bgcolor = ma_15_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 3,text = str.tostring(math.round(CurrDiff_15m,2)) + " % " + CurrString_15m, bgcolor= math.round(src, 1) > math.round(sma_15m, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 3,text = cond15 ?aboveSinceStrDaysHrs_15m:belowSinceStrDaysHrs_15m, bgcolor=cond15 ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = color.white, column = 3, row = 3,text = str.tostring(math.round((cond15? below_since_bar_15m:above_since_bar_15m),2)) +' ' + above_below_string_bar_15m, bgcolor=cond15 ? color.green : color.red, text_size = size.normal)
//if show_ma_60_table
//if timeframe.isintraday and timeframe.multiplier<=60
table.cell(table_id = ma_table, text_color = ma_60_col_text, height = cell_height, width = cell_width, column = 0, row = 4, bgcolor = ma_60_col, text = "1H", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_60_col_text, height = cell_height, width = cell_width, column = 3, row = 4,text = str.tostring(math.round(src,2)), bgcolor = ma_60_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_60_col_text, height = cell_height, width = cell_width, column = 4, row = 4,text = str.tostring(math.round(sma_1h ,2)), bgcolor = ma_60_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 4,text = str.tostring(math.round(CurrDiff_1h,2)) + " % " + CurrString_1h, bgcolor= math.round(src, 1) > math.round(sma_1h, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 4,text = cond1h ?aboveSinceStrDaysHrs_1h:belowSinceStrDaysHrs_1h, bgcolor=cond1h ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//if show_ma_240_table
//if timeframe.isintraday and timeframe.multiplier<=240
table.cell(table_id = ma_table, text_color = ma_240_col_text, height = cell_height, width = cell_width, column = 0, row = 5, bgcolor = ma_240_col, text = "4H", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_240_col_text, height = cell_height, width = cell_width, column = 3, row = 5,text = str.tostring(math.round(src,2)), bgcolor = ma_240_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_240_col_text, height = cell_height, width = cell_width, column = 4, row = 5,text = str.tostring(math.round(sma_4h ,2)), bgcolor = ma_240_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 5,text = str.tostring(math.round(CurrDiff_4h,2)) + " % " + CurrString_4h, bgcolor= math.round(src, 1) > math.round(sma_4h, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 5,text = cond4h ?aboveSinceStrDaysHrs_4h:belowSinceStrDaysHrs_4h, bgcolor=cond4h ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//if show_ma_D_table
//if not timeframe.isweekly and not timeframe.ismonthly
table.cell(table_id = ma_table, text_color = ma_D_col_text, height = cell_height, width = cell_width, column = 0, row = 6, bgcolor = ma_D_col, text = "D", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_D_col_text, height = cell_height, width = cell_width, column = 3, row = 6,text = str.tostring(math.round(src,2)), bgcolor = ma_D_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_D_col_text, height = cell_height, width = cell_width, column = 4, row = 6,text = str.tostring(math.round(sma_d ,2)), bgcolor = ma_D_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 6,text = str.tostring(math.round(CurrDiff_d,2)) + " % " + CurrString_d, bgcolor= math.round(src, 1) > math.round(sma_d, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 6,text = condd ?aboveSinceStrDaysHrs_d:belowSinceStrDaysHrs_d, bgcolor=condd ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//if show_ma_W_table
//if not timeframe.ismonthly
table.cell(table_id = ma_table, text_color = ma_W_col_text, height = cell_height, width = cell_width, column = 0, row =7, bgcolor = ma_W_col, text = "W", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_W_col_text, height = cell_height, width = cell_width, column = 3, row = 7,text = str.tostring(math.round(src,2)), bgcolor = ma_W_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_W_col_text, height = cell_height, width = cell_width, column = 4, row = 7,text = str.tostring(math.round(sma_w ,2)), bgcolor = ma_W_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 7,text = str.tostring(math.round(CurrDiff_w,2)) + " % " + CurrString_w, bgcolor= math.round(src, 1) > math.round(sma_w, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 7,text = condw ?aboveSinceStrDaysHrs_w:belowSinceStrDaysHrs_w, bgcolor=condw ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//if show_ma_M_table
table.cell(table_id = ma_table, text_color = ma_M_col_text, height = cell_height, width = cell_width, column = 0, row = 8, bgcolor = ma_M_col, text = "M", text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_M_col_text, height = cell_height, width = cell_width, column = 3, row = 8,text = str.tostring(math.round(src,2)), bgcolor = ma_M_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
//table.cell(table_id = ma_table, text_color = ma_M_col_text, height = cell_height, width = cell_width, column = 4, row = 8,text = str.tostring(math.round(sma_m ,2)), bgcolor = ma_M_col, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, height = cell_height, width = cell_width, column = 1, row = 8,text = str.tostring(math.round(CurrDiff_m,2)) + " % " + CurrString_m, bgcolor= math.round(src, 1) > math.round(sma_m, 1) ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
table.cell(table_id = ma_table, text_color = color.white, column = 2, row = 8,text = condm ?aboveSinceStrDaysHrs_m:belowSinceStrDaysHrs_m, bgcolor=condm ? color.green : color.red, text_halign = h_align, text_valign = v_align, text_size = t_size)
//==================================
bool show_lab_3 = false
bool show_lab_15 = false
bool show_lab_60 = false
bool show_lab_240 = false
bool show_lab_D = false
bool show_lab_W = false
bool show_lab_M = false
if show_ma_3
if timeframe.isintraday and timeframe.multiplier<=3
show_lab_3 := true
if show_ma_15
if timeframe.isintraday and timeframe.multiplier<=15
show_lab_15 := true
if show_ma_60
if timeframe.isintraday and timeframe.multiplier<=60
show_lab_60 := true
if show_ma_240
if timeframe.isintraday and timeframe.multiplier<=240
show_lab_240 := true
if show_ma_D
if not timeframe.isweekly and not timeframe.ismonthly
show_lab_D := true
if show_ma_W
if not timeframe.ismonthly
show_lab_W := true
if show_ma_M
show_lab_M := true
if show_hl_3
draw_line(ma_3, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_3:=true
if show_hl_15
draw_line(ma_15, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_15:=true
if show_hl_60
draw_line(ma_60, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_60:=true
if show_hl_240
draw_line(ma_240, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_240:=true
if show_hl_D
draw_line(ma_D, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_D:=true
if show_hl_W
draw_line(ma_W, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_W:=true
if show_hl_M
draw_line(ma_M, ma_color, ex_line_width, line_style, line_ex_type)
show_lab_M:=true
if show_ma_lab
invisible = color.new(color.gray, 100)
lab_style = label.style_label_left
label lab_ma_3 = na
label lab_ma_15 = na
label lab_ma_60 = na
label lab_ma_240 = na
label lab_ma_D = na
label lab_ma_W = na
label lab_ma_M = na
if lab_descrip
lab_ma_3 := label.new(bar_index + text_shift, ma_3, text= '3 ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_3 ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_15 := label.new(bar_index + text_shift, ma_15, text= '15 ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_15 ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_60 := label.new(bar_index + text_shift, ma_60, text= '60 ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_60 ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_240 := label.new(bar_index + text_shift, ma_240, text= '240 ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_240 ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_D := label.new(bar_index + text_shift, ma_D, text= 'D ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_D ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_W := label.new(bar_index + text_shift, ma_W, text= "W ("+str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_W ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_M := label.new(bar_index + text_shift, ma_M, text= 'M ('+ str.tostring(ma_len) + " "+ ma_type +")", textcolor=show_lab_M ? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
else
lab_ma_3 := label.new(bar_index + text_shift, ma_3, text= "3", textcolor= show_lab_3? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_15 := label.new(bar_index + text_shift, ma_15, text= "15", textcolor= show_lab_15? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_60 := label.new(bar_index + text_shift, ma_60, text= "60", textcolor= show_lab_60? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_240 := label.new(bar_index + text_shift, ma_240, text= "240", textcolor= show_lab_240? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_D := label.new(bar_index + text_shift, ma_D, text= "D", textcolor= show_lab_D? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_W := label.new(bar_index + text_shift, ma_W, text= "W", textcolor= show_lab_W? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
lab_ma_M := label.new(bar_index + text_shift, ma_M, text= "M", textcolor= show_lab_M? ma_color : invisible, color=invisible, style=lab_style, size=lab_size_ma)
label.delete(lab_ma_3[1])
label.delete(lab_ma_15[1])
label.delete(lab_ma_60[1])
label.delete(lab_ma_240[1])
label.delete(lab_ma_D[1])
label.delete(lab_ma_W[1])
label.delete(lab_ma_M[1])
//plot(ma_curr, title='current', color=ma_color, linewidth=ma_width)
plot(ma_3, title='3', color=show_ma_3?ma_color:na, linewidth=ma_width)
plot(ma_15, title='15', color=show_ma_15?ma_color:na, linewidth=ma_width)
plot(ma_60, title='60', color=show_ma_60?ma_color:na, linewidth=ma_width)
plot(ma_240, title='240', color=show_ma_240?ma_color:na, linewidth=ma_width)
plot(ma_D, title='d', color=show_ma_D?ma_color:na, linewidth=ma_width)
plot(ma_W, title='w', color=show_ma_W?ma_color:na, linewidth=ma_width)
plot(ma_M, title='m', color=show_ma_M?ma_color:na, linewidth=ma_width)
Editor is loading...