Kanalbreakout-SMA-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-23 17:08:51
Tags:

img

Übersicht

Diese Strategie basiert auf einem Kanal-Breakout und nutzt einen gleitenden Durchschnitts-Crossover als Ausgangssignal.

Strategie Logik

  1. Berechnen Sie den höchsten Höchststand und den niedrigsten Tiefstand über bestimmte Perioden, um den oberen und unteren Kanal zu konstruieren.

  2. Gehen Sie lang, wenn der Preis über den oberen Kanal bricht; gehen Sie kurz, wenn der Preis unter den unteren Kanal bricht.

  3. Berechnen Sie schnelle und langsame SMA-Linien.

  4. Wenn lang, schließen lange, wenn schnelle SMA unter langsame SMA überschreitet; Wenn kurz, schließen kurz, wenn schnelle SMA über langsame SMA überschreitet.

Analyse der Vorteile

  1. Die Kombination von Kanal und gleitendem Durchschnittssystem kann die Rentabilität verbessern.

  2. Der Kanal beurteilt die Rotation und der SMA die Trendschwäche.

  3. Der SMA-Filter vermeidet Whipsaws und reduziert unnötige Trades.

  4. Der verstellbare Kanalbereich passt zu unterschiedlichen Perioden und Volatilität.

Risikoanalyse

  1. Ein falscher Kanalbereich kann einen Ausbruch verfehlen oder einen falschen Ausbruch erzeugen.

  2. Fehlende SMA-Parameter können früher oder später ausfallen.

  3. Eine angemessene Positionsgröße ist erforderlich, um Einzelverluste zu begrenzen.

  4. Achten Sie auf einen gültigen Ausbruch, vermeiden Sie hohe / niedrige Verkäufe.

Optimierung

  1. Prüfparameter zur Optimierung des Kanalbereichs und der SMA-Perioden.

  2. Fügen Sie einen Trendfilter hinzu, um die Erfolgsrate zu verbessern.

  3. Hinzufügen von Positionsgrößen wie fester Bruchteil und Martingale.

  4. Hinzufügen von Stop-Loss zur Kontrolle von Einzelverlusten.

Zusammenfassung

Diese Strategie profitiert von Kanal und SMA, um in starken Trends stetige Gewinne zu erzielen. Aber Whipsaw-Verluste müssen vermieden werden und die Positionsgröße ist entscheidend. Weitere Verbesserungen bei Parameter-Tuning, Signalfilterung und Risikomanagement werden die Robustheit verbessern.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-13 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © anshuanshu333

//@version=4

// strategy("ChBrkOutStrategySMA", overlay=true, initial_capital = 200000)
length = input(title="Length", type=input.integer, minval=1, maxval=1000, defval=7)
     
fastSMA = sma(close,9)
slowSMA = sma(close,21)

upBound = highest(high, length)
downBound = lowest(low, length)

boundLongEntry = ((close >= upBound) or (high >= upBound)) and fastSMA>slowSMA and (close > open)
boundShortEntry =((close <= downBound) or (low <= downBound)) and fastSMA<slowSMA and (close <open)

u=plot(upBound, title = "Upper Bound",color=color.blue, linewidth=1)
l=plot(downBound, title = "Lower Bound",color=color.red, linewidth=1)
plot(fastSMA,title = "Fast SMA", color = color.red, linewidth =2)
plot(slowSMA,title = "Slow SMA" ,color = color.green, linewidth =1)
fill(u,l, transp=95)
plot(avg(upBound,downBound), title = "Avg", color=color.gray,linewidth =1)

     
if (boundLongEntry )
    strategy.entry("LE", long = true)
    
if (boundShortEntry)
    strategy.entry("SE", long = false)
    
SmaLongExit = crossunder(fastSMA,slowSMA)
SmaShortExit = crossover(fastSMA,slowSMA)

    
//Close TRades   
if (strategy.position_size > 0)
    strategy.close(id="LE",when= SmaLongExit)
if (strategy.position_size < 0)
    strategy.close(id="SE",when= SmaShortExit)

Mehr