Système de trading hybride à double chaîne avec moyenne mobile de suivi de la dynamique

EMA MA
Date de création: 2024-11-29 17:04:57 Dernière modification: 2024-11-29 17:04:57
Copier: 5 Nombre de clics: 465
1
Suivre
1617
Abonnés

Système de trading hybride à double chaîne avec moyenne mobile de suivi de la dynamique

Aperçu

La stratégie est un système de trading innovant basé sur des moyennes mobiles indicielles (EMA) qui capture les opportunités de marché en mettant en place deux chaînes de trading indépendantes dans des périodes de temps différentes. La stratégie intègre les avantages du suivi de la tendance à long terme et de la négociation de la dynamique à court terme.

Principe de stratégie

La stratégie utilise une conception à deux chaînes, chacune avec sa propre logique d’entrée et de sortie:

La chaîne 1 ((Tendance à long terme) utilise la périodicité de la périphérie et de la ligne solaire:

  • Signal d’entrée: signal de multiplication produit lorsque le prix de clôture traverse l’EMA sur le cycle de la courbe
  • Signal de sortie: un signal de clôture est généré lorsque le prix de clôture traverse l’EMA sous le cycle de la ligne solaire
  • Le cycle EMA par défaut est de 10 et peut être ajusté selon les besoins.

La chaîne 2 (motivation à court terme) utilise des cycles de 12 heures et 9 heures:

  • Signal d’entrée: signal de multiplication produit lorsque le prix de clôture traverse l’EMA sur un cycle de 12 heures
  • Signal de sortie: un signal de clôture est généré lorsque le prix de clôture traverse l’EMA sur un cycle de 9 heures
  • Le cycle EMA par défaut est de 9 et peut être ajusté selon les besoins

Avantages stratégiques

  1. Une analyse multidimensionnelle du marché: une compréhension globale des tendances du marché en combinant différentes périodes de temps
  2. Flexibilité: les deux chaînes peuvent être activées ou désactivées indépendamment pour s’adapter à différents styles de négociation
  3. Contrôle des risques: confirmation à plusieurs cycles de temps, réduction du risque de faux signaux
  4. Les paramètres sont réglables: les cycles EMA et les cycles de temps peuvent être modifiés selon les besoins
  5. Fonctionnalité de rétroaction améliorée: réglage intégré pendant la rétroaction pour faciliter la vérification et l’optimisation de la stratégie

Risque stratégique

  1. Risque de renversement de la tendance: une rétrogradation possible dans un marché très volatil
  2. Risque de configuration de la période: différents marchés peuvent avoir besoin de différentes combinaisons de périodes
  3. Risque d’optimisation des paramètres: une optimisation excessive peut entraîner une suradaptation
  4. Risque de chevauchement des signaux: deux chaînes déclenchées simultanément peuvent augmenter le risque de détention de positions

Suggestions de contrôle des risques :

  • Définissez un stop-loss raisonnable
  • Paramètres ajustés en fonction des caractéristiques du marché
  • Une vérification complète avant la mise en service
  • Contrôler le ratio de fonds propres pour chaque transaction

Orientation de l’optimisation de la stratégie

  1. Optimisation du filtrage du signal :
  • Ajouter un mécanisme de confirmation du volume
  • Introduction de signaux de filtrage pour les indicateurs de volatilité
  • Confirmation de l’augmentation de la force de la tendance
  1. Optimisation du contrôle des risques :
  • Développement d’un mécanisme d’arrêt dynamique
  • Système de gestion des positions
  • Ajout de contrôle de rétractation
  1. Optimisation du cycle:
  • Les combinaisons optimales de périodes de temps
  • Développement d’un mécanisme de cycle de temps adaptatif
  • Ajout de fonctionnalités de reconnaissance de l’état du marché

Résumer

Le système de trading de suivi de la moyenne de la quantité mixte à double chaîne permet une analyse et une maîtrise multidimensionnelles du marché grâce à une combinaison innovante de stratégies de courte et longue durée. La conception du système est flexible et peut être adaptée en fonction des différentes conditions du marché et du style des traders.

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

//@version=5
strategy(title='Dual Chain Strategy', shorttitle='DualChain', overlay=true)

// User inputs for enabling/disabling chains
enableChain1 = input.bool(true, title='Enable Chain 1')
enableChain2 = input.bool(true, title='Enable Chain 2')

// User inputs for the first chain
len1 = input.int(10, minval=1, title='Length Chain 1 EMA', group="Chain 1")
src1 = input(close, title='Source Chain 1', group="Chain 1")
tf1_entry = input.timeframe("W", title='Chain 1 Entry Timeframe', group="Chain 1")
tf1_exit = input.timeframe("D", title='Chain 1 Exit Timeframe', group="Chain 1")

// Weekly timeframe EMA for Chain 1
entryEMA1 = request.security(syminfo.tickerid, tf1_entry, ta.ema(src1, len1))

// Daily timeframe EMA for Chain 1
exitEMA1 = request.security(syminfo.tickerid, tf1_exit, ta.ema(src1, len1))

// User inputs for the second chain
len2 = input.int(9, minval=1, title='Length Chain 2 EMA', group="Chain 2")
src2 = input(close, title='Source Chain 2', group="Chain 2")
tf2_entry = input.timeframe("720", title='Chain 2 Entry Timeframe (12H)', group="Chain 2")  // 12 hours
tf2_exit = input.timeframe("540", title='Chain 2 Exit Timeframe (9H)', group="Chain 2")    // 9 hours

// Entry timeframe EMA for Chain 2
entryEMA2 = request.security(syminfo.tickerid, tf2_entry, ta.ema(src2, len2))

// Exit timeframe EMA for Chain 2
exitEMA2 = request.security(syminfo.tickerid, tf2_exit, ta.ema(src2, len2))

// Plotting Chain 1 EMAs
plot(enableChain1 ? entryEMA1 : na, title='Chain 1 Entry EMA', color=color.new(color.blue, 0))
plot(enableChain1 ? exitEMA1 : na, title='Chain 1 Exit EMA', color=color.new(color.yellow, 0))

// Plotting Chain 2 EMAs
plot(enableChain2 ? entryEMA2 : na, title='Chain 2 Entry EMA', color=color.new(color.green, 0))
plot(enableChain2 ? exitEMA2 : na, title='Chain 2 Exit EMA', color=color.new(color.red, 0))

// Backtesting period
startDate = input(timestamp('2015-07-27'), title="StartDate")
finishDate = input(timestamp('2026-01-01'), title="FinishDate")
time_cond = true

// Entry Condition (Chain 1)
bullishChain1 = enableChain1 and ta.crossover(src1, entryEMA1)
bearishChain1 = enableChain1 and ta.crossunder(src1, entryEMA1)

// Exit Condition (Chain 1)
exitLongChain1 = enableChain1 and ta.crossunder(src1, exitEMA1)
exitShortChain1 = enableChain1 and ta.crossover(src1, exitEMA1)

// Entry Condition (Chain 2)
bullishChain2 = enableChain2 and ta.crossover(src2, entryEMA2)
bearishChain2 = enableChain2 and ta.crossunder(src2, entryEMA2)

// Exit Condition (Chain 2)
exitLongChain2 = enableChain2 and ta.crossunder(src2, exitEMA2)
exitShortChain2 = enableChain2 and ta.crossover(src2, exitEMA2)

// Debugging: Plot entry signals for Chain 1
plotshape(bullishChain1, color=color.new(color.green, 0), style=shape.labelup, text='BUY C1', location=location.belowbar)
plotshape(bearishChain1, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C1', location=location.abovebar)

// Debugging: Plot entry signals for Chain 2
plotshape(bullishChain2, color=color.new(color.green, 0), style=shape.labelup, text='BUY C2', location=location.belowbar)
plotshape(bearishChain2, color=color.new(color.red, 0), style=shape.labeldown, text='SELL C2', location=location.abovebar)

// Trade Execution for Chain 1
if bullishChain1 and time_cond
    strategy.entry('BUY_Chain_1', strategy.long)

if bearishChain1 and time_cond
    strategy.entry('SELL_Chain_1', strategy.short)

// Exit trades based on daily conditions for Chain 1
if exitLongChain1 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_1', when=exitLongChain1)

if exitShortChain1 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_1', when=exitShortChain1)

// Trade Execution for Chain 2
if bullishChain2 and time_cond
    strategy.entry('BUY_Chain_2', strategy.long)

if bearishChain2 and time_cond
    strategy.entry('SELL_Chain_2', strategy.short)

// Exit trades based on daily conditions for Chain 2
if exitLongChain2 and strategy.opentrades > 0
    strategy.close(id='BUY_Chain_2', when=exitLongChain2)

if exitShortChain2 and strategy.opentrades > 0
    strategy.close(id='SELL_Chain_2', when=exitShortChain2)

// Close all positions outside the backtesting period
if not time_cond
    strategy.close_all()