Strategi Super Trend V

Penulis:ChaoZhang, Tarikh: 2023-10-18 12:35:53
Tag:

img

Ringkasan

Strategi Super Trend V adalah strategi perdagangan jangka pendek berdasarkan purata bergerak dan penyimpangan standard. Ia menggunakan penunjuk Super Trend untuk menentukan arah trend harga dan menggabungkan sokongan dan rintangan yang dibentuk oleh purata bergerak untuk memasuki pasaran. Sementara itu, ia menggunakan saluran penyimpangan standard untuk meramalkan zon sokongan dan rintangan harga yang berpotensi dan menetapkan julat harga stop loss dan mengambil keuntungan untuk melaksanakan strategi perdagangan jangka pendek yang mengikuti trend dan keluar yang cekap.

Logika Strategi

Pertama, strategi ini mengira penunjuk Super Trend. Penunjuk Super Trend menggunakan hubungan antara ATR dan harga untuk menentukan arah trend. Apabila harga di atas trend menaik, ia adalah bullish. Apabila harga di bawah trend menurun, ia adalah bearish.

Kemudian ia mengira EMA harga dan EMA harga terbuka. Apabila harga melintasi di atas EMA dan lebih tinggi daripada harga terbuka EMA, ia adalah isyarat beli. Apabila harga melintasi di bawah EMA dan lebih rendah daripada harga terbuka EMA, ia adalah isyarat jual.

Seterusnya, ia menggunakan penyimpangan standard untuk mengira jalur atas dan bawah saluran harga dan membuat pemprosesan pelunturan. Apabila harga menembusi jalur atas penyimpangan standard, ia adalah isyarat stop loss. Apabila harga menembusi jalur bawah penyimpangan standard, ia adalah isyarat mengambil keuntungan.

Akhirnya, ia menggabungkan purata bergerak jangka masa yang berbeza untuk menentukan arah trend, bersama dengan penunjuk Super Trend, untuk membentuk penilaian trend yang stabil.

Kelebihan Strategi

  • Gunakan penunjuk Super Trend untuk menentukan arah trend harga, mengelakkan kerugian yang disebabkan oleh pembalikan trend
  • Purata bergerak digabungkan dengan harga terbuka membantu menentukan masa kemasukan, mengelakkan pembahagian palsu
  • Salinan penyimpangan standard meramalkan zon sokongan dan rintangan harga yang berpotensi untuk henti rugi dan mengambil keuntungan
  • Gabungan pelbagai jangka masa meningkatkan kestabilan penilaian trend

Risiko Strategi

  • Indikator Super Trend mempunyai kesan kelewatan, mungkin terlepas titik perubahan trend
  • Crossover purata bergerak mempunyai kesan kelewatan, masa kemasukan mungkin tidak tepat
  • Julat saluran penyimpangan piawai terlalu tetap untuk mencerminkan turun naik pasaran dalam masa nyata
  • Penghakiman berdasarkan pelbagai kerangka masa mungkin bertentangan antara satu sama lain

Pengurusan Risiko:

  • Memendekkan parameter Super Trend dengan betul untuk meningkatkan kepekaan
  • Mengoptimumkan tempoh purata bergerak, atau menambah penunjuk lain untuk menentukan kemasukan
  • Sesuaikan saluran penyimpangan standard secara dinamik untuk memenuhi pasaran
  • Menentukan logik yang jelas untuk penghakiman pelbagai jangka masa untuk menangani konflik

Arahan pengoptimuman

  • Mengoptimumkan parameter Super Trend untuk mencari kombinasi terbaik
  • Cuba penunjuk lain digabungkan dengan purata bergerak untuk menentukan kemasukan
  • Cuba penyesuaian dinamik saluran penyimpangan standard
  • Uji kombinasi pelbagai jangka masa untuk mencari perlawanan terbaik
  • Mengoptimumkan strategi stop loss dan mengambil keuntungan untuk meningkatkan ruang keuntungan

Kesimpulan

Strategi Super Trend V mengintegrasikan kelebihan trend, purata bergerak, saluran penyimpangan standard dan penunjuk lain untuk mencapai penilaian trend yang stabil, masa kemasukan yang betul, dan stop loss dan mengambil keuntungan berdasarkan zon harga. Dengan mengoptimumkan parameter, penunjuk, stop loss dan mengambil keuntungan, dll., Ia dapat meningkatkan kestabilan dan keuntungan strategi. Logiknya yang kukuh dan pemikiran yang ketat adalah bernilai dipelajari dan diteliti.


/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Super trend V Strategy version", overlay = true, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
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", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon


//
multiplier = input(title="TP VWAP Deviation", type=input.float, defval=2, minval=1)
src5 = vwap
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(vwap, 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



//
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

l = buy
s1 = sell
        
if l and testPeriod()
    strategy.entry("buy", strategy.long)
if s1 and testPeriod()
    strategy.entry("sell", strategy.short)



Lebih lanjut