Stratégie de synchronisation des indicateurs doubles de l' élan quadratique

Auteur:ChaoZhang est là., Date: 2024-02-04 15:53:48 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie fusionne l'indicateur SuperTrend avec la théorie de Elliott Wave pour construire un outil de trading technique robuste.

Principe de stratégie

L'idée de base réside dans son approche à plusieurs niveaux:

  1. Utiliser 4 indicateurs de SuperTrend, chacun avec des longueurs et des multiplicateurs ATR différents, pour juger de la tendance à court et à long terme
  2. Identifier des signaux longs et courts solides grâce à la convergence des indicateurs
  3. Se référer à la méthode de reconnaissance des modèles Elliott Wave pour identifier des comportements de marché similaires afin de confirmer les signaux commerciaux

Ainsi, il utilise plusieurs indicateurs et ajoute la reconnaissance de modèles pour rendre la stratégie plus robuste.

Analyse des avantages

  1. La conception multi-indicateur fournit un jugement complet
  2. L'inspiration de la théorie des ondes augmente la stabilité grâce à la reconnaissance de motifs
  3. L'ajustement de la direction en temps réel s'adapte aux changements du marché
  4. Paramètres configurables adaptés à différents produits et délais

Analyse des risques

  1. Le réglage des paramètres repose sur l'expérience, nécessitant un réglage pour déterminer les combinaisons optimales de paramètres
  2. La conception multi-indicateurs est complexe, ce qui augmente la charge de calcul
  3. Ne peut pas éviter complètement une génération de signal incorrecte

Les paramètres peuvent être optimisés pour déterminer progressivement l'optimum; le cloud computing peut améliorer les performances de calcul; les arrêts de perte peuvent contrôler le risque.

Directions d'optimisation

Des optimisations peuvent être effectuées sous plusieurs aspects:

  1. Ajouter un module d'ajustement de paramètres adaptatif pour ajuster dynamiquement les paramètres en fonction des conditions du marché
  2. Incorporer des modèles d'apprentissage automatique pour aider à juger de la fiabilité du signal
  3. Combiner des indicateurs de sentiment, des événements d'actualité, etc. pour déterminer les régimes du marché
  4. Prise en charge des modèles de paramètres multi-produits pour réduire la charge de travail de test

Cela rendra les paramètres stratégiques plus intelligents, les jugements plus précis et l'application pratique plus pratique.

Résumé

La stratégie prend en compte de manière exhaustive les dimensions de tendance et de modèle, assurant la robustesse du jugement tout en augmentant la flexibilité. Les paramètres multi-indicateurs et les paramètres assurent une pleine applicabilité au marché.


/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Elliott's Quadratic Momentum - Strategy [presentTrading]",shorttitle = "EQM Strategy [presentTrading]", overlay=true )

// Inputs for selecting trading direction
tradingDirection = input.string("Both", "Select Trading Direction", options=["Long", "Short", "Both"])


// SuperTrend Function
supertrend(src, atrLength, multiplier) =>
    atr = ta.atr(atrLength)
    up = hl2 - (multiplier * atr)
    dn = hl2 + (multiplier * atr)
    trend = 1
    trend := nz(trend[1], 1)
    up := src > nz(up[1], 0) and src[1] > nz(up[1], 0) ?   math.max(up, nz(up[1], 0)) : up
    dn := src < nz(dn[1], 0) and src[1] < nz(dn[1], 0) ? math.min(dn, nz(dn[1], 0)) : dn
    trend := src > nz(dn[1], 0) ?  1 : src < nz(up[1], 0)? -1 : nz(trend[1], 1)
    [up, dn, trend]

// Inputs for SuperTrend settings
atrLength1 = input(7, title="ATR Length for SuperTrend 1")
multiplier1 = input(4.0, title="Multiplier for SuperTrend 1")
atrLength2 = input(14, title="ATR Length for SuperTrend 2")
multiplier2 = input(3.618, title="Multiplier for SuperTrend 2")
atrLength3 = input(21, title="ATR Length for SuperTrend 3")
multiplier3 = input(3.5, title="Multiplier for SuperTrend 3")
atrLength4 = input(28, title="ATR Length for SuperTrend 3")
multiplier4 = input(3.382, title="Multiplier for SuperTrend 3")

// Calculate SuperTrend
[up1, dn1, trend1] = supertrend(close, atrLength1, multiplier1)
[up2, dn2, trend2] = supertrend(close, atrLength2, multiplier2)
[up3, dn3, trend3] = supertrend(close, atrLength3, multiplier3)
[up4, dn4, trend4] = supertrend(close, atrLength4, multiplier4)


// Entry Conditions based on SuperTrend and Elliott Wave-like patterns
longCondition = trend1 == 1 and trend2 == 1 and trend3 == 1 and trend4 == 1
shortCondition = trend1 == -1 and trend2 == -1 and trend3 == -1 and trend4 == - 1

// Strategy Entry logic based on selected trading direction
if tradingDirection == "Long" or tradingDirection == "Both"
    if longCondition
        strategy.entry("Long", strategy.long)
        // [Any additional logic for long entry]

if tradingDirection == "Short" or tradingDirection == "Both"
    if shortCondition
        strategy.entry("Short", strategy.short)
        // [Any additional logic for short entry]


// Exit conditions - Define your own exit strategy
// Example: Exit when any SuperTrend flips
if trend1 != trend1[1] or trend2 != trend2[1] or trend3 != trend3[1] or trend4 != trend4[1] 
    strategy.close_all()

// Function to apply gradient effect
gradientColor(baseColor, length, currentBar) =>
    var color res = color.new(baseColor, 100)
    if currentBar <= length
        res := color.new(baseColor, int(100 * currentBar / length))
    res

// Apply gradient effect
color1 = gradientColor(color.blue, atrLength1, bar_index % atrLength1)
color4 = gradientColor(color.blue, atrLength4, bar_index % atrLength3)


// Plot SuperTrend with gradient for upward trend
plot1Up = plot(trend1 == 1 ? up1 : na, color=color1, linewidth=1, title="SuperTrend 1 Up")
plot4Up = plot(trend4 == 1 ? up4 : na, color=color4, linewidth=1, title="SuperTrend 3 Up")

// Plot SuperTrend with gradient for downward trend
plot1Down = plot(trend1 == -1 ? dn1 : na, color=color1, linewidth=1, title="SuperTrend 1 Down")
plot4Down = plot(trend4 == -1 ? dn4 : na, color=color4, linewidth=1, title="SuperTrend 3 Down")

// Filling the area between the first and third SuperTrend lines for upward trend
fill(plot1Up, plot4Up, color=color.new(color.green, 80), title="SuperTrend Upward Band")

// Filling the area between the first and third SuperTrend lines for downward trend
fill(plot1Down, plot4Down, color=color.new(color.red, 80), title="SuperTrend Downward Band")



Plus de