Handelsstrategie für den Handel mit Volatilitätsspreads in zwei Zeiträumen

Schriftsteller:ChaoZhang, Datum: 2024-02-18 15:31:32
Tags:

img

Übersicht

Die Strategie des Dual-Time-Frame-Volatility-Spread-Handels beurteilt den Überkauf/Überverkauf-Status des Marktes, indem der Spread zwischen RSI-Indikatoren aus zwei verschiedenen Zeitzyklen berechnet wird, um einen Trendhandel mit geringem Risiko umzusetzen.

Strategieprinzip

Die Kernindikatoren dieser Strategie sind ShortTermXtrender und longTermXtrender. shortTermXtrender berechnet den RSI-Spread für den kurzfristigen Zeitraum und longTermXtrender berechnet den RSI-Spread für den langfristigen Zeitraum.

Der kurzfristige Zeitrahmen verwendet die Preisdifferenz zwischen der 7-tägigen EMA und der 4-tägigen LMA zur Berechnung des RSI, und dann stellt die Preisdifferenz mit 50 shortTermXtrender dar. Der langfristige Zeitrahmen verwendet die Preisdifferenz zwischen dem RSI der 4-tägigen EMA und 50 zum LongTermXtrender.

Wenn der ShortTermXtrender über 0, geht man lang; wenn der longTermXtrender über 0, geht man auch lang. Das Stop-Loss-Prinzip nach dem Long-Going besteht darin, den Stop-Loss zu verursachen, wenn der ShortTermXtrender unter 0 fällt; wenn der longTermXtrender unter 0 fällt, stoppt man auch den Stop-Loss.

Auf diese Weise können durch das Beurteilen von doppelten Zeitrahmen mehr falsche Ausbrüche herausgefiltert werden.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass das Trendbeurteilungsverfahren genau ist. Die Kombination von zwei Zeitrahmen kann das Rauschen effektiv filtern und die Zieltrendrichtung verriegeln. Dies bietet eine Garantie für einen risikoarmen Trendverfolgungshandel.

Darüber hinaus bietet die Strategie Raum für die Optimierung von Parametern. Benutzer können Parameter wie SMA-Zyklus und RSI-Parameter entsprechend verschiedenen Sorten und Zeitzyklen anpassen, um die Strategieergebnisse zu optimieren.

Risikoanalyse

Das Hauptrisiko dieser Strategie ist die falsche Beurteilung von Long und Short. In schwankenden Märkten ist es leicht, falsche Signale zu generieren. Wenn die Position zu diesem Zeitpunkt noch geöffnet ist, besteht das Risiko eines Verlusts.

Darüber hinaus können unsachgemäße Parameter-Einstellungen auch zu schlechten Ergebnissen führen. Wenn der Zeitzyklus-Parameter zu kurz eingestellt wird, erhöht sich die Wahrscheinlichkeit eines Fehleinschätzens; wenn der Zeitzyklus-Parameter zu lang eingestellt wird, wird die Gelegenheit für den Trend verpasst. Dies erfordert, dass Benutzer Parameter für verschiedene Märkte testen und optimieren.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Erhöhung der Gewinnnahme Mechanismus. Derzeit gibt es keine Gewinnnahme Einstellung in der Strategie. Gewinn kann in der Zeit nach Erreichen des Zielgewinns genommen werden.

  2. Positionen können dynamisch anhand von Kapitalgröße, Volatilität und anderen Indikatoren angepasst werden.

  3. Testparameter-Einstellungen für verschiedene Sorten. Benutzer können die optimale Parameterkombination testen, indem sie verschiedene Zeitrahmen wie täglich und 60 Minuten zurücktesten.

  4. Erhöhung der durch maschinelles Lernen unterstützten Beurteilung. Modelle können trainiert werden, um Marktbedingungen zu bestimmen und Strategieparameter dynamisch anzupassen, um die Gewinnrate zu verbessern.

Zusammenfassung

Die Dual Timeframe Volatility Spread Trading Strategie erzielt eine effiziente Trend-Erfassung durch den Aufbau von Dual Timeframe-Indikatoren. Die Strategie hat einen großen Optimierungsraum. Benutzer können durch Parameteranpassung, Gewinnmanagement, Positionsmanagement usw. optimieren, um bessere Strategieergebnisse zu erzielen. Diese Strategie eignet sich für Benutzer mit etwas Handelserfahrung.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)


Mehr