Stratégie de trading de moyenne mobile dynamique Mckinnon


Date de création: 2023-11-14 15:48:46 Dernière modification: 2023-11-14 15:48:46
Copier: 0 Nombre de clics: 838
1
Suivre
1617
Abonnés

Stratégie de trading de moyenne mobile dynamique Mckinnon

Aperçu

Cette stratégie est une stratégie de trading basée sur l’indicateur de la moyenne non dynamique de McKin. L’indicateur de la moyenne non dynamique de McKin est une version améliorée de l’indicateur de la moyenne mobile qui permet de mieux capturer les changements de tendances du marché.

Principe de stratégie

La stratégie utilise principalement deux courbes moyennes, respectivement la moyenne mobile à 21 jours et la moyenne mobile à 42 jours. Lorsqu’elle traverse la moyenne à long terme au-dessus de la moyenne à court terme, elle est considérée comme un signal d’achat; lorsqu’elle traverse la moyenne à long terme en dessous de la moyenne à court terme, elle est considérée comme un signal de vente.

En outre, la stratégie doit également satisfaire aux conditions suivantes: le prix doit être supérieur à la moyenne non-dynamique de McKinsey, le prix doit dépasser la moyenne à court terme pour générer un signal d’achat. Le signal de vente doit également satisfaire aux conditions suivantes: le prix doit être inférieur à la moyenne non-dynamique de McKinsey, le prix doit dépasser la moyenne à court terme.

Plus précisément, les conditions de déclenchement d’un signal d’achat sont les suivantes: traversée de la moyenne longue sur la moyenne courte, prix de clôture supérieur à la moyenne non-McKinsey, prix de clôture brisé vers le bas de la moyenne courte. Les conditions de déclenchement d’un signal de vente sont: traversée de la moyenne longue sous la moyenne courte, prix de clôture inférieur à la moyenne non-McKinsey, prix de clôture brisé vers le haut de la moyenne courte.

La formule de calcul de la moyenne non dynamique de McKin est la suivante: MDIt = MDIt-1 + (Close - MDIt-1) / Max (((k * Period * (Close / MDIt-1) ^ 4, 1) ◄ dont, MDIt représente la valeur actuelle, MDIt-1 représente la valeur de la veille, Close représente le prix de clôture du jour, k représente la constante de fluctuation, et Period représente le calcul des périodes. La formule permet à la moyenne de suivre en temps réel les variations de prix ◄

Avantages stratégiques

  1. L’indicateur de la moyenne de McKinsey améliore le retard de la moyenne traditionnelle et permet de saisir plus rapidement les changements de tendance des prix.

  2. La combinaison de ces deux lignes est un signal de transaction qui permet de filtrer efficacement les fausses ruptures.

  3. Ajouter des conditions de prix supérieurs/inférieurs à la moyenne de la Ligne de McMinn afin d’éviter des échanges fréquents dans les zones de choc.

  4. L’utilisation d’indices de moyennes mobiles rend la moyenne plus sensible aux variations récentes des prix.

Risque stratégique

  1. Dans les marchés à oscillation horizontale, il est possible de générer de faux signaux, ce qui entraîne des pertes. Les paramètres peuvent être ajustés de manière appropriée, filtrant les signaux.

  2. Une percée de grande ampleur pourrait empêcher la construction d’un entrepôt en temps opportun, et les conditions d’entrée devraient être assouplies de manière appropriée.

  3. Le mauvais réglage des paramètres peut également affecter l’efficacité de la stratégie. Les paramètres doivent être optimisés pour les tests.

  4. Il est important de prendre en compte les risques systémiques liés à la détention à long terme et de définir des points de rupture.

Optimisation de la stratégie

  1. On peut tester des paramètres de ligne moyenne de différentes longueurs pour trouver la combinaison la plus appropriée.

  2. D’autres indicateurs techniques peuvent être ajoutés, tels que KD, MACD, etc., pour optimiser le choix des points d’achat et de vente.

  3. Les valeurs de k peuvent être ajustées en fonction des variétés et des marchés, ce qui permet d’optimiser le calcul de la ligne de non-moyenne de McKinsey.

  4. Il est possible de réaliser un dimensionnement de position dynamique en combinant les indicateurs de volatilité et de contrôler le risque individuel.

  5. Il est possible de définir des points de stop-loss pour contrôler le risque de perte, ou de tester des stop-loss mobiles pour bloquer les bénéfices.

Résumer

Cette stratégie utilise la capacité de suivi rapide de l’indicateur de non-uniformité de McKin, associée à des signaux de négociation de rupture de la moyenne des prix, pour suivre efficacement la tendance et changer de position en temps opportun en cas de revirement de tendance. Comparée à la stratégie traditionnelle de double-uniformité, cette stratégie permet de capturer plus rapidement les changements de tendance des prix.

Code source de la stratégie
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 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/
// © LucasZancheta

//@version=4
strategy(shorttitle="Maguila", title="McGinley Dynamic Indicator", overlay=true)

//Médias móveis
MA1Period=input(21, title="MA1")
MA2Period=input(42, title="MA2")

MA1 = ema(close, MA1Period)
MA2 = ema(close, MA2Period)

aboveAverage = MA1 >= MA2
hunderAverage = MA2 >= MA1

//Período do backtest
startDate = input(title="Start Date", type=input.integer, defval=28, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=5, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2019, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer, defval=28, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=5, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2030, minval=1800, maxval=2100)

//Verifica se o candle está dentro do período do backtest
inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

//Número de periodos da média móvel
period  = input(title="Períodos", type=input.integer, defval=20)
//Constante K (0.6)
k = input(title="Constante K", type=input.float, defval=0.6)
//Preço de fechamento 
closePrice = input(title="Preço", type=input.source, defval=close)

mdi = 0.0

//Fórmula de McGinley
mdi := na(mdi[1]) ? closePrice : mdi[1] + (closePrice - mdi[1]) / max((k * period * pow(closePrice / mdi[1], 4)), 1)

//Regra de coloração 
mdiColor = closePrice > mdi ? color.green : closePrice < mdi ? color.red : color.black

//Inserindo as informações no gráfico    
plot(MA1, color=color.blue, linewidth=2)
plot(MA2, color=color.purple, linewidth=2)

barcolor(mdiColor)

//Estratégia
buySignal = aboveAverage and closePrice > mdi and crossunder(low, MA1) and close > MA1  
buyLoss = closePrice < mdi and close < MA1 and close < MA2

if (inDateRange)
    strategy.entry("Compra", strategy.long, qty=1, when= buySignal)
    strategy.exit("Gain da compra", "Compra", qty=1, profit=20)
    strategy.close("Compra", qty=1, when= buyLoss, comment="Loss na operação")

sellSignal = hunderAverage and closePrice < mdi and crossover(high, MA1) and close < MA1
sellLoss = closePrice > mdi and close > MA1 and close > MA2

if (inDateRange)
    strategy.entry("Venda", strategy.short, qty=1, when= sellSignal)
    strategy.exit("Gain da venda", "Venda", qty=1, profit=20)
    strategy.close("Venda", qty=1, when= sellLoss, comment="Loss na operação")

if (not inDateRange)
    strategy.close_all()