Cette stratégie combine la double sélection des moyennes mobiles et la reconnaissance des modèles de prix pour former un mécanisme d'entrée plus complet visant à améliorer la qualité du signal.
La stratégie comprend les indicateurs et les règles suivants:
Les 3 SMA jugent de la tendance globale.
2 Les AEM font des jugements directifs détaillés.
SAR aide avec la tendance et l'élan.
Les modèles de prix identifient les formations comme des signaux d'entrée.
Le profit maximal est pris en compte dans la comptabilisation des bénéfices.
La limite de la période de détention évite une expansion des pertes.
La combinaison de multiples indicateurs forme des signaux d'entrée et des mécanismes de sortie solides, équilibrant la rentabilité et le contrôle des risques pour une négociation stable.
Comparativement aux stratégies à indicateur unique, les avantages sont les suivants:
Plusieurs indicateurs améliorent la précision.
La reconnaissance des modèles de prix améliore le calendrier d'entrée.
Le profit prend le contrôle et réalise le profit.
La période de détention évite une expansion des pertes.
Les SMA suivent la tendance.
Les EMA améliorent la sensibilité.
SAR vérifie la fiabilité de l'évasion.
Dans l'ensemble, un bon rapport risque-récompense, robustesse.
Les paramètres de réglage peuvent atteindre un alpha stable.
Malgré les avantages, il convient de noter les risques suivants:
Des indicateurs multiples augmentent la complexité.
Le réglage des paramètres est un risque d'optimisation.
L'efficacité de la reconnaissance des modèles de prix est incertaine.
Les risques de profit manquent à la poursuite de la tendance.
La période de détention limite le potentiel de profit.
La stabilité et la rentabilité doivent être compromises.
La robustesse des marchés multiples nécessite une validation.
La surveillance continue de la robustesse du modèle est critique.
Sur la base de l'analyse, les améliorations peuvent inclure:
Ajustez les paramètres pour la stabilité du retour.
Incorporer l'apprentissage automatique pour le calendrier d'entrée.
Optimisez le stop loss dynamique et profitez.
Évaluer l'impact de la période de détention sur la courbe des actions.
Tester la robustesse sur différents marchés.
Ajouter des contrôles de robustesse des paramètres pour éviter le surajustement.
Développer une gestion quantitative des risques.
Valider en permanence l'efficacité de la stratégie.
En résumé, l'approche multi-indicateur forme un système de trading relativement robuste. Mais l'optimisation et la validation continues sont essentielles pour toute stratégie, en mettant l'accent sur la robustesse des paramètres pour l'adaptabilité du marché.
//@version=3 strategy("Free Strategy #08 (Combo of #01 and #02) (ES / SPY)", overlay=true) // Inputs Quantity = input(1, minval=1, title="Quantity") SmaPeriod01 = input(3, minval=1, title="SMA Period 01") SmaPeriod02 = input(8, minval=1, title="SMA Period 02") SmaPeriod03 = input(10, minval=1, title="SMA Period 03") EmaPeriod01 = input(5, minval=1, title="EMA Period 01") EmaPeriod02 = input(3, minval=1, title="EMA Period 02") MaxProfitCloses = input(5, minval=1, title="Max Profit Close") MaxBars = input(10, minval=1, title="Max Total Bars") // Misc Variables src = close BarsSinceEntry = 0 MaxProfitCount = 0 Sma01 = sma(close, SmaPeriod01) Sma02 = sma(close, SmaPeriod02) Sma03 = sma(close, SmaPeriod03) Ema01 = ema(close, EmaPeriod01) Ema02 = ema(close, EmaPeriod02) OHLC = (open + high + low + close) / 4.0 // Conditions Cond00 = strategy.position_size == 0 Cond01 = close < Sma03 Cond02 = close <= Sma01 Cond03 = close[1] > Sma01[1] Cond04 = open > Ema01 Cond05 = Sma02 < Sma02[1] Entry01 = Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05 Cond06 = close < Ema02 Cond07 = open > OHLC Cond08 = volume <= volume[1] Cond09 = (close < min(open[1], close[1]) or close > max(open[1], close[1])) Entry02 = Cond00 and Cond06 and Cond07 and Cond08 and Cond09 // Update Exit Variables BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1 MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1]) // Entries strategy.entry(id="L1", long=true, qty=Quantity, when=(Entry01 or Entry02)) // Exits strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))