Stratégie de suivi des tendances combinées multi-indicateurs adaptative multi-marché

CMF DPO ROC WMA ATR
Date de création: 2024-12-12 15:23:28 Dernière modification: 2024-12-12 15:23:28
Copier: 0 Nombre de clics: 79
1
Suivre
1166
Abonnés

Stratégie de suivi des tendances combinées multi-indicateurs adaptative multi-marché

Aperçu

Il s’agit d’une stratégie de suivi de tendance auto-adaptative basée sur une combinaison de plusieurs indicateurs techniques, qui permet d’ajuster automatiquement les paramètres en fonction des différentes caractéristiques du marché. La stratégie utilise l’indicateur de flux de fonds (CMF), l’indicateur de volatilité des prix (DPO) et l’indicateur de Coppock (Coppock) pour capturer les tendances du marché et s’adapter aux caractéristiques des différents marchés en ajustant le facteur de volatilité.

Principe de stratégie

La logique centrale de la stratégie est de confirmer la direction de la tendance et le moment de la transaction à l’aide d’une combinaison de plusieurs indicateurs.

  1. Utilisez l’indicateur CMF pour mesurer les flux de capitaux et le sentiment du marché
  2. L’indicateur DPO élimine les effets de la tendance à long terme et se concentre sur les fluctuations de prix à court et moyen terme.
  3. L’indicateur de Coppock amélioré capte les virages de tendance
  4. Un signal de transaction est généré lorsque les trois indicateurs sont confirmés.
  5. Calcul dynamique des positions de stop loss par ATR
  6. Adaptation automatique des paramètres de levier et de volatilité en fonction des caractéristiques des différents marchés (actions, devises, futures)

Avantages stratégiques

  1. La vérification croisée multi-indicateurs permet de filtrer efficacement les faux signaux
  2. Adaptable et adaptée à différents environnements de marché
  3. Système de gestion des positions adapté à la dynamique des fluctuations
  4. Disposant d’un mécanisme d’arrêt des pertes et de contrôle des risques tout en protégeant les bénéfices
  5. Le soutien à la négociation simultanée de plusieurs variétés pour la diversification des risques
  6. Une logique de transaction claire, facile à maintenir et à optimiser

Risque stratégique

  1. Le système multicanal risque d’être en retard et de manquer des opportunités dans un mouvement rapide.
  2. L’optimisation excessive des paramètres peut entraîner une suradaptation
  3. Des signaux erronés peuvent être générés pendant les périodes de changement de marché.
  4. Le réglage trop serré peut entraîner des pannes fréquentes
  5. Les coûts de transaction affectent les gains stratégiques Il est recommandé de gérer les risques de la manière suivante:
  • Vérifiez régulièrement la validité des paramètres
  • Surveillance en temps réel des positions
  • Contrôle raisonnable du levier
  • Limite de retrait maximale

Orientation de l’optimisation de la stratégie

  1. Introduction d’une évaluation de l’état de la volatilité du marché, avec une combinaison de paramètres différents dans différents environnements de volatilité
  2. Ajout d’indicateurs de reconnaissance des caractéristiques du marché et amélioration de l’adaptabilité des stratégies
  3. Optimisation des mécanismes de freinage des arrêts de perte, l’utilisation de l’arrêt mobile peut être envisagée
  4. Développer un système d’optimisation automatique des paramètres et les ajuster régulièrement
  5. Ajout d’un module d’analyse des coûts de transaction
  6. Adhésion au mécanisme d’alerte précoce

Résumer

La stratégie est un système de suivi de tendance plus complet, qui maîtrise bien les risques tout en garantissant les gains grâce à une combinaison de plusieurs indicateurs et à un mécanisme de contrôle des risques. La stratégie est évolutive et offre une grande marge d’optimisation. Il est recommandé de commencer à petite échelle dans les transactions physiques et d’augmenter progressivement la taille des transactions, tout en surveillant en permanence la performance de la stratégie et en ajustant les paramètres en temps opportun.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Market Adaptive Trading Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Input parameters
i_market_type = input.string("Crypto", "Market Type", options=["Forex", "Crypto", "Futures"])
i_risk_percent = input.float(1, "Risk Per Trade (%)", minval=0.1, maxval=100, step=0.1)
i_volatility_adjustment = input.float(1.0, "Volatility Adjustment", minval=0.1, maxval=5.0, step=0.1)
i_max_position_size = input.float(5.0, "Max Position Size (%)", minval=1.0, maxval=100.0, step=1.0)
i_max_open_trades = input.int(3, "Max Open Trades", minval=1, maxval=10)

// Indicator Parameters
i_cmf_length = input.int(20, "CMF Length", minval=1)
i_dpo_length = input.int(21, "DPO Length", minval=1)
i_coppock_short = input.int(11, "Coppock Short ROC", minval=1)
i_coppock_long = input.int(14, "Coppock Long ROC", minval=1)
i_coppock_wma = input.int(10, "Coppock WMA", minval=1)
i_atr_length = input.int(14, "ATR Length", minval=1)

// Market-specific Adjustments
volatility_factor = i_market_type == "Forex" ? 0.1 : i_market_type == "Futures" ? 1.5 : 1.0
volatility_factor *= i_volatility_adjustment
leverage = i_market_type == "Forex" ? 100.0 : i_market_type == "Futures" ? 20.0 : 3.0

// Calculate Indicators
mf_multiplier = ((close - low) - (high - close)) / (high - low)
mf_volume = mf_multiplier * volume
cmf = ta.sma(mf_volume, i_cmf_length) / ta.sma(volume, i_cmf_length)

dpo_offset = math.floor(i_dpo_length / 2) + 1
dpo = close - ta.sma(close, i_dpo_length)[dpo_offset]

roc1 = ta.roc(close, i_coppock_short)
roc2 = ta.roc(close, i_coppock_long)
coppock = ta.wma(roc1 + roc2, i_coppock_wma)

atr = ta.atr(i_atr_length)

// Define Entry Conditions
long_condition = cmf > 0 and dpo > 0 and coppock > 0 and ta.crossover(coppock, 0)
short_condition = cmf < 0 and dpo < 0 and coppock < 0 and ta.crossunder(coppock, 0)

// Calculate Position Size
account_size = strategy.equity
risk_amount = math.min(account_size * (i_risk_percent / 100), account_size * (i_max_position_size / 100))
position_size = (risk_amount / (atr * volatility_factor)) * leverage

// Execute Trades
if (long_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close - (atr * 2 * volatility_factor)
    tp_price = close + (atr * 3 * volatility_factor)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Long Exit", "Long", stop=sl_price, limit=tp_price)

if (short_condition and strategy.opentrades < i_max_open_trades)
    sl_price = close + (atr * 2 * volatility_factor)
    tp_price = close - (atr * 3 * volatility_factor)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Short Exit", "Short", stop=sl_price, limit=tp_price)

// Plot Indicators
plot(cmf, color=color.blue, title="CMF")
plot(dpo, color=color.green, title="DPO")
plot(coppock, color=color.red, title="Coppock")
hline(0, "Zero Line", color=color.gray)

// Alerts
alertcondition(long_condition, title="Long Entry", message="Potential Long Entry Signal")
alertcondition(short_condition, title="Short Entry", message="Potential Short Entry Signal")

// // Performance reporting
// if barstate.islastconfirmedhistory
//     label.new(bar_index, high, text="Strategy Performance:\nTotal Trades: " + str.tostring(strategy.closedtrades) + 
//               "\nWin Rate: " + str.tostring(strategy.wintrades / strategy.closedtrades * 100, "#.##") + "%" +
//               "\nProfit Factor: " + str.tostring(strategy.grossprofit / strategy.grossloss, "#.##"))