Le code de stratégie prend en charge différents types de moyennes mobiles, tels que la moyenne mobile simple (SMA), la moyenne mobile exponentielle (EMA), la moyenne mobile exponentielle double (DEMA), la moyenne mobile exponentielle triple (TEMA), la moyenne mobile pondérée (WMA) et la moyenne mobile pondérée en volume (VWMA). Il permet également des réglages flexibles pour les périodes des moyennes mobiles à court et à long terme. De plus, la stratégie prend en charge la sélection de différents types de prix pour le calcul des moyennes, y compris le prix moyen typique, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le prix moyen, le
Le principe de base de cette stratégie est de capturer les tendances des prix en tirant parti des caractéristiques de tendance et du décalage de deux moyennes mobiles avec des périodes différentes. En général, la moyenne mobile à court terme est plus sensible aux changements de prix, tandis que la moyenne mobile à long terme est relativement en retard. Lorsque le prix est en hausse, la moyenne mobile à court terme se déplacera vers le haut avant la moyenne mobile à long terme et finira par le dépasser, formant un signal d'achat. Inversement, lorsque le prix est en baisse, la moyenne mobile à court terme se déplacera vers le bas avant la moyenne mobile à long terme et finira par le dépasser, formant un signal de vente.
Simple et facile à utiliser: La stratégie de croisement des moyennes mobiles doubles est une stratégie de trading quantitative simple, facile à comprendre et facile à mettre en œuvre, adaptée aux traders novices.
Large application: Cette stratégie peut être appliquée à divers marchés financiers et instruments de négociation, tels que les actions, les contrats à terme, le forex, les crypto-monnaies, etc., avec une grande polyvalence.
Paramètres flexibles: le code de stratégie prend en charge plusieurs types communs de moyennes mobiles et de types de prix, permettant aux utilisateurs de définir des paramètres de manière flexible en fonction de leurs besoins afin de s'adapter aux différentes conditions du marché et aux différents styles de négociation.
Suivi de tendance: en utilisant les signaux croisés de deux moyennes mobiles avec des périodes différentes, cette stratégie peut capturer efficacement la tendance principale du prix, ce qui aide à suivre la tendance et à éviter les transactions contre-tendance.
Décalage: les moyennes mobiles sont essentiellement des indicateurs de tendance et présentent un certain décalage, qui peut manquer les meilleurs moments d'entrée et de sortie.
Inefficacité sur les marchés à plage: sur les marchés à plage ou latéraux, les fluctuations de prix sont importantes et les signaux croisés de moyenne mobile se produisent fréquemment, ce qui peut entraîner des transactions fréquentes et entraîner des coûts de négociation élevés et des pertes en capital.
Difficulté d'optimisation des paramètres: la sélection des périodes de moyennes mobiles a un impact significatif sur la performance de la stratégie, mais les paramètres optimaux varient souvent en fonction des conditions du marché, ce qui rend difficile la recherche de combinaisons optimales de paramètres universellement applicables.
Introduire des filtres de tendance: en plus des signaux de croisement de la moyenne mobile, d'autres indicateurs de tendance tels que le MACD et l'ADX peuvent être incorporés pour le filtrage de tendance, la négociation n'étant effectuée que lorsque la tendance est claire afin d'éviter une négociation fréquente sur les marchés à fourchette.
Optimiser le profit et le stop-loss: intégrer dans la stratégie une logique raisonnable de profit et de stop-loss, telle que le stop-loss de suivi et le stop-loss basé sur la volatilité, afin de contrôler le risque d'une seule transaction et d'améliorer le ratio risque/rendement de la stratégie.
Optimisation dynamique des paramètres: pour différents environnements de marché, effectuer périodiquement une optimisation dynamique des paramètres tels que les périodes moyennes mobiles afin de permettre à la stratégie de s'adapter aux changements du marché et d'améliorer sa robustesse.
Combinaison de facteurs multiples: combiner les signaux de croisement des moyennes mobiles doubles avec d'autres facteurs quantitatifs efficaces (tels que l'élan, la valeur, le volume, etc.) pour former une stratégie multifactorielle plus robuste et efficace.
La stratégie de croisement des moyennes mobiles doubles est une stratégie simple et classique de suivi des tendances qui capture les tendances des prix à travers les signaux de croisement de deux moyennes mobiles avec des périodes différentes, adaptées aux marchés en tendance. Cependant, cette stratégie comporte également des problèmes tels que le retard et la difficulté d'optimisation des paramètres, nécessitant des combinaisons avec d'autres méthodes d'optimisation et d'amélioration, telles que le filtrage des tendances, l'optimisation des paramètres dynamiques, la combinaison de plusieurs facteurs, etc., pour améliorer l'applicabilité et la robustesse de la stratégie.
/*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")