OPEN-SOURCE SCRIPT

SVE Pivot Points (v2)

233
//version=6
indicator(title="SVE Pivot Points", overlay=true, max_lines_count=500)

// Input Parameters
agg_period = input.timeframe("D", title="Aggregation period")
extend_bars = input.int(50, title="Bars to extend into future", minval=1, maxval=500)
show_labels = input.bool(true, title="Show Labels")

// Line width
line_width = input.int(1, title="Line Width", minval=1, maxval=4)

// Detect new aggregation period
bool new_agg_bar = bool(ta.change(time(agg_period)))

// Fetch previous period's high, low, close
ph = request.security(syminfo.tickerid, agg_period, high[1], barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, agg_period, low[1], barmerge.gaps_off, barmerge.lookahead_on)
pc = request.security(syminfo.tickerid, agg_period, close[1], barmerge.gaps_off, barmerge.lookahead_on)

// Calculate pivot points
pp = (ph + pl + pc) / 3
r1 = 2 * pp - pl
r2 = pp + (ph - pl)
r3 = 2 * pp + (ph - 2 * pl)
s1 = 2 * pp - ph
s2 = pp - (ph - pl)
s3 = 2 * pp - (2 * ph - pl)

// Calculate mean levels
r1m = (pp + r1) / 2
r2m = (r1 + r2) / 2
r3m = (r2 + r3) / 2
s1m = (pp + s1) / 2
s2m = (s1 + s2) / 2
s3m = (s2 + s3) / 2

// Previous high and low
hh = ph
ll = pl

// Colors
color_r = color.red
color_s = color.green
color_pp = color.blue
color_hl = color.gray

// Persistent line variables
var line line_r3 = na
var line line_r3m = na
var line line_r2 = na
var line line_r2m = na
var line line_r1 = na
var line line_r1m = na
var line line_hh = na
var line line_pp = na
var line line_ll = na
var line line_s1m = na
var line line_s1 = na
var line line_s2m = na
var line line_s2 = na
var line line_s3m = na
var line line_s3 = na

// Persistent label variables
var label lbl_r3 = na
var label lbl_r3m = na
var label lbl_r2 = na
var label lbl_r2m = na
var label lbl_r1 = na
var label lbl_r1m = na
var label lbl_hh = na
var label lbl_pp = na
var label lbl_ll = na
var label lbl_s1m = na
var label lbl_s1 = na
var label lbl_s2m = na
var label lbl_s2 = na
var label lbl_s3m = na
var label lbl_s3 = na

// Function to create or update line
create_line(line ln, float price, color col) =>
line.new(bar_index, price, bar_index + extend_bars, price, color=col, width=line_width)

// Function to create label
create_label(float price, string txt, color col) =>
label.new(bar_index + extend_bars, price, txt, style=label.style_label_left, color=color.new(col, 90), textcolor=col, size=size.small)

// On new aggregation period, delete old lines and create new ones
if new_agg_bar
// Delete old lines
line.delete(line_r3)
line.delete(line_r3m)
line.delete(line_r2)
line.delete(line_r2m)
line.delete(line_r1)
line.delete(line_r1m)
line.delete(line_hh)
line.delete(line_pp)
line.delete(line_ll)
line.delete(line_s1m)
line.delete(line_s1)
line.delete(line_s2m)
line.delete(line_s2)
line.delete(line_s3m)
line.delete(line_s3)

// Delete old labels
if show_labels
label.delete(lbl_r3)
label.delete(lbl_r3m)
label.delete(lbl_r2)
label.delete(lbl_r2m)
label.delete(lbl_r1)
label.delete(lbl_r1m)
label.delete(lbl_hh)
l

إخلاء المسؤولية

لا يُقصد بالمعلومات والمنشورات أن تكون، أو تشكل، أي نصيحة مالية أو استثمارية أو تجارية أو أنواع أخرى من النصائح أو التوصيات المقدمة أو المعتمدة من TradingView. اقرأ المزيد في شروط الاستخدام.