
La stratégie utilise deux moyennes mobiles de différentes périodes comme signaux d’achat et de vente. Elle prend en charge plusieurs types de moyennes mobiles courantes, telles que la moyenne mobile simple (SMA), la moyenne mobile indicielle (EMA), la moyenne mobile binaire (DEMA), la moyenne mobile tri-indicielle (TEMA), la moyenne mobile pondérée (WMA) et la moyenne mobile pondérée (VMA), et offre une flexibilité dans la définition des moyennes courtes et moyennes longues.
Le principe central de cette stratégie est d’utiliser les caractéristiques de tendance et le retard de deux moyennes mobiles de différentes périodes pour capturer la tendance des prix. En général, les moyennes courtes sont plus sensibles aux changements de prix, tandis que les moyennes longues sont relativement retardées. Lorsque les prix sont en tendance à la hausse, les moyennes courtes se déplacent d’abord vers le haut avant les moyennes longues et finissent par traverser les moyennes longues, formant un signal d’achat “Golden Fork”; inversement, lorsque les prix sont en tendance à la baisse, les moyennes courtes se déplacent d’abord vers le bas avant les moyennes longues et finissent par traverser les moyennes longues, formant un signal de vente “Dead Fork”.
Simple et facile à utiliser: La stratégie de croisement des moyennes mobiles est une stratégie de trading quantitatif simple à comprendre et facile à mettre en œuvre, adaptée à l’apprentissage et à l’utilisation des traders novices.
Large portée: La stratégie peut être appliquée à une large gamme de marchés financiers et de titres tels que les actions, les futures, les devises et les crypto-monnaies.
La flexibilité des paramètres: le code de la stratégie prend en charge plusieurs types de moyennes mobiles et de types de prix courants, permettant aux utilisateurs de définir des paramètres flexibles en fonction de leurs besoins pour s’adapter à différents environnements de marché et styles de négociation.
Suivi des tendances: en croisant les signaux de deux moyennes périodiques différentes, la stratégie permet de mieux saisir les principales tendances des prix, ce qui permet de suivre la tendance et d’éviter les échanges négatifs.
Le retard: La moyenne mobile est essentiellement un indicateur de suivi de la tendance, avec un certain retard, qui peut manquer les meilleurs moments d’entrée et de sortie.
Insuffisance dans les marchés en crise: dans les marchés en crise ou en cours de liquidation horizontale, les fluctuations de prix sont importantes et les signaux de croisement de la moyenne sont fréquents, ce qui peut entraîner des transactions fréquentes de la stratégie, entraînant des coûts de transaction élevés et des pertes de fonds.
Difficulté d’optimisation des paramètres: le choix d’un cycle linéaire moyen a une grande influence sur l’efficacité de la stratégie, mais les paramètres optimaux varient souvent en fonction des conditions du marché. Il est difficile de trouver une combinaison optimale de paramètres qui convient à tous.
Introduction de filtres de tendance: sur la base des signaux de croisement de la même ligne, il est possible de filtrer la tendance en combinaison avec d’autres indicateurs de tendance tels que MACD, ADX, etc. Il est possible de négocier uniquement lorsque la tendance est claire et d’éviter de négocier fréquemment sur des marchés en crise.
Optimiser le stop loss: ajouter une logique de stop loss raisonnable dans la stratégie, comme le stop mobile, le stop sur la volatilité, etc. pour contrôler le risque de transaction unique et améliorer le rapport risque/bénéfice de la stratégie.
Optimisation des paramètres dynamiques: pour différents environnements de marché, il est possible d’optimiser périodiquement les paramètres tels que la période de la moyenne, afin que la stratégie puisse s’adapter aux changements du marché et améliorer la stabilité.
Combinaison multifactorielle: le signal de croisement de la moyenne mobile double est combiné avec d’autres facteurs quantifiés efficaces (tels que la dynamique, la valeur, la quantité de transaction, etc.) pour former une stratégie multifactorielle plus stable et plus efficace.
La stratégie de croisement de deux moyennes mobiles est une stratégie de suivi de tendance simple et classique qui capture les tendances des prix par le biais de signaux croisés de deux moyennes périodiques différentes, adaptée aux marchés tendancieux. Cependant, la stratégie présente également des problèmes d’arriération et de difficulté d’optimisation des paramètres.
/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SustainableInvestment
//@version=5
strategy("Moving average strategy (이동평균선 전략)", overlay=true)
// === INPUTS ===
basisType = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"])
shortLen = input.int(defval = 1, title = "Short MA Period", minval = 1)
longLen = input.int(defval = 20, title = "Long MA Period", minval = 1)
price = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"])
// === BASE FUNCTIONS ===
// 가격 종류 설정
priceType(price) =>
Typical = (high+low+close)/3
Center = (high+low) / 2
price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close
// 이동평균선 종류 설정
variant(type, src, len) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential
v5 = ta.wma(src, len) // Weighted
v6 = ta.vwma(src, len) // Volume Weighted
type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1
longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (longCondition)
strategy.entry("Long Entry", strategy.long)
exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen))
if (exitCondition)
strategy.close("Long Entry","Long Exit")