Quantitative Handelsstrategie auf Basis eines verbesserten Vortexindikators

Schriftsteller:ChaoZhang, Datum: 2023-11-14 14:40:54
Tags:

img

Übersicht

Diese Strategie ist eine aktualisierte Version der Vortex-Indikator-Strategie. Basierend auf dem ursprünglichen Vortex-Indikator enthält sie mehrere neue Funktionen, darunter das Auslösen von Trades auf Basis von Schwellenwerten, das Glätten von Vortex-Linien mit EMA, das Hinzufügen von Stop Loss und Take Profit, die Implementierung von Long-only-, Short-only- oder Long/Short-Strategien usw. Sie eignet sich für Anleger, die den verbesserten Vortex-Indikator im quantitativen Handel anwenden möchten.

Grundsätze

Der Kernindikator dieser Strategie ist der verbesserte Wirbelindikator. Der traditionelle Wirbelindikator bildet positive und negative Wirbellinien, indem er die absolute Summe der Kursschwankungen berechnet. Wenn die positive Linie über die negative Linie geht, sendet sie ein Kaufsignal. Wenn die negative Linie unter die positive Linie geht, sendet sie ein Verkaufssignal.

Diese Strategie ergibt folgende Verbesserungen des traditionellen Vortex-Indikators:

  1. Anstatt sich ausschließlich auf Linienkreuzungen zu verlassen, führt es das Konzept des Schwellenwerts ein. Trades werden nur ausgelöst, wenn der Spread zwischen den positiven und negativen Linien einen vorgegebenen Schwellenwert übersteigt. Dies hilft, kleine, unbedeutende Kreuzungen auszufiltern.

  2. Die Wirbellinien werden mit EMA glättet, um Kurvenrüttelungen zu reduzieren.

  3. Es werden Stop-Loss- und Take-Profit-Funktionen hinzugefügt.

  4. Händler können zwischen Long-only, Short-only oder Long/Short-Strategien wählen, um unterschiedlichen Bedürfnissen gerecht zu werden.

Mit diesen Verbesserungen kann die Strategie Trends zuverlässiger erkennen und in Backtests gut abschneiden.

Analyse der Vorteile

  1. Der verbesserte Vortex-Indikator filtert ungültige Signale aus und verhindert falsche Unterbrechungen.

  2. Die Verwendung von Schwellen für Signale anstelle von einfachen Kreuzungen kann zuverlässiger Trendumkehrpunkte erkennen.

  3. Die Stop-Loss-/Take-Profit-Funktionen ermöglichen die Voreinstellung von Gewinn-/Verlustquoten, um die Risiken für jeden Handel zu kontrollieren, wobei die Grundsätze des rationellen Handels berücksichtigt werden.

  4. Die Wahl zwischen nur langen, nur kurzen oder nur langen/kurzen Optionen bietet Flexibilität, um sich an verschiedene Marktstadien anzupassen und den Bedürfnissen verschiedener Händler anzupassen.

  5. Die Strategie verfügt über gut konzipierte Parameter und gute Rückprüfungsergebnisse, die ihr praktischen Nutzen verleihen.

Risikoanalyse

  1. Die Strategie funktioniert hauptsächlich für Trendmärkte.

  2. Vortex-Linien sind von Natur aus empfindlich für Kursschwankungen.

  3. Wenn der Schwellenwert zu hoch eingestellt wird, kann er die Trades verpassen. Wenn er zu niedrig eingestellt wird, kann er falsche Signale erzeugen. Umfassende Tests sind erforderlich, um die optimalen Niveaus zu finden.

  4. Der Handel mit dem Wertpapier muss sich vor diesem Risiko hüten.

Optimierungsrichtlinien

  1. Die Kombination mit anderen Indikatoren für Signalbestätigung und umfassendere Beurteilungen sollte in Betracht gezogen werden.

  2. Test-Parameterempfindlichkeit für verschiedene Bestände und Optimierung der Einstellungen.

  3. Untersuchen Sie adaptive Stop-Loss-Techniken, um Stops entlang des Haupttrends anzupassen.

  4. Einführung von maschinellem Lernen usw. zur automatischen Optimierung von Parametern.

  5. Erforschung von Indexationsmethoden auf der Grundlage dieser Strategie zur Kapazitätserweiterung.

Schlussfolgerung

Diese Strategie macht mehrere Verbesserungen gegenüber dem traditionellen Vortex-Indikator und bildet ein relativ reifes und zuverlässiges quantitatives Handelssystem. Durch die Kombination von Trendfilterung und Risikokontrolle vermeidet sie übermäßige Risiken aus zerstreuten Trades und nutzt die Trend-Erfassungskapazitäten des Indikators selbst. Mit weiterer Parameteroptimierung und Kombinationstechniken kann die Strategie stabiler und reaktionsfähiger gemacht werden. Insgesamt hat sie einen praktischen Wert als aktualisierte Version der Vortex-Indikator-Strategie.


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

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Mehr