Stratégie de croisement de moyennes mobiles dynamiques


Date de création: 2024-02-05 10:23:10 Dernière modification: 2024-02-05 10:23:10
Copier: 0 Nombre de clics: 536
1
Suivre
1617
Abonnés

Stratégie de croisement de moyennes mobiles dynamiques

Aperçu

La Dynamic Moving Average Crossover Combo Strategy est une stratégie de trading composite qui intègre plusieurs indicateurs techniques et une détection des phases du marché. Elle calcule dynamiquement la volatilité du marché en fonction de la distance et de la volatilité des prix par rapport aux moyennes mobiles à long terme.

Principe de stratégie

Calculer la volatilité du marché

L’indicateur ATR est utilisé pour calculer la volatilité quotidienne du marché au cours des 14 derniers jours. La volatilité moyenne est ensuite obtenue en filtrant la moyenne mobile simple sur 100 jours.

Les étapes du marché

Si la distance est supérieure à 1,5 fois la volatilité moyenne, et que la direction est claire, on considère qu’il s’agit d’une tendance. Si la volatilité actuelle est supérieure à 1,5 fois la volatilité moyenne, on considère qu’il s’agit d’une situation de choc.

EMA/SMA croisée

Les EMA rapides ont une période de 10 jours et les SMA lentes une période de 30 jours. Lorsque les EMA rapides traversent les SMA lentes, un signal d’achat est produit.

MACD

Calculer les paramètres 12, 26 et 9 du MACD. Un signal d’achat est généré lorsque la colonne MACD devient positive.

Bollinger Bands

Si la largeur de la chaîne est inférieure à sa propre SMA de 20 jours, elle est considérée comme une période de correction.

Règles d’entrée

Période d’oscillation: croisement rapide ou correction de la colonne MACD et clôture dans les bandes de Bollinger.

Période de tendance: croisement de ligne rapide ou MACD de la colonne de changement d’entrée régulière

La période d’élaboration: les lignes se croisent lentement et les prix de clôture sont plus élevés que ceux des bandes inférieures.

Règles de jeu

Si les conditions suivantes sont remplies, la position est nulle: le MACD est négatif sur deux lignes K consécutives et le cours de clôture est en baisse pendant deux jours consécutifs.

La période de choc: lorsque le StockRSI entre dans la zone de survente.

La période de rassemblement: lorsque les prix sont inférieurs à ceux de la Upper Band.

Analyse des avantages

Il s’agit d’une stratégie de négociation intelligente qui combine des jugements sur les conditions du marché et présente les avantages suivants:

  1. La mise en place d’un système d’exploitation qui réduit l’intervention subjective

  2. Il s’agit d’une stratégie d’adaptation plus adaptée aux conditions du marché.

  3. Une combinaison de plusieurs indicateurs pour une plus grande certitude des signaux.

  4. Les bandes de Bollinger sont automatiquement stoppées pour réduire le risque.

  5. Les conditions de l’opération ont été définies et les signaux ont été filtrés.

  6. Le but de ce jeu est de faire de l’argent en utilisant des machines à sous et des machines à sous.

Analyse des risques

Les principaux risques sont les suivants:

  1. Une mauvaise configuration des paramètres peut entraîner l’échec de la stratégie.

  2. Les événements imprévus ont provoqué une défaillance du modèle. Il est recommandé de mettre à jour la logique stratégique en temps opportun.

  3. Il est recommandé de choisir un courtier à frais de transaction bas.

  4. La combinaison de plusieurs indicateurs augmente la complexité de la stratégie. Il est recommandé de choisir un indicateur central.

Direction d’optimisation

L’optimisation peut se poursuivre à partir des dimensions suivantes:

  1. Optimiser les critères de jugement du marché et améliorer la précision.

  2. Ajout d’un module d’apprentissage automatique permettant l’adaptation des paramètres.

  3. Le traitement de texte est utilisé pour évaluer le risque d’un événement majeur.

  4. Le retour sur investissement multi-marchés pour trouver la meilleure combinaison.

  5. La stratégie de trailing stop a été ajoutée.

Résumer

La stratégie de la combinaison croisée des moyennes mobiles est une stratégie de trading intelligente multi-indicateurs. Elle est capable de combiner des paramètres d’ajustement de l’environnement du marché pour réaliser des transactions systématisées conditionnelles.

Code source de la stratégie
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)

// Volatility
volatility = ta.atr(14)
avg_volatility_sma = ta.sma(volatility, 100)
avg_volatility = na(avg_volatility_sma) ? 0 : avg_volatility_sma

// Market Phase detection
long_term_ma = ta.sma(close, 200)
distance_from_long_term_ma = close - long_term_ma
var bool isTrending = math.abs(distance_from_long_term_ma) > 1.5 * avg_volatility and not na(distance_from_long_term_ma)
var bool isVolatile = volatility > 1.5 * avg_volatility

// EMA/MA Crossover
fast_length = 10
slow_length = 30
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)

// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal or (macdHistogram > 0)

// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
isConsolidating = (upper - lower) < ta.sma(upper - lower, 20)

// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 75
oversold = 25

var float potential_SL = na
var float potential_TP = na
var bool buy_condition = na
var bool sell_condition = na

// Buy and Sell Control Variables
var bool hasBought = false
var bool hasSold = true

// Previous values tracking
prev_macdHistogram = macdHistogram[1]
prev_close = close[1]

// Modify sell_condition with the new criteria
if isVolatile
    buy_condition := not hasBought and crossover_signal or macd_signal and (close > lower) and (close < upper)
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

if isTrending
    buy_condition := not hasBought and crossover_signal or macd_signal
    sell_condition := hasBought and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - volatility
    potential_TP := close + 2 * volatility

if isConsolidating
    buy_condition := not hasBought and crossover_signal and (close > lower)
    sell_condition := hasBought and (close < upper) and (macdHistogram < 0 and prev_macdHistogram < 0) and (close < prev_close and prev_close < close[2])
    potential_SL := close - 0.5 * volatility
    potential_TP := close + volatility

// Update the hasBought and hasSold flags
if buy_condition
    hasBought := true
    hasSold := false

if sell_condition
    hasBought := false
    hasSold := true

// Strategy Entry and Exit
if buy_condition
    strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
    strategy.exit("SELL_TS", from_entry="BUY", trail_price=close, trail_offset=close * 0.05)

if sell_condition
    strategy.close("BUY")
    
// Visualization
plotshape(series=buy_condition, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)

plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)

bgcolor(isVolatile ? color.new(color.purple, 90) : isTrending ? color.new(color.blue, 90) : isConsolidating ? color.new(color.orange, 90) : na)