O código de estratégia suporta vários tipos comuns de médias móveis, como a média móvel simples (SMA), a média móvel exponencial (EMA), a média móvel exponencial dupla (DEMA), a média móvel exponencial tripla (TEMA), a média móvel ponderada (WMA) e a média móvel ponderada por volume (VWMA). Ele também permite configurações flexíveis para os períodos das médias móveis de curto e longo prazo. Além disso, a estratégia suporta a seleção de diferentes tipos de preços para o cálculo das médias móveis típicas, incluindo média média, média alta, média baixa, média baixa, média fechada e média média.
O princípio básico desta estratégia é capturar as tendências de preços alavancando as características de tendência e o atraso de duas médias móveis com períodos diferentes. Em geral, a média móvel de curto prazo é mais sensível às mudanças de preço, enquanto a média móvel de longo prazo é relativamente atrasada. Quando o preço está em uma tendência de alta, a média móvel de curto prazo se moverá para cima antes da média móvel de longo prazo e eventualmente cruzará acima dela, formando um sinal de compra. Por outro lado, quando o preço está em uma tendência de queda, a média móvel de curto prazo se moverá para baixo antes da média móvel de longo prazo e eventualmente cruzará abaixo dela, formando um sinal de venda. Ao capturar os sinais de cruz de ouro e cruz de morte, esta estratégia pode negociar em linha com a direção principal do preço.
Simples e fácil de usar: A Estratégia de Crossover de Média Móvel Dupla é uma estratégia quantitativa de negociação simples, fácil de entender e de implementar, adequada para traders novatos aprenderem e usarem.
Ampla aplicabilidade: Esta estratégia pode ser aplicada a vários mercados financeiros e instrumentos de negociação, como ações, futuros, forex, criptomoedas, etc., com forte versatilidade.
Parâmetros flexíveis: O código de estratégia suporta vários tipos comuns de médias móveis e tipos de preços, permitindo aos utilizadores definir flexivelmente parâmetros de acordo com as suas necessidades para se adaptarem às diferentes condições de mercado e estilos de negociação.
Seguimento da tendência: Ao utilizar os sinais de cruzamento de duas médias móveis com períodos diferentes, esta estratégia pode capturar efetivamente a tendência principal do preço, o que ajuda a seguir a tendência e evitar a negociação contra-tendência.
Retardo: As médias móveis são, essencialmente, indicadores de tendência e apresentam um certo atraso, o que pode fazer com que os melhores tempos de entrada e saída não sejam alcançados.
Ineficácia nos mercados de intervalo: nos mercados de intervalo ou laterais, as flutuações de preços são elevadas e ocorrem frequentemente sinais de cruzamento da média móvel, o que pode conduzir a negociações frequentes e resultar em elevados custos de negociação e perdas de capital.
Dificuldade na otimização de parâmetros: a seleção de períodos de média móvel tem um impacto significativo no desempenho da estratégia, mas os parâmetros ideais variam frequentemente dependendo das condições do mercado, tornando difícil encontrar combinações ideais de parâmetros universalmente aplicáveis.
Introduzir filtros de tendência: para além dos sinais de cruzamento da média móvel, podem ser incorporados outros indicadores de tendência, como o MACD e o ADX, para a filtragem de tendência, negociando apenas quando a tendência for clara para evitar a negociação frequente em mercados de gama.
Otimizar o take-profit e o stop-loss: Incorporar na estratégia uma lógica razoável de take-profit e stop-loss, como o trailing stop-loss e o volatility-based stop-loss, para controlar o risco de transação única e melhorar a relação risco/recompensa da estratégia.
Optimização de parâmetros dinâmicos: para diferentes ambientes de mercado, realizar periodicamente a otimização dinâmica de parâmetros como períodos de média móvel para permitir que a estratégia se adapte às alterações do mercado e melhore a robustez.
Combinação de vários fatores: combinar os sinais duplos de cruzamento da média móvel com outros fatores quantitativos eficazes (como impulso, valor, volume, etc.) para formar uma estratégia multifatorial mais robusta e eficaz.
A estratégia de cruzamento de média móvel dupla é uma estratégia simples e clássica de acompanhamento de tendências que capta as tendências de preços através dos sinais de cruzamento de duas médias móveis com períodos diferentes, adequados para mercados de tendências. No entanto, esta estratégia também tem problemas como atraso e dificuldade na otimização de parâmetros, exigindo combinações com outros métodos de otimização e melhoria, como filtragem de tendências, otimização de parâmetros dinâmicos, combinação de múltiplos fatores, etc., para melhorar a aplicabilidade e robustez da estratégia.
/*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")