
Strategi ini didasarkan pada indikator supertrend dan indikator saluran harga, yang digabungkan dengan isyarat garis rata. Gagasan utamanya adalah menggunakan saluran harga untuk menentukan sama ada harga semasa berada dalam keadaan yang tidak normal, supertrend untuk menentukan arah trend semasa, dan menghasilkan isyarat perdagangan dengan kombinasi isyarat garis rata.
Hitung indikator super trend. Di mana garisan atas dan garisan bawah adalah N kali ganda harga semasa ditambah / dikurangkan dari indikator ATR. Apabila harga lebih tinggi daripada garisan atas, ia adalah bullish, dan apabila harga lebih rendah daripada garisan bawah, ia adalah bearish.
Hitung indikator saluran harga. Di mana garis saluran harga adalah M kali perbezaan standard dalam N hari harga. Harga lebih tinggi / lebih rendah daripada garis saluran dianggap sebagai keadaan luar biasa.
Hitung garis rata-rata. Ia adalah purata harga pembukaan, harga penutupan dan trend super.
Menjana isyarat dagangan:
isyarat beli: harga penutupan melintasi garis trend super dan lebih tinggi daripada garis purata harga pembukaan
Isyarat menjual: Melewati garis trend super di bawah harga penutupan dan di bawah garis purata harga pembukaan
Setting Stop Loss Stop Stop Channel.
Menggabungkan pelbagai petunjuk untuk mengelakkan isyarat palsu.
Dengan menggunakan saluran harga untuk menilai keadaan harga yang tidak normal, anda boleh menyaring beberapa titik masuk yang tidak sesuai.
Garis rata menggabungkan arah trend untuk mengelakkan operasi berlawanan.
Tetapkan jangkauan stop loss dan kawalan risiko.
Tetapan parameter terlalu subjektif dan perlu dioptimumkan.
Penghalang kerosakan mungkin terlalu besar.
Parameter saluran harga mungkin tidak sesuai untuk semua jenis dan perlu diuji secara berasingan untuk pelbagai jenis.
Ia boleh menyebabkan kerugian yang lebih besar apabila trend berubah secara mendadak.
Uji optimasi parameter untuk mencari kombinasi parameter terbaik.
Uji pelbagai kitaran garis purata untuk memilih parameter yang optimum.
Ujian ulang dilakukan pada pelbagai jenis, dengan parameter dipilih mengikut prestasi.
Mengoptimumkan strategi hentikan kerugian untuk mengelakkan kerugian yang terlalu besar.
Strategi ini mengintegrasikan pelbagai petunjuk untuk menentukan ketidaksamaan harga dan arah trend, secara teori dapat menyaring isyarat palsu tertentu. Tetapi tetapan parameter masih agak subjektif, ada ruang untuk pengoptimuman. Selain itu, dalam pasaran sebenar, anda juga perlu mempertimbangkan kesan kos urus niaga, seperti yuran dan slippage. Secara umum, strategi ini lebih sesuai sebagai strategi penjejakan trend, tetapi perlu menyesuaikan parameter pengoptimuman untuk pelbagai jenis.
/*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")