
Il s’agit d’une stratégie de négociation quantitative intégrée qui combine l’analyse de plusieurs périodes et la confirmation d’indicateurs techniques. La stratégie est centrée sur l’évaluation de la force de la tendance du marché par l’intersection des moyennes mobiles de différentes périodes de temps (H1, H4 et le jour) et la confirmation des signaux de négociation en combinaison avec les indicateurs de dynamique équivalents RSI et MACD. Le système est équipé d’un mécanisme de gestion de fonds bien développé, d’un arrêt et d’un arrêt dynamiques basés sur l’ATR et d’une stratégie de sortie combinée qui permet de suivre une partie des gains et des arrêts.
Le principe central de cette stratégie est d’analyser et de confirmer les tendances du marché en plusieurs dimensions:
Système de notation des tendances de plusieurs périodes:
Conditions d’entrée:
Stratégies de gestion des risques et de sortie:
Panneau de commande:
Une tendance multidimensionnelle confirmée: En intégrant les informations de tendance des trois périodes de temps, la stratégie est capable d’identifier plus précisément les tendances fortes et de filtrer efficacement les faux signaux et le bruit. Un poids plus élevé est attribué aux périodes de temps plus longues, ce qui est conforme au principe de priorité des tendances à long terme dans l’analyse technique.
Vérification multiple des signaux d’entréeEn plus de la notation de tendance, la stratégie exige que le prix, le RSI et le MACD remplissent simultanément des conditions spécifiques pour exécuter une transaction. Ce mécanisme de confirmation multiple améliore considérablement la qualité du signal.
Une gestion intelligente des risques:
Visualisation de l’aide à la décisionLe panneau de contrôle affiche de manière intuitive l’état de la tendance et les scores globaux pour chaque période, aidant les traders à juger rapidement de l’état du marché et renforçant la confiance dans la prise de décision.
Très adaptable: La stratégie peut être appliquée à de nombreuses variétés de transactions, particulièrement dans les paires de devises et les métaux précieux qui ont une tendance évidente.
Risque d’inversion de tendanceBien que la stratégie ait amélioré la précision grâce à l’analyse de plusieurs périodes, elle pourrait faire face à des retraits plus importants si les forces du marché se retournent. Il est recommandé de réduire temporairement les positions ou de suspendre les transactions avant la publication de données ou d’événements économiques importants.
Risques liés à la surventeLa solution consiste à ajouter un filtre de marché de choc supplémentaire, tel qu’un indice de la portée réelle des fluctuations (ATR%) ou un indicateur de la volatilité.
Paramètre Sensibilité: la performance stratégique est sensible aux paramètres de la période SMA ((50⁄200) et du multiplicateur ATR. Il est recommandé d’utiliser une rétroaction historique complète pour optimiser les paramètres et d’évaluer régulièrement si les paramètres sont toujours adaptés à l’environnement actuel du marché.
Les limites de la gestion des fonds: Les modèles de risque à taux fixe actuels peuvent ne pas être suffisamment flexibles dans des conditions de marché extrêmes. L’introduction d’une méthode de calcul de la taille de la position ajustée au taux de volatilité peut être envisagée pour réduire automatiquement les positions en période de forte volatilité.
Risque de retard dans l’exécution: Dans les marchés rapides, la confirmation multiple dépendant de la stratégie peut entraîner un retard dans l’entrée et la perte du meilleur prix. Pour atténuer ce risque, il est envisageable d’ajouter des signaux d’entrée plus tôt basés sur les actions des prix.
Amélioration des mécanismes de détection des tendances:
Système de confirmation de signal amélioré:
Optimiser le mécanisme de sortie:
Améliorer la gestion des risques:
Améliorer l’adaptabilité des systèmes:
La stratégie de trading quantifiée est une solution de trading complète et systématique qui génère des signaux de trading de haute qualité en intégrant l’information sur les tendances et la confirmation des indicateurs techniques sur plusieurs périodes de temps. Son plus grand avantage réside dans la reconnaissance de tendances à plusieurs niveaux et le mécanisme de confirmation du signal, qui améliore efficacement la qualité du signal.
Le principal risque de la stratégie réside dans la potentielle rétraction et la sensibilité des paramètres pendant le renversement de tendance. La stratégie peut être encore améliorée par des orientations d’optimisation proposées, telles que l’amélioration des mécanismes de reconnaissance des tendances, le renforcement des systèmes de confirmation des signaux, l’optimisation des mécanismes d’exit, le renforcement de la gestion des risques et l’amélioration de l’adaptabilité du système.
Il s’agit d’un cadre stratégique théorique et pratique pour les traders qui souhaitent saisir des opportunités de tendance à moyen et long terme sur les marchés des devises et des métaux précieux. Après un retour d’expérience suffisant et une optimisation des paramètres appropriés, il peut être utilisé comme composant central de transactions systématisées ou comme système de trading indépendant.
/*backtest
start: 2025-02-20 00:00:00
end: 2025-02-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("JolurocePro v2.0", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// 1. Configuración Principal
capitalMaximo = input(20000, "Capital Maximo (USD)")
lotajeBase = input.float(0.1, "Lotes por 1000 USD", minval=0.01)
paresPermitidos = input.string("XAUUSD,EURUSD,GBPUSD,GBPNZD,EURCAD,USDCAD,USDJPY", "Pares Permitidos")
// 2. Indicadores Multitemporales
[mediaRapidaH1, mediaLentaH1] = request.security(syminfo.tickerid, "60", [ta.sma(close, 50), ta.sma(close, 200)])
[mediaRapidaH4, mediaLentaH4] = request.security(syminfo.tickerid, "240", [ta.sma(close, 50), ta.sma(close, 200)])
[mediaRapidaD, mediaLentaD] = request.security(syminfo.tickerid, "D", [ta.sma(close, 50), ta.sma(close, 200)])
// 3. Calculo del Score
currentScore = (mediaRapidaH1 > mediaLentaH1 ? 1 : -1) + (mediaRapidaH4 > mediaLentaH4 ? 2 : -2) + (mediaRapidaD > mediaLentaD ? 3 : -3)
// 4. Panel de Control
var table panel = table.new(position.top_right, 4, 6, bgcolor=color.new(#2C3E50, 90))
if barstate.islast
// Encabezado
table.cell(panel, 0, 0, " JolurocePro ", width=4, text_color=color.white, text_size=size.large)
// Temporalidad H1
table.cell(panel, 0, 1, "H1", text_color=color.white)
table.cell(panel, 1, 1, str.tostring(math.round(mediaRapidaH1, 4)), text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 1, str.tostring(math.round(mediaLentaH1, 4)), text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 1, mediaRapidaH1 > mediaLentaH1 ? "▲" : "▼", text_color=mediaRapidaH1 > mediaLentaH1 ? #2ECC71 : #E74C3C)
// Temporalidad H4
table.cell(panel, 0, 2, "H4", text_color=color.white)
table.cell(panel, 1, 2, str.tostring(math.round(mediaRapidaH4, 4)), text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 2, str.tostring(math.round(mediaLentaH4, 4)), text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 2, mediaRapidaH4 > mediaLentaH4 ? "▲" : "▼", text_color=mediaRapidaH4 > mediaLentaH4 ? #2ECC71 : #E74C3C)
// Temporalidad Diaria
table.cell(panel, 0, 3, "Diario", text_color=color.white)
table.cell(panel, 1, 3, str.tostring(math.round(mediaRapidaD, 4)), text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
table.cell(panel, 2, 3, str.tostring(math.round(mediaLentaD, 4)), text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
table.cell(panel, 3, 3, mediaRapidaD > mediaLentaD ? "▲" : "▼", text_color=mediaRapidaD > mediaLentaD ? #2ECC71 : #E74C3C)
// Recomendacion
table.cell(panel, 0, 4, "Score Actual:", text_color=color.white)
table.cell(panel, 1, 4, str.tostring(currentScore), text_color=currentScore >= 3 ? #2ECC71 : currentScore <= -3 ? #E74C3C : #F1C40F, width=3)
table.cell(panel, 0, 5, "Senal:", text_color=color.white)
table.cell(panel, 1, 5, currentScore >= 3 ? "COMPRA" : currentScore <= -3 ? "VENTA" : "NEUTRO", text_color=currentScore >= 3 ? #2ECC71 : currentScore <= -3 ? #E74C3C : #F1C40F, width=3)
// 5. Indicadores Tecnicos
atrValor = ta.atr(14)
rsi = ta.rsi(close, 14)
macdLine = ta.ema(close, 12) - ta.ema(close, 26)
macdSignal = ta.ema(macdLine, 9)
// 6. Condiciones de Entrada
condicionLong = currentScore >= 3 and close > mediaRapidaH1 and rsi > 50 and macdLine > macdSignal
condicionShort = currentScore <= -3 and close < mediaRapidaH1 and rsi < 50 and macdLine < macdSignal
// 7. Gestion de Riesgo
posicionSize = math.min((strategy.equity / 1000) * lotajeBase, strategy.equity * 0.02)
slLong = close - (atrValor * 2)
tp1Long = close + (atrValor * 1)
tp2Long = close + (atrValor * 3)
slShort = close + (atrValor * 2)
tp1Short = close - (atrValor * 1)
tp2Short = close - (atrValor * 3)
// 8. Ejecucion de Ordenes
if condicionLong
strategy.entry("Long", strategy.long, qty=posicionSize)
strategy.exit("TP1", "Long", stop=slLong, limit=tp1Long, qty_percent=50)
strategy.exit("TP2", "Long", limit=tp2Long, trail_points=atrValor*10)
if condicionShort
strategy.entry("Short", strategy.short, qty=posicionSize)
strategy.exit("TP1", "Short", stop=slShort, limit=tp1Short, qty_percent=50)
strategy.exit("TP2", "Short", limit=tp2Short, trail_points=atrValor*10)
// 9. Senales Visuales
plotshape(condicionLong, "Compra", shape.triangleup, location.belowbar, color=#2ECC71, size=size.small)
plotshape(condicionShort, "Venta", shape.triangledown, location.abovebar, color=#E74C3C, size=size.small)