Diese Strategie basiert auf dem Super Trend-Indikator und dem Preiskanal-Indikator, kombiniert mit gleitenden Durchschnittssignalen für den Handel.
Berechnen Sie den Super Trend-Indikator. Die oberen und unteren Schienen sind der aktuelle Preis plus/minus N mal der ATR-Indikator. Wenn der Preis höher ist als die oberen Schienen, ist er bullisch. Wenn der Preis niedriger ist als die unteren Schienen, ist er bärisch.
Berechnen Sie den Preiskanalindikator. Die Preiskanallinie ist M mal die N-Tage-Standard-Abweichung des Preises. Preise höher/niedriger als die Kanallinie gelten als abnormale Zustände.
Berechnen Sie gleitende Durchschnitte. Nehmen Sie die durchschnittlichen Linien des offenen Preises, des Schlusskurses und des Supertrends.
Erstellen von Handelssignalen:
Kaufsignal: Der Schlusskurs überschreitet die Super Trendlinie und liegt über dem gleitenden Durchschnitt des offenen Preises.
Verkaufssignal: Der Schlusskurs überschreitet die Super Trendlinie und liegt unter dem gleitenden Durchschnitt des offenen Preises.
Setzen Sie Stop-Loss und Gewinnpreis-Kanal.
Die Kombination mehrerer Indikatoren verhindert falsche Signale.
Die Verwendung des Preiskanals zur Beurteilung von abnormalen Preiszuständen kann einige unerwünschte Einstiegspunkte herausfiltern.
Bewegliche Durchschnitte in Kombination mit der Beurteilung der Trendrichtung vermeiden den Handel gegen den Trend.
Die Einstellung von Stop-Loss und Take-Profit-Bereich kontrolliert das Risiko.
Die Parameter-Einstellungen sind zu subjektiv und müssen optimiert werden.
Der Stop-Loss- und Take-Profit-Bereich kann zu breit oder zu eng eingestellt werden.
Die Preiskanalparameter sind möglicherweise nicht für alle Produkte geeignet, daher sind separate Prüfungen erforderlich.
Bei drastischen Trendwechseln können erhebliche Verluste eintreten.
Test und Optimierung von Parametern, um optimale Kombinationen zu finden.
Test gleitende Durchschnitte mit verschiedenen Perioden, um optimale Parameter auszuwählen.
Backtest auf mehreren Produkten und Auswahl von Parametern je nach Leistung.
Optimieren Sie die Stop-Loss-Strategie, um zu große Einzelverluste zu vermeiden.
Diese Strategie kombiniert mehrere Indikatoren, um Preisanomalien und Trendrichtungen zu beurteilen, die theoretisch einige falsche Signale herausfiltern können. Allerdings sind die Parameter-Einstellungen immer noch relativ subjektiv und lassen sich optimieren. Darüber hinaus sollten Handelskosten wie Provisionen und Slippage im tatsächlichen Handel berücksichtigt werden. Insgesamt eignet sich diese Strategie besser als Trendfolgestrategie, aber Parameter müssen für verschiedene Produkte optimiert und angepasst werden.
/*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")