Stratégie croisée en spirale avec confirmation de moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-02-02 14:50:08 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur de vortex et les lignes de moyenne mobile pour identifier la direction et la force des tendances des prix afin de générer des signaux longs et courts potentiels. Lorsque la ligne positive du vortex (VI +) traverse au-dessus de la ligne négative du vortex (VI-), chaque croisement est mis en évidence sur le graphique. Si le prix de clôture est au-dessus de la ligne moyenne mobile, un signal long est généré. Lorsque VI- traverse au-dessus de VI+, si le prix de clôture est en dessous de la ligne moyenne mobile, un signal court est généré.

La logique de la stratégie

  1. Indicateur de vortex: Il se compose de deux lignes - Vortex Positive (VI+) et Vortex Negative (VI-). Il est utilisé pour identifier la direction et la force des tendances des prix.

  2. Moyenne mobile (MA): utilise une méthode de moyenne mobile choisie (SMA, EMA, SMMA, WMA ou VWMA) pour lisser les données de prix.

  3. Déterminez les signaux longs et courts: lorsque VI+ traverse au-dessus de VI-, chaque croisement est mis en évidence. Si la fermeture est au-dessus de la ligne de lissage, un signal long est généré. Lorsque VI- traverse au-dessus de VI+, si la fermeture est au-dessous de la ligne de lissage, un signal court est généré.

Les avantages

  1. Combine l'identification des tendances et le lissage pour capturer les tendances des marchés en tendance, en évitant de faux signaux dans les marchés agités.

  2. L'indicateur de vortex identifie efficacement la direction et la force de la tendance.

  3. Une logique stratégique simple et claire, facile à comprendre et à mettre en œuvre.

  4. Paramètres personnalisables, adaptés aux différents environnements du marché.

Les risques

  1. Il peut générer de faux signaux et des fléchettes sur les marchés à fourchette ou sans tendance.

  2. Par exemple, une moyenne mobile trop courte a une mauvaise capacité de lissage et une plus longue est en retard dans la reconnaissance des changements de tendance.

  3. Incapable de se prémunir contre les fluctuations extrêmes des prix résultant d'événements majeurs imprévus.

Améliorations

  1. Incorporer d'autres indicateurs comme le volume pour déterminer la fiabilité de la tendance.

  2. Optimiser les paramètres pour équilibrer le suivi des tendances et le filtrage du bruit des moyennes mobiles.

  3. Ajouter le stop loss aux pertes de contrôle.

  4. Utiliser l'apprentissage automatique pour l'optimisation automatisée des paramètres.

  5. Incorporer des modules de gestion des risques pour ajuster la taille des positions.

Conclusion

Cette stratégie combine efficacement l'indicateur de vortex et les moyennes mobiles pour capturer les tendances. Elle identifie la direction de la tendance tout en ayant une certaine capacité de filtrage du bruit pour réduire les faux signaux. La logique est simple et flexible à utiliser, fonctionnant bien sur les marchés en tendance.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Plus de