Les ressources ont été chargées... Je charge...

Système de négociation de suivi de la dynamique EMA hybride à double chaîne

Auteur:ChaoZhang est là., Date: 2024-11-29 17h04:57
Les étiquettes:Le taux d'intérêt- Je vous en prie.

img

Résumé

Cette stratégie est un système de négociation innovant basé sur des moyennes mobiles exponentielles (EMA), capturant les opportunités du marché à travers deux chaînes de négociation indépendantes définies sur des délais différents.

Principes de stratégie

La stratégie utilise une conception à double chaîne, chaque chaîne ayant sa propre logique d'entrée et de sortie:

La chaîne 1 (Tendance à long terme) utilise des délais hebdomadaires et quotidiens:

  • Signal d'entrée: généré lorsque le prix de clôture dépasse la EMA sur une période hebdomadaire
  • Signal de sortie: Généré lorsque le prix de clôture dépasse la EMA sur une période quotidienne
  • Période EMA par défaut est de 10, réglable au besoin

La chaîne 2 (Pomentum à court terme) utilise des délais de 12 heures et de 9 heures:

  • Signal d'entrée: généré lorsque le prix de clôture dépasse la EMA sur une période de 12 heures
  • Signal de sortie: généré lorsque le prix de clôture dépasse la EMA sur une période de 9 heures
  • La période EMA par défaut est de 9, réglable au besoin

Les avantages de la stratégie

  1. Analyse de marché multidimensionnelle: capture globale de l'évolution du marché par combinaison de délais
  2. Haute flexibilité: deux chaînes peuvent être activées ou désactivées indépendamment
  3. Contrôle robuste des risques: la confirmation de plusieurs délais réduit les faux signaux
  4. Une forte adaptabilité aux paramètres: les périodes et les délais de l'EMA sont réglables
  5. Fonctionnalité complète de backtesting: paramètres de période de test intégrés pour la vérification de la stratégie

Risques stratégiques

  1. Risque d'inversion de tendance: risque de retard sur les marchés volatils
  2. Risque de configuration des délais: différents marchés peuvent exiger des combinaisons de délais différentes
  3. Risque d'optimisation des paramètres: une sur-optimisation peut entraîner un surajustement
  4. Risque de chevauchement de signaux: les déclencheurs simultanés des deux chaînes peuvent augmenter le risque de position

Suggestions de contrôle des risques:

  • Définir des niveaux de stop-loss raisonnables
  • Ajuster les paramètres en fonction des caractéristiques du marché
  • Effectuer un backtesting approfondi avant de négocier en direct
  • Taille des positions de contrôle par transaction

Directions d'optimisation de la stratégie

  1. Optimisation du filtrage du signal:
  • Ajouter un mécanisme de confirmation de volume
  • Inclure des indicateurs de volatilité
  • Inclure une confirmation de la force de la tendance
  1. Optimisation du contrôle des risques:
  • Développer un mécanisme de stop-loss dynamique
  • Système de gestion de la position de conception
  • Ajouter une fonctionnalité de contrôle du tirage
  1. Optimisation des délais:
  • Recherche combinaisons optimales de délais
  • Développer des mécanismes de calendrier adaptatif
  • Ajouter la fonctionnalité de reconnaissance de l'état du marché

Résumé

Le système de suivi du momentum EMA double chaîne hybride réalise une analyse multidimensionnelle du marché grâce à une combinaison innovante de stratégies de moyennes mobiles à long et à court terme. La conception du système est flexible et peut être ajustée en fonction des différentes conditions du marché et des styles des traders, montrant une forte praticité. Grâce à un contrôle approprié des risques et une optimisation continue, cette stratégie a le potentiel d'obtenir des rendements stables dans le trading réel.


/*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()


Relationnée

Plus de