Stratégie de négociation de la volatilité sur deux délais

Auteur:ChaoZhang est là., Date: 2024-02-18 15h31 et 32h
Les étiquettes:

img

Résumé

La stratégie de négociation du spread de volatilité à double échéancier évalue l'état de surachat/survente du marché en calculant l'écart entre les indicateurs RSI de deux cycles de temps différents pour mettre en œuvre une négociation de tendance à faible risque.

Principe de stratégie

Les principaux indicateurs de cette stratégie sont les indicateurs shortTermXtrender et longTermXtrender. shortTermXtrender calcule l'écart RSI sur le délai court et longTermXtrender calcule l'écart RSI sur le délai long.

L'intervalle de temps à court terme adopte la différence de prix entre l'EMA de 7 jours et l'EMA de 4 jours pour calculer le RSI, puis la différence de prix avec 50 constitue shortTermXtrender. L'intervalle de temps à long terme adopte la différence de prix entre l'ESR de l'EMA de 4 jours et 50 pour constituer longTermXtrender.

Lorsque le shortTermXtrender dépasse 0, passez long; lorsque le longTermXtrender dépasse 0, passez également long. Le principe de stop loss après le long est de stopper la perte lorsque le shortTermXtrender dépasse 0; lorsque le longTermXtrender dépasse 0, arrêtez également la perte.

De cette façon, en jugeant sur des délais doubles, plus de fausses éruptions peuvent être filtrées.

Analyse des avantages

Le plus grand avantage de cette stratégie est que le jugement de la tendance est précis. La combinaison de deux délais peut filtrer efficacement le bruit et verrouiller la direction de la tendance ciblée. Cela garantit un trading de suivi de tendance à faible risque.

Les utilisateurs peuvent ajuster des paramètres tels que le cycle SMA et les paramètres RSI en fonction de différentes variétés et cycles de temps pour optimiser les résultats de la stratégie.

Analyse des risques

Le principal risque de cette stratégie est le mauvais jugement de long et de court. Dans les marchés oscillants, il est facile de générer de mauvais signaux. Si la position est toujours ouverte à ce moment-là, il y aura un risque de perte.

En outre, des paramètres incorrects peuvent également entraîner de mauvais résultats. Si le paramètre du cycle de temps est réglé trop court, la probabilité d'un mauvais jugement augmentera; si le paramètre du cycle de temps est réglé trop long, l'opportunité de tendance sera manquée. Cela oblige les utilisateurs à tester et à optimiser les paramètres pour différents marchés.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Augmenter le mécanisme de prise de profit. Actuellement, il n'y a pas de réglage de prise de profit dans la stratégie. Le profit peut être pris dans le temps après avoir atteint le profit cible.

  2. Améliorer la gestion des positions: les positions peuvent être ajustées dynamiquement en fonction de la taille du capital, de la volatilité et d'autres indicateurs.

  3. Les utilisateurs peuvent tester la combinaison optimale de paramètres en testant en arrière différents délais tels que quotidien et 60 minutes.

  4. Augmenter le jugement assisté par l'apprentissage automatique. Les modèles peuvent être formés pour déterminer les conditions du marché et ajuster dynamiquement les paramètres de stratégie pour améliorer le taux de réussite.

Résumé

La stratégie de trading de volatilité à deux délais permet de capturer efficacement les tendances en construisant des indicateurs à deux délais. La stratégie a un grand espace d'optimisation. Les utilisateurs peuvent optimiser en ajustant les paramètres, en gérant les bénéfices, en gérant les positions, etc. pour obtenir de meilleurs résultats de stratégie. Cette stratégie convient aux utilisateurs ayant une certaine expérience de trading.


/*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)


Plus de