Les ressources ont été chargées... Je charge...

Stratégie d'inversion de tendance

Auteur:ChaoZhang est là., Date: 2024-01-16 14:44:35 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie d'inversion de tendance de suivi est une stratégie de trading de tendance à court terme basée sur des contrats à terme NQ de 15 minutes.

La logique de la stratégie

La stratégie repose principalement sur les principes suivants:

  1. Utilisez une EMA à 8 périodes comme filtre de tendance principal, avec des signaux longs au-dessus de l'EMA et des signaux courts au-dessous de l'EMA.

  2. Identifiez des modèles spécifiques d'inversion de chandelier comme signaux d'entrée, y compris des bougies vertes longues suivies de bougies rouges courtes pour les signaux longs, et des bougies rouges longues suivies de bougies vertes courtes pour les signaux courts.

  3. Les points d'entrée sont fixés près du haut/bas de la bougie d'inversion, avec des niveaux de stop loss au haut/bas de la bougie d'inversion elle-même, ce qui permet des ratios risque/rendement efficaces.

  4. Valider les signaux d'inversion en utilisant des règles de relation de chandelier, par exemple le prix d'ouverture de la bougie rouge est au-dessus du corps de la dernière bougie verte, le corps engloutit complètement, etc. pour filtrer le bruit.

  5. La stratégie ne doit être utilisée que pendant des heures de négociation spécifiques, en évitant les périodes de volatilité autour des principales renouvellements de contrats, etc., afin d'éviter des pertes inutiles dues à une évolution anormale des prix.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Une logique de signal simple et efficace, facile à comprendre et à exécuter.

  2. Basé sur la tendance et l'inversion, évitant les coups de fouet des marchés haussiers et baissiers.

  3. Une bonne maîtrise des risques avec un placement raisonnable de stop loss pour préserver le capital.

  4. Les faibles besoins en données s'adaptent à diverses plateformes et outils.

  5. Une fréquence de négociation élevée convient à un style de négociation actif à court terme.

Risques et solutions

Il y a quelques risques à noter:

  1. Des possibilités d'inversion insuffisantes et des signaux limités.

  2. Il y a parfois de fausses fuites, il y a plus de filtres pour la logique combinée.

  3. Volatilité dans les séances de nuit et non-principales.

  4. La flexibilité d'optimisation est limitée. Considérez le machine learning pour un meilleur réglage des paramètres.

Des possibilités d'amélioration

Il y a de la place pour l'optimisation:

  1. Testez des périodes EMA plus longues pour améliorer la définition de la tendance.

  2. Ajouter des filtres d'indice d'actions comme filtres de tendance supplémentaires.

  3. Utilisez des techniques d'apprentissage automatique pour régler automatiquement l'entrée et arrêter les niveaux de perte.

  4. Mettre en place un dimensionnement des positions ajusté à la volatilité et des arrêts dynamiques.

  5. Explorer l'arbitrage entre actifs pour diversifier les risques systémiques liés à un seul actif.

Conclusion

La stratégie d'inversion de tendance de suivi offre un cadre de stratégie à court terme très pratique qui est simple à mettre en œuvre avec des paramètres limités et un bon contrôle du risque personnel.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bdrex95

//@version=5

// Rob Reversal Strategy - Official
// Using Rob Reversal Indicator: Original
// Description
// This indicator is based on the strategy created by Trader Rob on the NQ 15m chart.
// 
// Timeframe for trading is 8:30am-1:15pm Central.
// 
// Above the EMA line, look for a long position. You will have a short candle, then a long candle that opens below the short candle. It will have a lower high and a lower low. Once the long candle closes, your entry will be 1 tick above the wick (green line) and stop loss will be at the bottom of the bottom wick (red line).
// 
// Below the EMA line, look for a short position. You will have a long candle, then a short candle that opens above the long candle. It will have a higher high and a higher low. Once the short candle closes, your entry will be 1 tick below the wick (green line) and stop loss will be at the top of the top wick (red line).
//

strategy("Trader Rob Reversal Strategy NQ 15min", shorttitle="Official Rob Rev Strat", overlay=true)


//--- Session Input ---
sess = input(defval = "0930-1415", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = na(t) ? false : true

flat_time = input(defval = "1515-1558", title="Close All Open Trades")
ft = time(timeframe.period, flat_time)
flatOpen = na(ft) ? false : true


// Calculate start/end date and time condition
startDate = input(timestamp('2018-12-24T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW")
finishDate = input(timestamp('2029-02-26T00:00:00'),group = "ALL STRATEGY SETTINGS BELOW")
time_cond = true


emaColor = input.color(color.orange, title="EMA Color")
emaLength = input.int(8, title="EMA Length")


emaInd = ta.ema(close, emaLength)


rr = input(1.0,"Enter RR",group = "TP/SL CONDITION INPUTS HERE")


sellShapeInput = input.string("Arrow", title="Sell Entry Shape", options=["Arrow", "Triangle"])
buyShapeInput = input.string("Arrow", title="Buy Entry Shape", options=["Arrow", "Triangle"])


sellShapeOption = switch sellShapeInput
    "Arrow" => shape.arrowdown
    "Triangle" => shape.triangledown
   
buyShapeOption = switch buyShapeInput
    "Arrow" => shape.arrowup
    "Triangle" => shape.triangleup


O = open
C = close
H = high
L = low


sellEntry = (C[1] > O[1]) and (C < O) and (H[1] < H) and (C < H[1]) and (C > L[1]) and (L > L[1]) and (C < emaInd) and sessionOpen and time_cond
buyEntry = (C[1] < O[1]) and (C > O) and (H[1] > H) and (L[1] > L) and (C < H[1]) and (C > L[1]) and (C > emaInd) and sessionOpen and time_cond


sellEntry_index = ta.valuewhen(sellEntry,bar_index,0)
sellEntry_hi = ta.valuewhen(sellEntry,high,0)
sellEntry_low = ta.valuewhen(sellEntry,low,0)
buyEntry_index = ta.valuewhen(buyEntry,bar_index,0)
buyEntry_hi = ta.valuewhen(buyEntry,high,0)
buyEntry_lo = ta.valuewhen(buyEntry,low,0)


plotshape(buyEntry, color = color.green, location = location.belowbar, style = buyShapeOption, size = size.small)
plotshape(sellEntry, color = color.red, location = location.abovebar, style = sellShapeOption, size = size.small)
plot(emaInd, color=emaColor)


// Risk Management
entry_price_long = (buyEntry_hi + syminfo.mintick)
entry_price_short = (sellEntry_low - syminfo.mintick)
long_sl_price = (buyEntry_lo-syminfo.mintick)
short_sl_price = (sellEntry_hi + syminfo.mintick)
long_tp_price = ((entry_price_long - long_sl_price)*rr) + entry_price_long
short_tp_price = entry_price_short - ((short_sl_price - entry_price_short)*rr)


long_sl_ticks = (entry_price_long - long_sl_price) / syminfo.mintick
short_sl_ticks = (short_sl_price - entry_price_short) / syminfo.mintick


long_tp_ticks = (long_tp_price - entry_price_long) / syminfo.mintick
short_tp_ticks = (entry_price_short - short_tp_price) / syminfo.mintick


// Positions
if (buyEntry)
    strategy.entry("Long", strategy.long,stop = H + syminfo.mintick)
if strategy.position_size > 0
    strategy.exit("Long Ex","Long", loss = long_sl_ticks, profit = long_tp_ticks, comment_loss = "SL Long", comment_profit = "TP Long")


if (sellEntry)
    strategy.entry("Short", strategy.short,stop = L - syminfo.mintick)
if strategy.position_size < 0
    strategy.exit("Short Ex","Short",loss = short_sl_ticks, profit = short_tp_ticks, comment_loss = "SL Short", comment_profit = "TP Short")


// Cancel order if close beyond ema
if (C < emaInd)
    strategy.cancel("Long")


if (C > emaInd)
    strategy.cancel("Short")


// Go flat at close (for futures funded account)
if strategy.position_size > 0 and flatOpen
    strategy.close_all(comment = "EOD Flat")
if strategy.position_size < 0 and flatOpen
    strategy.close_all(comment = "EOD Flat")
 
//END

Plus de