0% found this document useful (0 votes)
88 views3 pages

Ardhouse Oscillator Script Overview

The document is a Pine Script code for the 'Ardhouse Oscillator' indicator used in trading analysis. It includes user-defined inputs for filter length and color settings, and calculates a two-pole smooth filter to generate buy and sell signals based on price movements. The script also plots these signals on a chart, providing visual cues for traders.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views3 pages

Ardhouse Oscillator Script Overview

The document is a Pine Script code for the 'Ardhouse Oscillator' indicator used in trading analysis. It includes user-defined inputs for filter length and color settings, and calculates a two-pole smooth filter to generate buy and sell signals based on price movements. The script also plots these signals on a chart, providing visual cues for traders.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

//@version=6

indicator('Ardhouse Oscillator', 'ARDOS', overlay = true, max_lines_count = 500,


max_labels_count = 500)

// INPUTS
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――{
int length = [Link](20, minval=1, title="Filter Length")
bool disp_lvl = [Link](true, "Levels")

color up_color = [Link](#55ffda, "", inline = "color")


color dn_color = [Link](#8c5bff, "", inline = "color")

var buy_line = line(na)


var sell_line = line(na)
// }

// CALCULATION
S――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
――――――――――――{
float sma1 = [Link](close, 25)
float sma_n1 = ((close - sma1) - [Link](close - sma1, 25)) / [Link](close - sma1,
25)
float area = [Link](high-low, 100)

// Two-pole smooth filter function


f_two_pole_filter(source, length) =>
var float smooth1 = na
var float smooth2 = na
alpha = 2.0 / (length + 1)

if na(smooth1)
smooth1 := source
else
smooth1 := (1 - alpha) * smooth1 + alpha * source

if na(smooth2)
smooth2 := smooth1
else
smooth2 := (1 - alpha) * smooth2 + alpha * smooth1

// Oscillator
two_p = f_two_pole_filter(sma_n1, length)
two_pp = two_p[4]

// Colors
color buy_col1 = color.from_gradient(two_p, -1, 0.5, up_color, na)
color buy_col2 = color.from_gradient(two_p, -1, 0.5, [Link](up_color, 50), na)
color sell_col1 = color.from_gradient(two_p, -0.5, 1, na, dn_color)
color sell_col2 = color.from_gradient(two_p, -0.5, 1, na, [Link](dn_color, 50))
color color = two_p > two_pp
? color.from_gradient(two_p, -1,1, up_color, [Link](up_color,
0))
: color.from_gradient(two_p, -1,1,[Link](dn_color, 0),
dn_color)

// Signals
bool buy = [Link](two_p, two_pp) and two_p < 0 and [Link]
bool sell = [Link](two_p, two_pp) and two_p > 0 and [Link]

// }

// PLOT
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――{
if buy //and two_p < -0.5
sell_line := line(na)

if disp_lvl
buy_line := [Link](
bar_index-1
, low[1] - area
, bar_index
, low[1] - area
, force_overlay = true
, color = buy_col1
, style = line.style_dashed
)

[Link](bar_index-1, low[1] - area


, color = buy_col1, style = label.style_label_up, force_overlay =
true, size = [Link])

if [Link](low, buy_line.get_y1()) and [Link]


[Link](
bar_index-1
, buy_line.get_y1()
, color = [Link](up_color, 100)
, style = label.style_label_center
, force_overlay = true
, size = [Link]
, text = "✖"
, textcolor = up_color
)

buy_line := line(na)

if sell //and two_p > 0.5


buy_line := line(na)
if disp_lvl
sell_line := [Link](
bar_index-1
, high[1] + area
, bar_index
, high[1] + area
, force_overlay = true
, color = sell_col1
, style = line.style_dashed
)

[Link](bar_index-1, high[1] + area


, color = sell_col1, style = label.style_label_down, force_overlay =
true, size = [Link])

if [Link](high, sell_line.get_y1()) and [Link]


[Link](
bar_index-1
, sell_line.get_y1()
, color = [Link](dn_color, 100)
, style = label.style_label_center
, force_overlay = true
, size = [Link]
, text = "✖"
, textcolor = dn_color
)

sell_line := line(na)

switch
not na(buy_line) => buy_line. set_x2(bar_index)
not na(sell_line) => sell_line.set_x2(bar_index)

plotshape(buy ? two_p[1] : na, "Buy", [Link], [Link], buy_col2, -


1, size = [Link])
plotshape(buy ? two_p[1] : na, "Buy", [Link], [Link], buy_col1, -
1, size = [Link])

plotshape(sell ? two_p[1] : na, "Sell", [Link], [Link], sell_col2,


-1, size = [Link])
plotshape(sell ? two_p[1] : na, "Sell", [Link], [Link], sell_col1,
-1, size = [Link])

p11 = plot(1, color = [Link](chart.fg_color, 80))


plot(0.5, color = [Link](chart.fg_color, 50))
p00 = plot(0, color = [Link](bar_index % 2 == 0 ? chart.fg_color : na, 0))
plot(-0.5, color = [Link](chart.fg_color, 50))
p_1 = plot(-1, color = [Link](chart.fg_color, 80))

fill(p11, p00, 2, -1, [Link](chart.fg_color, 80), na)


fill(p_1, p00, 1, -2, na, [Link](chart.fg_color, 80))

p1 = plot(two_p, color = color, linewidth = 1)


p2 = plot(two_pp, display = [Link])

fill(p1, p2, two_p, two_pp, color, na)


// }

p_overbought = plot(0.5, color = na) // Level Overbought


p_oversold = plot(-0.5, color = na) // Level Oversold

// Warna hijau di Overbought


fill(p1, p_overbought, two_p > 0.5 ? [Link]([Link], 50) : na, na)

// Warna merah di Oversold


fill(p1, p_oversold, two_p < -0.5 ? [Link]([Link], 50) : na, na)

You might also like