L'idée principale de cette stratégie est de combiner l'indicateur Momentum avec l'indicateur SuperTrend pour tirer parti des deux indicateurs pour des entrées et sorties plus précises.
Plus précisément, l'indicateur de Momentum est utilisé pour juger de l'accélération ou de la décélération des mouvements de prix et des changements de tendance.
Partie de l'indicateur de vitesse
Calculer la valeur du momentum de N jours du prix et calculer le momentum de 1 jour de la valeur du momentum. Lorsque le momentum de N jours est > 0 et le momentum de 1 jour > 0, il s'agit d'un signal long; lorsque le momentum de N jours est < 0 et le momentum de 1 jour < 0, il s'agit d'un signal court.
Partie de l'indicateur SuperTrend
Calculez la valeur ATR du prix et dessinez la ligne de canal ascendante et la ligne de canal descendante basée sur ATR. Lorsque le prix traverse le canal ascendant depuis le bas, c'est un signal long, et lorsque le prix traverse le canal descendant depuis le haut, c'est un signal court.
Logique d'entrée
Prenez l'opération AND du signal long de l'indicateur de momentum et du signal long de la SuperTrend pour générer le signal d'entrée long final lorsque les deux se produisent en même temps; Prenez l'opération AND du signal court de l'indicateur de momentum et du signal court de la SuperTrend pour générer le signal d'entrée court final lorsque les deux se produisent en même temps.
Utiliser des indicateurs de dynamique pour déterminer l'accélération ou la décélération des mouvements de prix afin de capturer les points d'inversion de tendance.
Utiliser les indicateurs SuperTrend pour déterminer les canaux de percée des prix afin de capturer les points de percée.
La vérification mutuelle de deux types d'indicateurs peut réduire les faux signaux et améliorer l'exactitude des données.
La combinaison de la logique de sortie des deux indicateurs permet de suivre la tendance de sortie pour éviter une sortie prématurée.
Un paramètre incorrect de l'indicateur de dynamique N-day peut manquer les points d'inversion de tendance.
Un mauvais réglage des paramètres de SuperTrend peut entraîner un dessin erroné des canaux et de faux signaux.
La vérification mutuelle des deux indicateurs peut manquer certaines opportunités.
La combinaison des paramètres doit être ajustée pour trouver la paire de paramètres optimale afin de maximiser le potentiel de la stratégie.
Solution correspondante:
Utilisez l'analyse de marche pour trouver les paramètres optimaux.
Ajouter le module d'optimisation des paramètres pour l'optimisation des paramètres en temps réel.
Ajustez la logique de combinaison des deux indicateurs et examinez-les de façon exhaustive.
Ajout d'un module d'optimisation adaptatif des paramètres pour un ajustement en temps réel en fonction des conditions du marché
Ajouter un modèle d'apprentissage automatique pour aider à juger de l'exactitude des signaux d'indicateur
Élargir les indicateurs pour former un ensemble d'indicateurs et utiliser le mécanisme de vote pour générer des signaux d'entrée
Utiliser des modèles d'apprentissage en profondeur au lieu d'indicateurs traditionnels pour des jugements basés sur les données sur les délais d'entrée et de sortie
Cette stratégie combine les atouts des indicateurs Momentum et SuperTrend grâce à une double vérification pour améliorer l'exactitude des entrées et utilise des indicateurs pour juger du moment des sorties. Par rapport à l'utilisation unique d'indicateurs, elle peut réduire les faux signaux et atteindre des taux de gain plus élevés.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum + SuperTrend Strategy", overlay=true) // Momentum Strategy length = input(12) price = close momentum(seria, length) => mom = seria - seria[length] mom mom0 = momentum(price, length) mom1 = momentum(mom0, 1) momLongCondition = mom0 > 0 and mom1 > 0 momShortCondition = mom0 < 0 and mom1 < 0 // SuperTrend Strategy Periods = input(10) Multiplier = input(3.0) changeATR = input(true) src = input(hl2) atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend buySignal = trend == 1 and trend[1] == -1 sellSignal = trend == -1 and trend[1] == 1 // Combined Entry Conditions longCondition = momLongCondition and buySignal shortCondition = momShortCondition and sellSignal // Strategy Entries if (longCondition) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (shortCondition) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") // Plot SuperTrend on the chart upPlot = plot(trend == 1 ? up : na, title="SuperTrend Up", color=color.green, linewidth=2) dnPlot = plot(trend == -1 ? dn : na, title="SuperTrend Down", color=color.red, linewidth=2) // Highlight the SuperTrend region fill(upPlot, dnPlot, color = trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Highlight") // Plot SuperTrend Buy/Sell signals on the chart plotshape(series=buySignal, title="SuperTrend Buy Signal", color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="SuperTrend Sell Signal", color=color.red, style=shape.triangledown, size=size.small) // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © naveen1119