Strategi ini didasarkan pada indikator supertrend dan indikator saluran harga, yang digabungkan dengan sinyal linier. Gagasan utamanya adalah menggunakan saluran harga untuk menentukan apakah harga saat ini berada dalam kondisi yang tidak normal, supertrend untuk menentukan arah tren saat ini, dan menghasilkan sinyal perdagangan dengan kombinasi sinyal linier.
Perhitungan indikator supertrend. Di mana garis atas dan bawah adalah N kali lipat dari harga saat ini ditambah / dikurangi dengan indikator ATR. Ketika harga lebih tinggi dari tren atas, itu adalah bullish, dan ketika harga lebih rendah dari tren bawah, itu adalah bearish.
Hitung indikator saluran harga. Di mana saluran harga adalah M kali selisih standar harga dalam N hari. Harga di atas / di bawah saluran dianggap sebagai keadaan yang tidak normal.
Perhitungan rata-rata. Rata-rata dari harga buka, tutup, dan supertrend.
Menciptakan sinyal perdagangan:
Sinyal beli: harga penutupan melewati garis tren super dan lebih tinggi dari garis rata-rata harga bukaan
Sinyal jual: melewati garis tren super di bawah harga penutupan dan di bawah garis rata-rata harga bukaan
Setting Stop Loss Stop Stop Channel.
Ini adalah salah satu cara yang paling efektif untuk menghindari sinyal palsu.
Menggunakan saluran harga untuk menilai kondisi harga yang tidak normal, Anda dapat menyaring beberapa titik masuk yang tidak diinginkan.
Garis rata ini digunakan untuk menentukan arah tren dan menghindari operasi berlawanan arah.
Tetapkan Stop Loss Range dan Kontrol Resiko
Pengaturan parameter terlalu subjektif dan perlu dioptimalkan.
Stop loss mungkin terlalu kecil.
Parameter saluran harga mungkin tidak cocok untuk semua varietas, perlu diuji secara terpisah sesuai dengan varietas yang berbeda.
Pada saat tren berubah secara dramatis, kemungkinan kerugian yang lebih besar akan terjadi.
Optimasi tes parameter untuk menemukan kombinasi parameter optimal.
Uji siklus rata-rata yang berbeda untuk memilih parameter optimal.
Uji ulang dilakukan pada berbagai varietas, dengan memilih parameter berdasarkan kinerja.
Optimalkan strategi stop loss untuk menghindari kerugian dalam satu kali.
Strategi ini mengintegrasikan berbagai indikator untuk menilai ketidaknormalan harga dan arah tren, secara teoritis dapat memfilter sinyal palsu tertentu. Namun, pengaturan parameter masih relatif subjektif, ada ruang untuk pengoptimalan tertentu. Selain itu, di pasar nyata tertentu, Anda juga perlu mempertimbangkan biaya transaksi seperti biaya, slippage, dan sebagainya. Secara keseluruhan, strategi ini lebih cocok sebagai strategi pelacakan tren, tetapi perlu dilakukan penyesuaian parameter untuk varietas yang berbeda.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-11 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Vol ST VM", overlay=true)
source = close
hilow = ((high - low)*100)
openclose = ((close - open)*100)
vol = (volume / hilow)
spreadvol = (openclose * vol)
VPT = spreadvol + cum(spreadvol)
window_len = 28
v_len = 14
price_spread = stdev(high-low, window_len)
v = spreadvol + cum(spreadvol)
smooth = sma(v, v_len)
v_spread = stdev(v - smooth, window_len)
shadow = (v - smooth) / v_spread * price_spread
out = shadow > 0 ? high + shadow : low + shadow
//
src = out
src1=open
src2=low
src3=high
tf =input(720)
len = timeframe.isintraday and timeframe.multiplier >= 1 ?
tf / timeframe.multiplier * 7 :
timeframe.isintraday and timeframe.multiplier < 60 ?
60 / timeframe.multiplier * 24 * 7 : 7
c = ema(src, len)
plot(c,color=color.red)
o = ema(src1,len)
plot(o,color=color.blue)
//h = ema(src3,len)
//l=ema(src2,len)
//
col=c > o? color.lime : color.orange
vis = true
vl = c
ll = o
m1 = plot(vl, color=col, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=col, linewidth=2, transp=80)
fill(m1, m2, color=col, transp=70)
//
vpt=ema(out,len)
// INPUTS //
st_mult = input(1, title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period', minval = 1)
// CALCULATIONS //
up_lev = vpt - (st_mult * atr(st_period))
dn_lev = vpt + (st_mult * atr(st_period))
up_trend = 0.0
up_trend := close[1] > up_trend[1] ? max(up_lev, up_trend[1]) : up_lev
down_trend = 0.0
down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev
// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)
// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend
// Plotting
plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy=crossover( close, st_line) and close>o
sell=crossunder(close, st_line) and close<o
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
plotshape(buy, title="buy", color=color.green, style=shape.arrowup, location=location.belowbar, size=size.normal, textcolor=color.white, transp=0) //plot for buy icon
plotshape(sell, title="sell", color=color.red, style=shape.arrowdown, location=location.abovebar, size=size.normal, textcolor=color.white, transp=0) //plot for sell icon
//
multiplier = input(title="TP", type=input.float, defval=2, minval=1)
src5 = close
len5 = input(title="TP length", defval=150, minval=1)
offset = 0
calcSlope(src5, len5) =>
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for i = 1 to len5
val = src5[len5-i]
per = i + 1.0
sumX := sumX + per
sumY := sumY + val
sumXSqr := sumXSqr + per * per
sumXY := sumXY + val * per
slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)
average = sumY / len5
intercept = average - slope * sumX / len5 + slope
[slope, average, intercept]
var float tmp = na
[s, a, i] = calcSlope(src5, len5)
vwap1=(i + s * (len5 - offset))
sdev = stdev(close, len5)
dev = multiplier * sdev
top=vwap1+dev
bott=vwap1-dev
//
z1 = vwap1 + dev
x1 = vwap1 - dev
low1 = crossover(close, x1)
high1 = crossunder(close, z1)
plotshape(low1, title="low", text="TP", color=color.red, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon
plotshape(high1, title="high", text="TP", color=color.green, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0) //plot for sell icon
strategy.entry(id="Enter Long MA", long=true, comment="Buy", when=high1)
strategy.entry(id="Short Entry MA", long=false, comment="Sell", when=low1)
/////// Alerts /////
alertcondition(buy,title="buy")
alertcondition(sell,title="sell")
alertcondition(low1,title="sell tp")
alertcondition(high1,title="buy tp")