Stratégie de croisement de moyennes mobiles hautes et basses pour capturer les petites tendances


Date de création: 2023-09-28 11:44:04 Dernière modification: 2023-09-28 11:44:04
Copier: 1 Nombre de clics: 780
1
Suivre
1617
Abonnés

Aperçu

Cette stratégie vise à capturer les tendances des devises à court terme, en utilisant les EMA croisées et le RSI comme signaux de trading et en combinant les filtres ADX pour entrer en jeu et en utilisant des arrêts de suivi de tendance pour verrouiller les bénéfices. La stratégie s’applique à toutes les paires de devises, mais est principalement appliquée au graphique horaire des principales paires de devises.

Principe de stratégie

La stratégie est basée sur les indicateurs et conditions suivants:

  • 5 cycles rapide EMA: ligne bleue
  • 10 cycles ralentissant EMA: ligne rouge
  • RSI à 10 cycles appliqué au cours moyen de clôture ((le plus élevé + le plus bas / 2)
  • 14 cycles ADX

Signal d’entrée sur le marché:

  • Coup de tête: lorsque l’EMA rapide traverse l’EMA lente depuis le bas et que la ligne RSI franchit le 50 du bas vers le haut
  • Le vide: lorsque l’EMA rapide traverse l’EMA lente de haut en bas et que la ligne RSI franchit le 50 du haut vers le bas
  • ADX > 25 pour faire plus de blanchiment

Signal de sortie:

  • Stop mobile, suivi de stop à 150 points et stop à 400 points
  • Les signaux ne sont pas clairs.
  • Tous les vendredis soir, les positions sont complètement liquidées.

Cette stratégie utilise des indicateurs de jugement de tendance tels que la croisée des lignes, le sur-achat et la sur-vente du RSI et l’ADX pour former un mécanisme d’entrée plus strict qui permet de suivre les arrêts de perte et de localiser les bénéfices après la génération de tendances, afin de capturer efficacement les tendances à court terme.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. En utilisant une croisée rapide et lente de l’EMA comme base pour juger de la tendance, une croisée rapide vers le haut de la ligne lente indique une tendance haussière et une croisée vers le bas de la ligne lente indique une tendance baissière, permettant d’identifier un changement de tendance.

  2. L’ajout d’indicateurs RSI permet de filtrer certains signaux de fausse rupture. L’excédent de RSI dans les zones de survente est considéré comme un signal de correction à court terme pour éviter d’entrer inutilement dans un marché tremblant.

  3. L’indicateur ADX est utilisé pour juger de la présence d’une véritable tendance, ce qui permet de filtrer efficacement une partie du bruit. Les signaux de négociation ne sont pris en compte que lorsque la valeur ADX est supérieure à 25, garantissant ainsi une tendance claire.

  4. Le stop-loss mobile et le stop-loss mobile permettent de maximiser les profits, le stop-loss garantit la maîtrise des risques, le stop-loss suivi est de 150 points, le stop-loss suivi est de 400 points, et la tendance peut être suivie en permanence.

  5. Chaque vendredi, les positions sont complètement liquidées avant la clôture du marché, afin d’éviter les risques du week-end et de préserver la régularité des opérations.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Les stratégies de croisement de l’EMA sont sujettes à de faux signaux de rupture. La virtualisation peut entraîner des pertes. Il est possible d’ajuster les paramètres de l’EMA de manière appropriée ou d’ajouter des filtres à d’autres indicateurs.

  2. L’indicateur RSI ne peut que juger de l’état de survente, il ne peut pas confirmer le renversement de tendance, la visualisation peut manquer la tendance ou inverser l’entrée. Il peut être envisagé d’utiliser ou d’ajuster les paramètres avec d’autres indicateurs.

  3. L’indicateur ADX détermine uniquement si une tendance existe ou non. Le moment de l’entrée peut ne pas être précis. Il peut être envisagé d’ajouter d’autres critères ou de réduire les conditions de filtrage ADX.

  4. Les paramètres de l’arrêt de perte peuvent être trop fixes pour s’adapter aux changements du marché, permettant de tester différents paramètres ou d’ajuster l’intervention manuelle en temps opportun.

  5. La clôture obligatoire hebdomadaire peut être une occasion manquée d’une bonne tendance, mais peut être envisagée comme une clôture quotidienne ou une clôture conditionnelle ultérieure.

Direction d’optimisation

Cette stratégie peut également être optimisée dans les directions suivantes:

  1. Test de différentes combinaisons de paramètres de la ligne moyenne pour trouver la longueur de la ligne moyenne optimale. La pente de la ligne moyenne peut être déterminée par l’introduction.

  2. Essayez différents paramètres RSI ou une combinaison avec l’indicateur KDJ pour optimiser davantage votre jugement sur les surachats et les surventeurs.

  3. Optimiser les paramètres ADX, trouver les conditions de filtrage ADX les plus appropriées et améliorer la qualité d’entrée.

  4. Utilisation de la combinaison des points fixes de l’arrêt de perte mobile avec le suivi dynamique de l’arrêt d’ATR.

  5. Introduisez une stratégie de redressement de rupture dans la journée, en entrant dans le jeu après la confirmation de la tendance, en tenant compte des graphiques de 5 minutes ou de 15 minutes.

  6. Ajout d’un module de gestion de position basé sur les fluctuations, permettant d’ajuster dynamiquement les positions en fonction des fluctuations du marché.

  7. L’expérimentation de l’apprentissage automatique pour optimiser les paramètres et adapter les stratégies.

Résumer

Cette stratégie est une stratégie de suivi de tendance très simple et directe, utilisant la direction de la tendance, le filtre RSI pour les fausses ruptures, le jugement ADX pour l’existence d’une tendance, le stop loss pour suivre la tendance et capturer des bénéfices à court terme. L’orientation d’optimisation de la stratégie consiste principalement à rechercher une meilleure combinaison d’indicateurs, à réaliser la flexibilité de la décision de tendance et à introduire une gestion de position dynamique.

Code source de la stratégie
/*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)