
A estratégia de cruzamento de duas médias móveis é uma estratégia de negociação quantitativa comum. A estratégia usa médias móveis de dois períodos diferentes como sinal de compra e venda, comprando quando a média curta atravessa a média longa e vendendo quando a média curta atravessa a média longa. O código da estratégia suporta vários tipos de médias móveis comuns, como média móvel simples (SMA), média móvel indexada (EMA), média móvel binária (DEMA), média móvel tri-indicativa (TEMA), média móvel ponderada (WMA) e média móvel ponderada (VMA), e pode ser configurada de forma flexível para medias médias de curto e médio período.
O princípio central da estratégia é aproveitar as características de tendência e atraso de duas médias móveis de diferentes períodos para capturar a tendência dos preços. Em geral, a média curta é mais sensível às mudanças de preço, enquanto a média longa é relativamente atrasa. Quando os preços estão em uma tendência ascendente, a média curta move-se para cima antes da média longa e, finalmente, atravessa a média longa, formando um sinal de compra “Gold Fork”; por outro lado, quando os preços estão em uma tendência descendente, a média curta move-se para baixo antes da média longa e, finalmente, atravessa a média longa, formando um sinal de venda “Dead Fork”.
Simples e fácil de usar: A estratégia de cruzamento de médias móveis duplas é uma estratégia de negociação quantitativa simples de entender e de implementar, adequada para traders novatos aprenderem e usarem.
Ampla aplicabilidade: A estratégia pode ser aplicada a vários mercados financeiros e indicadores de negociação, como ações, futuros, divisas, criptomoedas, etc., com grande universalidade.
Flexibilidade de parâmetros: O código da estratégia suporta vários tipos de médias móveis e tipos de preços comuns, permitindo que o usuário configure os parâmetros de forma flexível de acordo com suas necessidades, para se adaptar a diferentes ambientes de mercado e estilos de negociação.
Seguimento de tendências: através de sinais de cruzamento de duas linhas médias periódicas diferentes, a estratégia pode capturar melhor as principais tendências de preços, ajudando a evitar a negociação de contrapartida em favor da tendência.
Atraso: A média móvel é, em essência, um indicador de acompanhamento de tendências, existindo um certo atraso, que pode perder os melhores momentos de entrada e saída.
Falha em mercados de turbulência: em mercados de turbulência ou em situações de liquidação horizontal, os preços flutuam muito e os sinais de cruzamento de linha média são frequentes, o que pode levar a estratégias de negociação frequentes, resultando em custos de negociação elevados e perda de capital.
Dificuldade de otimização de parâmetros: a escolha do ciclo de linha média tem grande influência sobre a eficácia da estratégia, mas os parâmetros ótimos geralmente variam de acordo com a situação do mercado. É difícil encontrar um conjunto de parâmetros ótimos que seja acertado em todos os lugares.
Introdução de filtro de tendência: com base no sinal de cruzamento de equilíbrio, pode ser feito um filtro de tendência em combinação com outros indicadores de tendência, como MACD, ADX, etc. O filtro de tendência só é usado quando a tendência é clara, evitando a negociação frequente em mercados de turbulência.
Optimizar o Stop Loss: Incluir uma lógica de stop loss razoável na estratégia, como stop loss móvel, stop loss de volatilidade, etc., para controlar o risco de uma única transação e aumentar a taxa de retorno do risco da estratégia.
Otimização de parâmetros dinâmicos: Para diferentes ambientes de mercado, pode ser feito periodicamente otimização dinâmica de parâmetros, como o ciclo de linha média, para que a estratégia possa se adaptar às mudanças do mercado e melhorar a estabilidade.
Combinação de múltiplos fatores: o sinal de cruzamento de duas médias móveis é combinado com outros fatores de quantificação efetivos (como volume de movimento, valor, volume de transação, etc.) para formar uma estratégia de múltiplos fatores mais estável e eficaz.
A estratégia de cruzamento de duas médias móveis é uma estratégia de rastreamento de tendências simples e clássica para capturar a tendência de preços através de sinais de cruzamento de duas médias periódicas diferentes, adequadas para mercados de tendências. Mas a estratégia também tem problemas de atraso e dificuldade de otimização de parâmetros, que precisam de otimização e melhoria em combinação com outros métodos, como filtragem de tendências, otimização de parâmetros dinâmicos, combinação de múltiplos fatores, etc., para melhorar a aplicabilidade e a 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")