Strategi Super Trend V


Tarikh penciptaan: 2023-10-18 12:35:53 Akhirnya diubah suai: 2023-10-18 12:35:53
Salin: 0 Bilangan klik: 555
1
fokus pada
1166
Pengikut

Strategi Super Trend V

Gambaran keseluruhan

Strategi Super Trend V adalah strategi perdagangan garis pendek berdasarkan purata bergerak dan selisih piawai. Ia menggunakan petunjuk Super Trend untuk menentukan arah trend harga, menggabungkan sokongan dan rintangan yang dibentuk oleh purata bergerak untuk masuk.

Prinsip Strategi

Strategi ini mula-mula mengira petunjuk Super Trend, yang menggunakan ATR dan hubungan harga untuk menentukan arah trend. Harga adalah bullish apabila harga lebih tinggi daripada trend kenaikan, dan turun apabila harga lebih rendah daripada trend penurunan.

Kemudian kira EMA purata bergerak harga dan EMA purata bergerak harga pembukaan, untuk memberi isyarat membeli apabila harga berada di atas purata bergerak dan lebih tinggi daripada garis purata harga pembukaan, dan untuk memberi isyarat menjual apabila harga berada di bawah purata bergerak dan lebih rendah daripada garis purata harga pembukaan.

Kemudian menggunakan perbezaan piawai untuk mengira kenaikan dan penurunan saluran harga, dan melakukan pemprosesan yang lancar, apabila harga melanggar perbezaan piawai, isyarat berhenti, dan apabila harga melanggar perbezaan piawai, isyarat berhenti.

Akhirnya, purata bergerak dari tempoh masa yang berbeza untuk menentukan arah trend, digabungkan dengan penunjuk Super Trend, membentuk penilaian trend yang stabil.

Kelebihan Strategik

  • Menggunakan indikator Super Trend untuk menentukan arah trend harga, mengelakkan kehilangan akibat pembalikan trend
  • Rata-rata bergerak yang digabungkan dengan harga bukaan membantu menentukan masa masuk, mengelakkan penembusan palsu
  • Saluran standard deviasi untuk meramalkan kawasan sokongan dan rintangan yang berpotensi untuk harga, dan menetapkan harga stop loss
  • Pembaharuan jangka masa yang lebih baik dan lebih stabil

Risiko Strategik

  • Indeks Super Trend terlewat, mungkin terlepas titik peralihan trend
  • Rata-rata bergerak menghasilkan isyarat silang yang terlewat, masa masuk tidak tepat
  • Julat saluran standard deviasi terlalu tetap untuk mencerminkan turun naik pasaran dalam masa nyata
  • Pertimbangan pelbagai tempoh masa mungkin bertentangan

Penyelesaian risiko:

  • Meningkatkan sensitiviti dengan memendekkan parameter Super Trend
  • Mengoptimumkan kitaran purata bergerak, atau menambah petunjuk lain untuk menentukan kemasukan
  • Secara dinamik menyesuaikan parameter saluran standard deviasi supaya ruang lingkup dapat bersesuaian dengan pasaran
  • Menetapkan logik penilaian berbilang kitaran dengan jelas, menangani kemungkinan konflik

Arah pengoptimuman strategi

  • Mengoptimumkan parameter Super Trend untuk mencari kombinasi parameter terbaik
  • Cuba petanda lain yang digabungkan dengan purata bergerak untuk menentukan masa masuk
  • Cuba untuk menyesuaikan parameter saluran standard deviasi secara dinamik
  • Uji kombinasi pelbagai kitaran untuk mencari kitaran yang paling sesuai
  • Mengoptimumkan strategi Hentikan Kerosakan untuk meningkatkan ruang keuntungan strategi

ringkaskan

Strategi super trend V mengintegrasikan kelebihan indikator seperti trend, garis rata-rata, dan saluran perbezaan piawai, mewujudkan arah trend yang stabil, memilih masa masuk yang sesuai, dan menetapkan strategi perdagangan garis pendek untuk menghentikan hentian di kawasan harga. Dengan pengoptimuman parameter, pengoptimuman indikator, pengoptimuman hentian, pengoptimuman hentian, dan lain-lain, ia dapat meningkatkan kestabilan dan keuntungan strategi. Logiknya yang kukuh dan pemikiran yang ketat patut dipelajari dan dikaji.

Kod sumber strategi
/*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)