Strategi Super Trend V

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

img

Gambaran umum

Strategi Super Trend V adalah strategi perdagangan jangka pendek yang didasarkan pada moving average dan standar deviasi. Ini menggunakan indikator Super Trend untuk menentukan arah tren harga dan menggabungkan dukungan dan resistensi yang terbentuk oleh moving average untuk memasuki pasar. Sementara itu, ini menggunakan saluran deviasi standar untuk memprediksi zona dukungan dan resistensi potensial harga dan menetapkan stop loss dan mengambil kisaran harga keuntungan untuk menerapkan strategi perdagangan jangka pendek yang mengikuti tren dan efisien keluar.

Logika Strategi

Pertama, strategi ini menghitung indikator Super Trend. Indikator Super Trend menggunakan hubungan antara ATR dan harga untuk menentukan arah tren. Ketika harga berada di atas tren naik, itu bullish. Ketika harga berada di bawah tren turun, itu bearish.

Kemudian ia menghitung EMA harga dan EMA harga terbuka. Ketika harga melintasi di atas EMA dan lebih tinggi dari EMA harga terbuka, itu adalah sinyal beli. Ketika harga melintasi di bawah EMA dan lebih rendah dari EMA harga terbuka, itu adalah sinyal jual.

Selanjutnya, ia menggunakan standar deviasi untuk menghitung band atas dan bawah saluran harga dan melakukan pengolahan perataan. Ketika harga menembus band atas standar deviasi, itu adalah sinyal stop loss. Ketika harga menembus band bawah standar deviasi, itu adalah sinyal mengambil keuntungan.

Akhirnya, ia menggabungkan moving average dari kerangka waktu yang berbeda untuk menentukan arah tren, bersama dengan indikator Super Trend, untuk membentuk penilaian tren yang stabil.

Keuntungan dari Strategi

  • Menggunakan indikator Super Trend untuk menentukan arah tren harga, menghindari kerugian yang disebabkan oleh pembalikan tren
  • Rata-rata bergerak dikombinasikan dengan harga terbuka membantu menentukan waktu masuk, menghindari pemecahan palsu
  • Saluran standar menyimpang memprediksi zona dukungan dan resistensi potensial dari harga untuk stop loss dan mengambil keuntungan
  • Kombinasi beberapa kerangka waktu meningkatkan stabilitas penilaian tren

Risiko dari Strategi

  • Indikator Super Trend memiliki efek keterlambatan, mungkin melewatkan titik perubahan tren
  • Crossover rata-rata bergerak memiliki efek keterlambatan, waktu masuk mungkin tidak akurat
  • Jangkauan saluran standar deviasi terlalu tetap untuk mencerminkan fluktuasi pasar secara real time
  • Penghakiman berdasarkan beberapa kerangka waktu dapat saling bertentangan

Manajemen Risiko:

  • Singkatkan parameter Super Trend dengan benar untuk meningkatkan sensitivitas
  • Mengoptimalkan periode rata-rata bergerak, atau menambahkan indikator lain untuk menentukan entri
  • Sesuaikan saluran penyimpangan standar secara dinamis agar sesuai dengan pasar
  • Mendefinisikan logika yang jelas untuk penilaian multi-frame waktu untuk menangani konflik

Arahan Optimasi

  • Mengoptimalkan parameter Super Trend untuk menemukan kombinasi terbaik
  • Cobalah indikator lain dikombinasikan dengan rata-rata bergerak untuk menentukan entri
  • Cobalah penyesuaian dinamis saluran standar deviasi
  • Uji kombinasi multi-frame waktu yang berbeda untuk menemukan yang terbaik
  • Mengoptimalkan strategi stop loss dan mengambil keuntungan untuk meningkatkan ruang keuntungan

Kesimpulan

Strategi Super Trend V mengintegrasikan keuntungan dari tren, moving average, saluran deviasi standar dan indikator lainnya untuk mencapai penilaian tren yang stabil, waktu masuk yang tepat, dan stop loss dan take profit berdasarkan zona harga. Dengan mengoptimalkan parameter, indikator, stop loss dan take profit, dll., Ini dapat meningkatkan stabilitas dan profitabilitas strategi. Logika yang solid dan pemikiran yang ketat layak 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 banyak