Stratégie de négociation croisée à double moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-10-07 16h39:01
Les étiquettes:

Résumé

Cette stratégie utilise la croix d'or et la croix de mort des moyennes mobiles doubles pour déterminer la tendance et générer des signaux d'achat et de vente. Lorsque la moyenne mobile rapide traverse au-dessus de la moyenne mobile lente de bas, une croix d'or se produit et un signal d'achat est généré. Lorsque la moyenne mobile rapide traverse au-dessous de la moyenne mobile lente d'en haut, une croix de mort se produit et un signal de vente est généré.

La logique de la stratégie

La stratégie est composée des éléments suivants:

  1. Calculez la valeur de l'oscillateur du prix sous forme de pourcentage. La valeur de l'oscillateur est le pourcentage du prix moins une valeur médiane. La valeur médiane est calculée comme la moyenne des prix les plus élevés et les plus bas de 20 jours.

  2. Calculer la moyenne mobile des valeurs de l'oscillateur, telle que la moyenne mobile de Hull à 20 jours.

  3. Calculer la valeur de retard de la moyenne mobile, par exemple 12 jours de retard.

  4. Déterminer si la moyenne mobile dépasse ou dépasse la moyenne mobile en retard, générant des signaux de croix dorée ou de croix de mort.

  5. Émettre des signaux d'achat et de vente.

Plus précisément, la stratégie calcule d'abord la valeur de l'oscillateur du prix, puis la moyenne mobile de l'oscillateur, puis la valeur en retard de la moyenne mobile.

Lorsque la moyenne mobile de l'oscillateur dépasse la moyenne mobile en retard, un signal de croix dorée est généré pour aller long.

En jugeant le croisement des moyennes mobiles doubles, la direction de négociation est déterminée.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. L'utilisation de moyennes mobiles doubles filtre les faux signaux et améliore la fiabilité du signal.

  2. La combinaison de moyennes mobiles rapides et lentes capte les tendances à moyen terme. La moyenne mobile rapide est sensible aux changements de prix tandis que la moyenne mobile lente a une qualité en retard. La combinaison des deux filtre le bruit à court terme tout en capturant les renversements de tendance à moyen terme.

  3. L'oscillateur met en évidence les points de rupture et génère des signaux de trading plus clairs.

  4. Les algorithmes et paramètres MA personnalisables conviennent à différents environnements de marché.

  5. Une logique de stratégie simple et claire, facile à comprendre et à mettre en œuvre, conviviale pour les débutants.

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Les croisements à double MA ont des signaux retardés, manquant potentiellement les meilleurs points d'entrée.

  2. Prédisposé à des signaux erronés sur les marchés à plage.

  3. L'incapacité de déterminer la force de la tendance risque une sortie anticipée pendant les marchés haussiers.

  4. Trop de paramètres réglables, difficiles à optimiser pour les meilleures combinaisons de paramètres.

  5. Aucun mécanisme de stop loss, incapable de contrôler une seule perte de transaction.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. Optimiser les types et les paramètres d'AM, tester la stabilité sur différents marchés.

  2. Ajoutez des indicateurs déterminant la tendance tels que l'ADX pour éviter les transactions inutiles à partir de signaux erronés.

  3. Ajoutez des mécanismes de stop loss tels que le stop de suivi ou le stop en pourcentage pour contrôler la perte d'une seule transaction.

  4. Incorporer d'autres indicateurs comme le volume, le RSI pour améliorer la qualité du signal.

  5. Utilisez l'apprentissage automatique pour optimiser automatiquement les paramètres pour des paramètres plus robustes.

  6. Considérez une légère assouplissement des conditions d'entrée pour réduire les transactions manquées.

Résumé

Cette stratégie double moyenne mobile capture les points d'inversion de tendance à moyen terme en combinant des moyennes mobiles rapides et lentes, filtrant le bruit du marché à court terme. Elle a l'avantage d'être simple, facile à comprendre et conviviale pour les débutants. Mais elle présente également des inconvénients tels que la génération de mauvais signaux et l'incapacité de déterminer la force de la tendance.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
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/
// © EvoCrypto

//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")

// INPUTS {
na_1                =   input(false,    title="────────────{ Oscillator }──────────────")

// Osc_Src             =   input(close,    title="Oscillator Source                                ")

Example_Length      =   input(20,       title="Example Length", minval=1)
Osc_Src             =   (highest(Example_Length) + lowest(Example_Length)) / 2

// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example

Osc_Format          =   input("Percent",title="Oscillator Format",              options=["Percent", "Currency"]) 

na_2                =   input(false,    title="─────────────{ Average }──────────────")
Average_Type        =   input("Hull",   title="Average Type",                   options=["Hull", "Sma", "Ema", "Wma"])
Length              =   input(50,       title="Average Length", minval=1)
Lagg                =   input(12,       title="Average Lagg",   minval=1)
Display_MA          =   input(true,     title="Display Average")
// }

// SETTINGS {
Osc_Sum             =   
 Osc_Format == "Percent"  ? (close - Osc_Src) / close * 100 :
 Osc_Format == "Currency" ? (close - Osc_Src)               : na

Osc_MA              =   Display_MA == false ? na:
 Average_Type == "Hull"? hma(Osc_Sum, Length)   :
 Average_Type == "Sma" ? sma(Osc_Sum, Length)   :
 Average_Type == "Ema" ? ema(Osc_Sum, Length)   :
 Average_Type == "Wma" ? wma(Osc_Sum, Length)   : na
Osc_MA_1            =   Osc_MA[Lagg]

Cross_Up            =   crossover( Osc_MA, Osc_MA_1)
Cross_Down          =   crossunder(Osc_MA, Osc_MA_1)

Osc_Color           =   Osc_Sum > 0         ? color.new(#bbdefb, 70)  : Osc_Sum < 0          ? color.new(#000000, 70)  : na
Average_Color       =   Osc_MA  > Osc_MA_1  ? color.new(#311b92, 100) : Osc_MA  < Osc_MA_1   ? color.new(#b71c1c, 100) : na
// }

// PLOT {
plot(Osc_Sum,                           title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)

Plot_0              =   plot(Osc_MA,    title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1              =   plot(Osc_MA_1,  title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1,                    title="Average",    color=Average_Color)

plotshape(Cross_Up   ? Osc_MA_1 : na,   title="Cross Up",   color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na,   title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }

// STRATEGY {
if (Cross_Up)
    strategy.entry("Long", strategy.long)
if (Cross_Down)
    strategy.entry("Short", strategy.short)
// }

Plus de