BRAHMASTRA

Penulis:ChaoZhang, Tarikh: 2022-05-13 14:39:00
Tag:WMA

Proses ▶ Mengimbas pivot yang sedang trend. ini bermakna, siri pivot Highs atau pivot Lows sama ada dalam susunan menaik atau menurun. ▶ Lukis garis trend di antara setiap pusingan dalam siri trend. Sebagai contoh, jika terdapat 5 pusingan aliran tinggi, lukis garis mXn di antara setiap titik ini. ▶ Pilih garis trend yang lebih tepat atau lebih kuat. Keakuratan diukur oleh bilangan lilin / lilin yang menyentuh garis dan bilangan lilin yang jatuh di luar garis. ▶ Hapuskan semua garisan kecuali yang paling tepat untuk setiap arah.

Pada bila-bila masa, anda akan melihat sehingga 4 garis trend dalam skrip ini.

▶ Garis trend menyambung dengan titik tertinggi dalam keadaan trend menaik ▶ Trendline menyambung pivot low dalam keadaan uptrend ▶ Garis trend menyambung dengan paras tertinggi dalam keadaan penurunan ▶ Trendline menyambung pivot low dalam keadaan downtrend

Garis lama akan kekal sehingga yang baru datang melalui jenis yang sama. oleh itu, anda masih akan dapat melihat garis trend uptrending tinggi dan rendah untuk instrumen downtrending yang dicipta jauh kembali!! Juga, garis trend baru menggantikan yang lama hanya jika mereka lebih kuat (menyambung kepada lebih banyak pivot dengan kurang lebihan)

Ujian belakang

img


/*backtest
start: 2022-04-12 00:00:00
end: 2022-05-11 23:59:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
study("BRAHMASTRA", precision=2, overlay=true)
// compilation: capissimo

// This script utilizes two modules, Trendlines Module (by Joris Duyck) and HMA-Kahlman Trend Module. 
// Trendlines module produces crossovers predictive of the next local trend.

//*** HMA-Kahlman Trend Module 
price  = input(hl2,  "Price Data (hl2)")
hkmod  = input(true, "===HMA-Kahlman Trend Module===")
length = input(22,   "Lookback Window", minval=2)
k      = input(true, "Use Kahlman")
gain   = input(.7,   "Gain", minval=.0001, step=.01)
labels = input(true, "Show Labels?")
o      = input(true, "Use Offset")

hma(x, p) => wma((2 * wma(x, p / 2)) - wma(x, p), round(sqrt(p)))
    
hma3() => p = length/2, wma(wma(close, p/3)*3 - wma(close, p/2) - wma(close, p), p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1],x)+dk*sqrt(g*2)
    velo = 0.0
    velo := nz(velo[1],0) + (g*dk)
    kf := smooth+velo

a = k ? kahlman(hma(price, length), gain) : hma(price, length)
b = k ? kahlman(hma3(), gain) : hma3()
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]
ofs = o ? -1 : 0

fill(plot(a,color=c,linewidth=1,transp=75), plot(b,color=c,linewidth=1,transp=75), color=c, transp=55)
plotshape(labels and crossdn ? a : na, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=ofs)
plotshape(labels and crossup ? a : na, location=location.belowbar, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=ofs)

//*** Trendlines Module, see https://www.tradingview.com/script/mpeEgn5J-Trendlines-JD/
tlmod = input(true, "===Trendlines Module===")
l1    = input(2,    "Pivots Lookback Window", minval=1)

trendline(input_function, delay, only_up) => // Calculate line coordinates (Ax,Ay) - (Bx,By)
    var int Ax = 0, var int Bx = 0, var float By = 0.0, var float slope = 0.0
    Ay = fixnan(input_function)
    if change(Ay)!=0
        Ax := time[delay], By:= Ay[1], Bx := Ax[1]
        slope := ((Ay-By)/(Ax-Bx))
    else
        Ax := Ax[1], Bx := Bx[1], By := By[1]

    var line trendline=na, var int Axbis=0, var float Aybis=0.0, var bool xtend=true
    extension_time = 0
    Axbis := Ax + extension_time
    Aybis := (Ay + extension_time*slope)
    if tlmod and change(Ay)!=0
        line_color = slope*time<0?(only_up?na:color.red):(only_up?color.lime:na)
        if not na(line_color)
            trendline = line.new(Bx,By,Axbis, Aybis, xloc.bar_time, extend=xtend?extend.right:extend.none, color=line_color, style=line.style_dotted, width=1)
            line.delete(trendline[1])
    slope
	
pivot(len) =>	
    high_point = pivothigh(high, len,len/2)
    low_point  = pivotlow(low, len,len/2)
    slope_high = trendline(high_point, len/2,false)
    slope_low  = trendline(low_point, len/2,true)
    [high_point, low_point, slope_high, slope_low]

[high_point1, low_point1, slope_high1, slope_low1] = pivot(l1) 

color_high1 = slope_high1 * time<0 ? color.red : na
color_low1  = slope_low1  * time>0 ? color.lime : na
plot(tlmod ? high_point1 : na, color=color_high1, offset=-l1/2, linewidth=2)
plot(tlmod ? low_point1  : na, color=color_low1, offset=-l1/2, linewidth=2)



if crossup
    strategy.entry("Enter Long", strategy.long)
else if crossdn
    strategy.entry("Enter Short", strategy.short)

Berkaitan

Lebih lanjut