Super Trend V-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-18 12:35:53
Tags:

img

Übersicht

Die Super Trend V-Strategie ist eine kurzfristige Handelsstrategie, die auf gleitenden Durchschnitten und Standardabweichungen basiert. Sie verwendet den Super Trend-Indikator, um die Kurstrendrichtung zu bestimmen und kombiniert die Unterstützung und den Widerstand, die durch gleitende Durchschnitte gebildet werden, um in den Markt einzusteigen. In der Zwischenzeit verwendet sie den Standardabweichungskanal, um die potenziellen Unterstützungs- und Widerstandszonen des Preises vorherzusagen und setzt den Stop-Loss und Take-Profit-Preisbereich, um eine trendfolgende und effiziente kurzfristige Handelsstrategie zu implementieren.

Strategie Logik

Erstens berechnet diese Strategie den Super Trend Indikator. Der Super Trend Indikator verwendet die Beziehung zwischen ATR und Preis, um die Trendrichtung zu bestimmen. Wenn der Preis über dem steigenden Trend liegt, ist er bullisch. Wenn der Preis unter dem fallenden Trend liegt, ist er bärisch.

Dann berechnet er die EMA des Preises und die EMA des offenen Preises. Wenn der Preis über die EMA überschreitet und höher ist als der offene Preis EMA, ist es ein Kaufsignal. Wenn der Preis unter die EMA überschreitet und niedriger ist als der offene Preis EMA, ist es ein Verkaufssignal.

Als nächstes verwendet es die Standardabweichung, um die oberen und unteren Bands des Preiskanals zu berechnen und eine Glättungsabwicklung durchzuführen.

Schließlich kombiniert er gleitende Durchschnitte verschiedener Zeitrahmen zur Bestimmung der Trendrichtung mit dem Super Trend-Indikator, um eine stabile Trendbeurteilung zu bilden.

Vorteile der Strategie

  • Verwenden Sie den Super Trend-Indikator, um die Kursentwicklungsrichtung zu bestimmen und Verluste durch Trendumkehr zu vermeiden
  • Gleitende Durchschnitte in Kombination mit offenen Preisen helfen, den Zeitpunkt des Einstiegs zu bestimmen und vermeiden falsche Aufschlüsselungen
  • Standardabweichungskanal prognostiziert potenzielle Unterstützungs- und Widerstandszonen des Preises für Stop Loss und Take Profit
  • Die Kombination mehrerer Zeitrahmen verbessert die Stabilität der Trendbeurteilung

Risiken der Strategie

  • Super Trend Indikator hat Verzögerungseffekt, kann Trendwechselpunkte verpassen
  • Crossovers von gleitenden Durchschnitten haben Verzögerungseffekt, Eintrittszeiten sind möglicherweise nicht genau
  • Der Bereich des Standardabweichungskanals ist zu fest, um die Marktschwankungen in Echtzeit widerzuspiegeln
  • Beurteilungen auf der Grundlage mehrerer Zeitrahmen können miteinander in Konflikt geraten

Risikomanagement:

  • Verkürzung der Super-Trend-Parameter, um die Empfindlichkeit zu verbessern
  • Optimierung der gleitenden Durchschnittsperioden oder Hinzufügung anderer Indikatoren zur Bestimmung des Eingangs
  • Anpassung des Standardabweichungskanals dynamisch an den Markt
  • Definition einer klaren Logik für mehrjährige Urteile zur Bearbeitung von Konflikten

Optimierungsrichtlinien

  • Optimieren Sie die Super Trend Parameter, um die beste Kombination zu finden
  • Versuchen Sie andere Indikatoren in Kombination mit gleitenden Durchschnitten, um den Einstieg zu bestimmen
  • Versuchen Sie die dynamische Anpassung des Standardabweichungskanals
  • Verschiedene Kombinationen mit mehreren Zeitrahmen testen, um die beste Übereinstimmung zu finden
  • Optimieren Sie Stop-Loss- und Gewinnstrategien zur Verbesserung des Gewinns

Schlussfolgerung

Die Super Trend V-Strategie integriert die Vorteile von Trend, gleitendem Durchschnitt, Standardabweichungskanal und anderen Indikatoren, um ein stabiles Trendbeurteil, richtige Eintrittszeiten und Stop-Loss und Take-Profit basierend auf Preiszonen zu erreichen. Durch die Optimierung von Parametern, Indikatoren, Stop-Loss und Take-Profit usw. kann sie die Stabilität und Rentabilität der Strategie verbessern.


/*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)



Mehr