Professional Documents
Culture Documents
version
version
//HMA
//EMA
//Ichimoku
// OBV
// OBV Divergence
bearColor = color.new(color.red, 0)
bullColor = color.new(color.green, 0)
hiddenBullColor = color.new(color.blue, 0)
hiddenBearColor = color.new(color.yellow, 0)
textColor = color.new(color.white, 0)
noneColor = color.new(color.white, 100)
//osc = ta.ema(ta.obv, shortLength) - ta.ema(ta.obv, longLength)
//osc = ta.ema(ta.pvt, 3) - ta.ema(ta.pvt, 20)
osc = WhatOSC
plFound = na(ta.pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(ta.pivothigh(osc, lbL, lbR)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
rangeLower <= bars and bars <= rangeUpper
//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc[lbR] > ta.valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])
// OBV Plots
obvOsc2 = ta.sma(obvOsc, 3)
crossoverCond1 = ta.crossunder(obvOsc, 0)
crossoverCond2 = ta.crossover(obvOsc, 0)
// PVT Plots
obvOsc2PVT = ta.sma(obvOscPVT, 3)
crossoverCond1PVT = ta.crossunder(obvOscPVT, 0)
crossoverCond2PVT = ta.crossover(obvOscPVT, 0)
// DC Stoploss
//TSI
setting0header = input(title='----------------TSI Settings----------------',
defval=false)
//RSI Bands
epRSI = 2 * lengthRSI - 1
aucRSI = ta.ema(math.max(src - src[1], 0), epRSI)
adcRSI = ta.ema(math.max(src[1] - src, 0), epRSI)
x1RSI = (lengthRSI - 1) * (adcRSI * obLevelRSI / (100 - obLevelRSI) - aucRSI)
ubRSI = x1RSI >= 0 ? src + x1RSI : src + x1RSI * (100 - obLevelRSI) / obLevelRSI
x2RSI = (lengthRSI - 1) * (adcRSI * osLevelRSI / (100 - osLevelRSI) - aucRSI)
lbRSI = x2RSI >= 0 ? src + x2RSI : src + x2RSI * (100 - osLevelRSI) / osLevelRSI
HAo=ta.ema(open,HAma1_len)
HAc=ta.ema(close,HAma1_len)
HAh=ta.ema(high,HAma1_len)
HAl=ta.ema(low,HAma1_len)
HAha_t = ticker.heikinashi(syminfo.tickerid)
HAha_o = request.security(HAha_t, timeframe.period, HAo)
HAha_c = request.security(HAha_t, timeframe.period, HAc)
HAha_h = request.security(HAha_t, timeframe.period, HAh)
HAha_l = request.security(HAha_t, timeframe.period, HAl)
HAo2=ta.ema(HAha_o, HAma2_len)
HAc2=ta.ema(HAha_c, HAma2_len)
HAh2=ta.ema(HAha_h, HAma2_len)
HAl2=ta.ema(HAha_l, HAma2_len)
//volume candles
AUTO = 'Auto'
DAILY = 'Daily'
WEEKLY = 'Weekly'
MONTHLY = 'Monthly'
QUARTERLY = 'Quarterly'
YEARLY = 'Yearly'
BIYEARLY = 'Biyearly'
TRIYEARLY = 'Triyearly'
QUINQUENNIALLY = 'Quinquennially'
DECENNIALLY = 'Decennially'
TRADITIONAL = 'Traditional'
FIBONACCI = 'Fibonacci'
WOODIE = 'Woodie'
CLASSIC = 'Classic'
DEMARK = 'DM'
CAMARILLA = 'Camarilla'
var r2 = array.new_float()
var s2 = array.new_float()
s2r2_show = input.bool(true, 'S2/R2', inline='S2/R2')
s2r2_color = input.color(DEF_COLOR, '', inline='S2/R2')
var r3 = array.new_float()
var s3 = array.new_float()
s3r3_show = input.bool(true, 'S3/R3', inline='S3/R3')
s3r3_color = input.color(DEF_COLOR, '', inline='S3/R3')
var r4 = array.new_float()
var s4 = array.new_float()
s4r4_show = input.bool(true, 'S4/R4', inline='S4/R4')
s4r4_color = input.color(DEF_COLOR, '', inline='S4/R4')
var r5 = array.new_float()
var s5 = array.new_float()
s5r5_show = input.bool(true, 'S5/R5', inline='S5/R5')
s5r5_color = input.color(DEF_COLOR, '', inline='S5/R5')
pivotX_open = float(na)
pivotX_open := nz(pivotX_open[1], open)
pivotX_high = float(na)
pivotX_high := nz(pivotX_high[1], high)
pivotX_low = float(na)
pivotX_low := nz(pivotX_low[1], low)
pivotX_prev_open = float(na)
pivotX_prev_open := nz(pivotX_prev_open[1])
pivotX_prev_high = float(na)
pivotX_prev_high := nz(pivotX_prev_high[1])
pivotX_prev_low = float(na)
pivotX_prev_low := nz(pivotX_prev_low[1])
pivotX_prev_close = float(na)
pivotX_prev_close := nz(pivotX_prev_close[1])
get_pivot_resolution() =>
resolution = 'M'
if pivot_time_frame == AUTO
if timeframe.isintraday
resolution := timeframe.multiplier <= 15 ? 'D' : 'W'
resolution
else if timeframe.isweekly or timeframe.ismonthly
resolution := '12M'
resolution
else if pivot_time_frame == DAILY
resolution := 'D'
resolution
else if pivot_time_frame == WEEKLY
resolution := 'W'
resolution
else if pivot_time_frame == MONTHLY
resolution := 'M'
resolution
else if pivot_time_frame == QUARTERLY
resolution := '3M'
resolution
else if pivot_time_frame == YEARLY or pivot_time_frame == BIYEARLY or
pivot_time_frame == TRIYEARLY or pivot_time_frame == QUINQUENNIALLY or
pivot_time_frame == DECENNIALLY
resolution := '12M'
resolution
resolution
traditional() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Median + 1 * (pivotX_prev_high - pivotX_prev_low))
array.push(s2, pivotX_Median - 1 * (pivotX_prev_high - pivotX_prev_low))
array.push(r3, pivotX_Median * 2 + pivotX_prev_high - 2 * pivotX_prev_low)
array.push(s3, pivotX_Median * 2 - (2 * pivotX_prev_high - pivotX_prev_low))
array.push(r4, pivotX_Median * 3 + pivotX_prev_high - 3 * pivotX_prev_low)
array.push(s4, pivotX_Median * 3 - (3 * pivotX_prev_high - pivotX_prev_low))
array.push(r5, pivotX_Median * 4 + pivotX_prev_high - 4 * pivotX_prev_low)
array.push(s5, pivotX_Median * 4 - (4 * pivotX_prev_high - pivotX_prev_low))
fibonacci() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median + 0.382 * pivot_range)
array.push(s1, pivotX_Median - 0.382 * pivot_range)
array.push(r2, pivotX_Median + 0.618 * pivot_range)
array.push(s2, pivotX_Median - 0.618 * pivot_range)
array.push(r3, pivotX_Median + 1 * pivot_range)
array.push(s3, pivotX_Median - 1 * pivot_range)
woodie() =>
pivotX_Woodie_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_open * 2) / 4
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Woodie_Median)
array.push(r1, pivotX_Woodie_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Woodie_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Woodie_Median + 1 * pivot_range)
array.push(s2, pivotX_Woodie_Median - 1 * pivot_range)
classic() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_Median * 2 - pivotX_prev_low)
array.push(s1, pivotX_Median * 2 - pivotX_prev_high)
array.push(r2, pivotX_Median + 1 * pivot_range)
array.push(s2, pivotX_Median - 1 * pivot_range)
array.push(r3, pivotX_Median + 2 * pivot_range)
array.push(s3, pivotX_Median - 2 * pivot_range)
array.push(r4, pivotX_Median + 3 * pivot_range)
array.push(s4, pivotX_Median - 3 * pivot_range)
demark() =>
pivotX_Demark_X = pivotX_prev_high + pivotX_prev_low * 2 + pivotX_prev_close
if pivotX_prev_close == pivotX_prev_open
pivotX_Demark_X := pivotX_prev_high + pivotX_prev_low + pivotX_prev_close * 2
pivotX_Demark_X
if pivotX_prev_close > pivotX_prev_open
pivotX_Demark_X := pivotX_prev_high * 2 + pivotX_prev_low + pivotX_prev_close
pivotX_Demark_X
array.push(p, pivotX_Demark_X / 4)
array.push(r1, pivotX_Demark_X / 2 - pivotX_prev_low)
array.push(s1, pivotX_Demark_X / 2 - pivotX_prev_high)
camarilla() =>
pivotX_Median = (pivotX_prev_high + pivotX_prev_low + pivotX_prev_close) / 3
pivot_range = pivotX_prev_high - pivotX_prev_low
array.push(p, pivotX_Median)
array.push(r1, pivotX_prev_close + pivot_range * 1.1 / 12.0)
array.push(s1, pivotX_prev_close - pivot_range * 1.1 / 12.0)
array.push(r2, pivotX_prev_close + pivot_range * 1.1 / 6.0)
array.push(s2, pivotX_prev_close - pivot_range * 1.1 / 6.0)
array.push(r3, pivotX_prev_close + pivot_range * 1.1 / 4.0)
array.push(s3, pivotX_prev_close - pivot_range * 1.1 / 4.0)
array.push(r4, pivotX_prev_close + pivot_range * 1.1 / 2.0)
array.push(s4, pivotX_prev_close - pivot_range * 1.1 / 2.0)
resolution = get_pivot_resolution()
var number_of_years = 0
is_change_years = false
var custom_years_resolution = pivot_time_frame == BIYEARLY or pivot_time_frame ==
TRIYEARLY or pivot_time_frame == QUINQUENNIALLY or pivot_time_frame == DECENNIALLY
if custom_years_resolution and ta.change(time(resolution))
number_of_years := number_of_years + 1
if pivot_time_frame == BIYEARLY and number_of_years % 2 == 0
is_change_years := true
number_of_years := 0
number_of_years
else if pivot_time_frame == TRIYEARLY and number_of_years % 3 == 0
is_change_years := true
number_of_years := 0
number_of_years
else if pivot_time_frame == QUINQUENNIALLY and number_of_years % 5 == 0
is_change_years := true
number_of_years := 0
number_of_years
else if pivot_time_frame == DECENNIALLY and number_of_years % 10 == 0
is_change_years := true
number_of_years := 0
number_of_years
if kind == TRADITIONAL
traditional()
else if kind == FIBONACCI
fibonacci()
else if kind == WOODIE
woodie()
else if kind == CLASSIC
classic()
else if kind == DEMARK
demark()
else if kind == CAMARILLA
camarilla()
for i = 0 to array.size(lines) - 1 by 1
if array.size(lines) > 0
line.delete(array.shift(lines))
if array.size(lines) > 0
label.delete(array.shift(labels))
for i = 0 to array.size(arr_time) - 2 by 1
if array.size(p) > 0 and p_show
draw_line(i, p, p_color)
draw_label(i, array.get(p, i), 'P', p_color)
if array.size(r1) > 0 and s1r1_show
draw_line(i, r1, s1r1_color)
draw_label(i, array.get(r1, i), 'R1', s1r1_color)
if array.size(s1) > 0 and s1r1_show
draw_line(i, s1, s1r1_color)
draw_label(i, array.get(s1, i), 'S1', s1r1_color)
if array.size(r2) > 0 and s2r2_show
draw_line(i, r2, s2r2_color)
draw_label(i, array.get(r2, i), 'R2', s2r2_color)
if array.size(s2) > 0 and s2r2_show
draw_line(i, s2, s2r2_color)
draw_label(i, array.get(s2, i), 'S2', s2r2_color)
if array.size(r3) > 0 and s3r3_show
draw_line(i, r3, s3r3_color)
draw_label(i, array.get(r3, i), 'R3', s3r3_color)
if array.size(s3) > 0 and s3r3_show
draw_line(i, s3, s3r3_color)
draw_label(i, array.get(s3, i), 'S3', s3r3_color)
if array.size(r4) > 0 and s4r4_show
draw_line(i, r4, s4r4_color)
draw_label(i, array.get(r4, i), 'R4', s4r4_color)
if array.size(s4) > 0 and s4r4_show
draw_line(i, s4, s4r4_color)
draw_label(i, array.get(s4, i), 'S4', s4r4_color)
if array.size(r5) > 0 and s5r5_show
draw_line(i, r5, s5r5_color)
draw_label(i, array.get(r5, i), 'R5', s5r5_color)
if array.size(s5) > 0 and s5r5_show
draw_line(i, s5, s5r5_color)
draw_label(i, array.get(s5, i), 'S5', s5r5_color)
//Pivot point settings
//Plots
datasell = leadLine1 > leadLine2 and (tsi1 and tsi2 > treshold ? ta.crossunder(tsi1,
tsi2) : na)
databuy = leadLine1 < leadLine2 and (tsi1 and tsi2 < -treshold ? ta.crossover(tsi1,
tsi2) : na)
datastpbuy = leadLine1 > leadLine2 and (tsi1 and tsi2 < -treshold ?
ta.crossover(tsi1, tsi2) : na)
datatpsell = leadLine1 < leadLine2 and (tsi1 and tsi2 > treshold ?
ta.crossunder(tsi1, tsi2) : na)
//calcentry1 = (srclul > HAl2 and srclul < HAh2) and HAo2>HAc2 and leadLine1 >
leadLine2 ? pivotbothH : na
//calcentry2 = (srclul > HAl2 and srclul < HAh2) and HAo2<HAc2 and leadLine1 <
leadLine2 ? pivotbothL : na
//calcentry1 = (high > HAo2 and high > HAc2) and HAo2>HAc2 and leadLine1 > leadLine2
? pivotbothH : na
//calcentry2 = (low < HAo2 and low < HAc2) and HAo2<HAc2 and leadLine1 < leadLine2 ?
pivotbothL : na
//calcentry1 = (high > HAo2 and high > HAc2) and HAo2>HAc2 and leadLine1 > leadLine2
? PHCondPVT : na
//calcentry2 = (low < HAo2 and low < HAc2) and HAo2<HAc2 and leadLine1 < leadLine2 ?
PLCondPVT : na
//Alerts
wolfpackCond1 = ta.crossover(bspread, 0)
wolfpackCond2 = ta.crossunder(bspread, 0)
trendcond = ta.cross(leadLine1, leadLine2)
datasellcond = leadLine1 > leadLine2 and (tsi1 and tsi2 > treshold ?
ta.crossunder(tsi1, tsi2) : na)
databuycond = leadLine1 < leadLine2 and (tsi1 and tsi2 < -treshold ?
ta.crossover(tsi1, tsi2) : na)
datastpbuycond = leadLine1 > leadLine2 and (tsi1 and tsi2 < -treshold ?
ta.crossover(tsi1, tsi2) : na)
datatpsellcond = leadLine1 < leadLine2 and (tsi1 and tsi2 > treshold ?
ta.crossunder(tsi1, tsi2) : na)