Die Ressourcen sind geladen. Beförderung...

Strategie mit doppeltem Antrieb

Schriftsteller:ChaoZhang, Datum: 2023-09-19 16:27:12
Tags:

Übersicht

Die Dual-Thrust-Strategie setzt auf der Grundlage des Eröffnungspreises und des Vortagsbereichs obere und untere Bands fest, wobei bei Aufbruch lang und bei Abbruch kurz gehandelt wird.

Strategieprinzip

  1. Berechnen Sie den höchsten hohen HH und den niedrigsten niedrigen LL über die jüngsten N-Bars.

  2. Berechnen Sie die höchste und die niedrigste nahe HC des Vortages.

  3. Der Bereich des vorherigen Tages ist der größere Bereich von HH-LC und HC-LL.

  4. Der obere Band BuyLine ist der Eröffnungspreis plus K1*Range.

  5. Der untere Bereich SellLine ist der Eröffnungspreis minus k2*Range.

  6. Gehen Sie lang, wenn die Schließung über der BuyLine bricht.

Analyse der Vorteile

Hauptvorteile dieser Strategie:

  1. Erfasst den Trend, der durch Ausbrüche um den Eröffnungspreis gebildet wird.

  2. Die Bands werden automatisch auf der Grundlage historischer Volatilität festgelegt, wobei Subjektivität vermieden wird.

  3. Anpassbare k-Werte eignen sich für Produkte mit unterschiedlicher Volatilität.

  4. Breakout-Signale sind relativ hochwertig.

  5. Flexible Aufbewahrungszeiten zur Erfassung von Trends in verschiedenen Zeitrahmen.

Risikoanalyse

Hauptrisiken dieser Strategie:

  1. Schwierigkeiten bei der Bestimmung eines angemessenen Bereichs für die Bänder, Überfit-Risiken.

  2. Ausbrüche können sich als falsche Signale erweisen, müssen Stop-Loss sein.

  3. Eine feste Haltedauer kann sich nicht dynamisch an den Markt anpassen.

  4. Unzureichende Daten aus Backtests führen zu einer Kurvenanpassung.

  5. Schwierigkeiten beim Zusammenführen von Long- und Short-Trading.

Lösungen:

  1. Optimieren von k-Werten für größere Datensätze, um Überanpassung zu vermeiden.

  2. Setzen Sie einen angemessenen Stop-Loss, um Verluste pro Handel zu begrenzen.

  3. Hinzufügen eines Trendfilters, um einen Gegentrendhandel zu vermeiden.

  4. Überlegen Sie, die Aufbewahrungsdauer auf Intraday zu verkürzen.

  5. Live-Validierung mit schrittweisen Positionsgrößen.

Optimierungsrichtlinien

Einige Möglichkeiten zur Verbesserung der Strategie:

  1. Dynamische Anpassung der k-Werte für die Bands.

  2. Fügen Sie den Lautstärkungsfilter hinzu, um das Ausbruchsignal zu bestätigen.

  3. Bewegen Sie den Stop-Loss, um den Gewinn zu schützen.

  4. Beurteilen Sie die Ausbruchstärke für die Positionsgröße.

  5. Unterscheiden Sie zwischen Trend und Range, um die Strategie zu zerlegen.

Zusammenfassung

Die Dual-Thrust-Strategie kann Trend-Handelschancen um den Eröffnungspreis herum erfassen. Aber Parameter-Einstellungen und Haltezeitoptimierungen bieten großen Raum für Verbesserungen unter Berücksichtigung der Risikokontrolle. Für den Live-Handel beginnen Sie mit konservativen Parametern und erhöhen Sie die Positionen schrittweise.


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

//@version=3
strategy("Dual Thrust Strategy",overlay=true,initial_capital=1000)
k1=input(0.67,type=float,step=0.01)
k2=input(0.62,type=float,step=0.01)
TimeFrame=input('240')
len=input(20)
HH=security(syminfo.tickerid,TimeFrame,highest(high,len),barmerge.lookahead_off)
LC=security(syminfo.tickerid,TimeFrame,lowest(close,len),barmerge.lookahead_off)
HC=security(syminfo.tickerid,TimeFrame,highest(close,len),barmerge.lookahead_off)
LL=security(syminfo.tickerid,TimeFrame,lowest(low,len),barmerge.lookahead_off)
Range=max(HH-LC,HC-LL)
BuyLine=security(syminfo.tickerid,"D",open,barmerge.lookahead_off)+k1*Range
SellLine=security(syminfo.tickerid,"D",open,barmerge.lookahead_off)-k2*Range
plot(BuyLine,color=blue,linewidth=2,offset=1,transp=70)
plot(SellLine,color=red,linewidth=2,offset=1,transp=70)


LongCondition=crossover(close,BuyLine)
ShortCondition=crossunder(close,SellLine)
strategy.entry("enter long",true,1,when=LongCondition)
strategy.entry("enter short",false,1,when=ShortCondition)
plotshape(LongCondition and strategy.position_size<0?low:na,style=shape.labelup,location=location.absolute,color=blue,text="Long",textcolor=white,size=size.small)
plotshape(ShortCondition and strategy.position_size>0?high:na,style=shape.labeldown,location=location.absolute,color=red,text="Short",textcolor=white,size=size.small)
alertcondition(LongCondition and strategy.position_size<0,title='Long_DT')
alertcondition(ShortCondition and strategy.position_size>0,title='Short_DT')

Mehr