Stratégie HLHB pour attirer les tendances

Auteur:ChaoZhang est là., Date: le 28 septembre 2023 à 11h44.04
Les étiquettes:

Résumé

La stratégie vise à capturer les tendances de forex à court terme en utilisant le croisement EMA et le RSI comme signaux de trading, avec le filtre ADX pour entrer dans les trades et le stop loss pour verrouiller les bénéfices.

La logique de la stratégie

La stratégie est basée sur les indicateurs et conditions suivants pour générer des signaux de négociation:

  • EMA rapide à 5 périodes: ligne bleue
  • EMA lente à 10 périodes: ligne rouge
  • Indice de volatilité à 10 périodes appliqué au prix médian (H+L)/2
  • ADX à 14 périodes

Signaux d'entrée:

  • Longue: lorsque l'EMA rapide franchit l'EMA lente depuis le bas et que l'IRS franchit l'EMA lente depuis le bas au-dessus de 50
  • courte: lorsque l'EMA rapide traverse l'EMA lente depuis le haut et que l'IRS traverse l'EMA lente depuis le haut et qu'il traverse l'EMA lente depuis le haut et qu'il traverse l'EMA lente depuis le haut et que l'IRS traverse l'EMA lente depuis le haut et qu'il traverse l'EMA lente depuis le haut et que l'IRS traverse l'EMA lente depuis le haut et que l'IRS traverse l'EMA lente depuis le haut et qu'il traverse l'EMA lente depuis le haut
  • Ne recevoir de signaux que lorsque l'ADX est supérieur à 25

Signaux de sortie:

  • Utilisez le stop-loss de suivi, 150 pips de distance de suivi et 400 pips de profit
  • Fermer la transaction lorsque le nouveau signal apparaît
  • Fermez toutes les transactions avant la fin de la semaine

La stratégie combine le croisement EMA, le RSI suracheté/survendu et la force de la tendance ADX pour créer des règles d'entrée solides.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. Le croisement EMA pour la direction de la tendance: croisement ascendant suggère une tendance haussière tandis que croisement descendant une tendance baissière.

  2. L'ajout du RSI filtre certains faux signaux de rupture. Les zones de survente/surachat indiquent des reculs à court terme et évitent les entrées inutiles sur les marchés de gamme.

  3. ADX pour assurer l'existence d'une véritable tendance.

  4. La distance de trail de 150 pips et l'objectif de profit de 400 pips suivent la tendance.

  5. La clôture de toutes les positions avant la fin de semaine permet d'éviter les risques du week-end et d'assurer la régularité des transactions.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Les systèmes croisés EMA sont sujets à de faux signaux de rupture, ce qui entraîne des pertes.

  2. L'indicateur RSI identifie uniquement les niveaux de surachat/survente, pas les renversements de tendance.

  3. L'ADX juge simplement l'existence de la tendance, le moment d'entrée peut être désactivé.

  4. Les niveaux fixes de stop loss et de take profit peuvent ne pas s'adapter aux changements du marché.

  5. Une clôture hebdomadaire forcée pourrait vous faire rater de bonnes opportunités de tendance.

Directions d'optimisation

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

  1. Testez différentes combinaisons EMA pour trouver des longueurs optimales. Considérez la pente pour une force de tendance supplémentaire.

  2. Essayez différents paramètres du RSI ou combinez-les avec le KDJ pour un meilleur jugement sur le surachat/survente.

  3. Optimiser les paramètres ADX pour un filtrage plus approprié et une meilleure qualité d'entrée.

  4. Combinaison d'essais d'arrêts fixes et de traînée dynamique basée sur ATR.

  5. Les entrées de retraite de rupture intraday après confirmation de la tendance, telles que les délais plus courts, sont ajoutées.

  6. Mettre en place une dimensionnement des positions basé sur la volatilité pour un ajustement dynamique basé sur la volatilité du marché.

  7. Explorez les techniques d'apprentissage automatique pour optimiser automatiquement les paramètres pour l'adaptabilité.

Résumé

En résumé, il s'agit d'une stratégie de suivi de tendance simple, identifiant la direction de la tendance avec le croisement EMA, filtrant avec le RSI, exigeant une tendance avec l'ADX et un arrêt de trail pour le profit.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Hucklekiwi Pip - HLHB Trend-Catcher System", shorttitle="HLHB TCS", overlay=true,
  default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// -----------------------------------------------------------------------------
// HLHB Trend-Catcher System as described on BabyPips.com
//
// Strategy Author: Hucklekiwi Pip 
// Coded By: Backtest Rookies
// -----------------------------------------------------------------------------
//
// Refs:
//   - Original System: https://www.babypips.com/trading/forex-hlhb-system-explained
//   - Updated System: https://www.babypips.com/trading/forex-hlhb-system-20190311
//
//
// Description (From Hucklekiwi Pip)
// 
//   The HLHB System simply aims to catch short-term forex trends.
//   It is patterned after the Amazing Crossover System that Robopip once backtested.
//   In fact, it was one of his highest-scoring mechanical systems in 2014! 
//   The system can be applied to any pair, but since I’m into major pairs, 
//   I’m applying it to the 1-hour charts of EUR/USD and GBP/USD.
// -----------------------------------------------------------------------------
// STRATEGY REQUIREMENTS
// -----------------------------------------------------------------------------
//
// Setup
// -----
//  - EUR/USD 1-hour chart
//  - GBP/USD 1-hour chart
//  - 5 EMA: blue line
//  - 10 EMA: red line
//  - RSI (10) applied to the median price (HL/2)
//  - ADX (14)
//
// Entry
// -----
//  - BUY when the 5 EMA crosses above the 10 EMA from underneath and the RSI 
//    crosses above the 50.0 mark from the bottom.
//  - SELL when the 5 EMA crosses below the 10 EMA from the top and the RSI 
//    crosses below the 50.0 mark from the top.
//  - Make sure that the RSI did cross 50.0 from the top or bottom and not just 
//    ranging tightly around the level.
//  - ADX > 25 for Buy and Sells
//
// Exit
// ----
//  - Use a 50-pip trailing stop and a 200-pip profit target. This increases the 
//    chances of the system riding longer trends.
//  - Close the trade when a new signal materializes.
//  - Close all trades by the end of the week.
// 
// -----------------------------------------------------------------------------

// Strategy Varaibles
// -------------------
ema_fast_len = input(5, title='Fast EMA Length')
ema_slow_len = input(10 , title='Slow EMA Length')
rsi_len = input(10, title='Slow EMA Length')
session_end_hour = input(16, minval=0, maxval=23, title='Weekly Session End (Hour)')
session_end_minute = input(0, minval=0, maxval=59, title='Weekly Session End (Minute)')
// Targets taken from the update post which states 150 & 400 instead of 50 and 200.
profit_target = input(400, title='Profit Target (Pips/Points)')
trailing_stop_dist = input(150, title='Trailing Stop Distance (Pips/Points)')
adx_filt = input(true, title='User ADX Filter')
adx_min = input(25, minval=0, title='Minimum ADX Level')
adx_len = input(14, title="ADX Smoothing")
di_len = input(14, title="DI Length")

// Setup the Indicators
ema_fast = ema(close, ema_fast_len)
ema_slow = ema(close, ema_slow_len)
rsi_ind = rsi(close, rsi_len)

// ADX
adx_dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx_adx(dilen, adxlen) =>
	[plus, minus] = adx_dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[adx_sig, adx_plus, adx_minus] = adx_adx(di_len, adx_len)


// Strategy Logic
ema_long_cross = crossover(ema_fast, ema_slow)
ema_short_cross = crossunder(ema_fast, ema_slow)
rsi_long_cross = crossover(rsi_ind, 50)
rsi_short_cross = crossunder(rsi_ind, 50)
adx_check = adx_filt ? adx_sig >= adx_min : true

longCondition = ema_long_cross and rsi_long_cross and adx_check
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ema_short_cross and rsi_short_cross and adx_check
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("SL/TP", "Long", profit=profit_target,  loss=trailing_stop_dist, trail_points=trailing_stop_dist)  
strategy.exit("SL/TP", "Short", profit=profit_target, loss=trailing_stop_dist, trail_points=trailing_stop_dist)  

// Friday = 6
// If we miss the hour for some reason (due to strange timeframe), then close immediately
// Else if we are on the closing hour, then check to see if we are on or passed the close minute
close_time = dayofweek == 6 ? 
  hour[0] > session_end_hour ? true :
  hour[0] == session_end_hour ?
      minute[0] >= session_end_minute :
  false : false

strategy.close_all(when=close_time)

// Plotting
plot(ema_fast, color=blue, title="Fast EMA")
plot(ema_slow, color=red, title="Slow EMA")

plotshape(rsi_long_cross, style=shape.triangleup, size=size.tiny, location=location.belowbar, color=green, title='RSI Long Cross Marker')
plotshape(rsi_short_cross, style=shape.triangledown, size=size.tiny, location=location.abovebar, color=red, title='RSI Short Cross Marker')

// ADX Filter Highlight
bgcolor(adx_filt and adx_check ? orange : na, transp=90)

Plus de