O recurso está a ser carregado... Carregamento...

Tendência de dinâmica média móvel múltipla de acordo com a estratégia

Autora:ChaoZhang, Data: 2024-11-12 15:05:09
Tags:SMARSIMA

img

Resumo

Esta estratégia é um sistema de negociação baseado em múltiplas médias móveis e indicadores de impulso. Utiliza principalmente as relações dinâmicas entre as médias móveis simples (SMA) de 20 dias, 50 dias, 150 dias e 200 dias, combinadas com indicadores de volume e RSI para capturar fortes tendências de alta no prazo diário e posições de saída quando as tendências enfraquecem. A estratégia efetivamente filtra falsos sinais e melhora a precisão da negociação através do uso coordenado de vários indicadores técnicos.

Princípios de estratégia

A lógica de base inclui os seguintes componentes-chave:

  1. Sistema de médias móveis: usa médias móveis de 20/50/150/200 dias para construir um sistema de julgamento de tendência, exigindo alinhamento de alta.
  2. Confirmação do Momentum: usa o indicador RSI e sua média móvel para julgar o momentum do preço, exigindo RSI acima de 55 ou RSI SMA acima de 50 e em alta.
  3. Verificação do volume: confirma a validade do sinal através da comparação da média de volume de 20 dias e do volume recente.
  4. Verificação da persistência da tendência: verifica se a MA de 50 dias mantém uma tendência de alta durante pelo menos 25 dias em cada 40 dias de negociação.
  5. Confirmação da posição: o preço deve permanecer acima da MA de 150 dias durante pelo menos 20 dias de negociação.

As condições de compra exigem:

  • O valor da posição em risco deve ser calculado em função do valor da posição em risco.
  • Indicador de RSI que satisfaz condições de ímpeto
  • Sistema de média móvel que mostra alinhamento de alta e crescimento contínuo
  • Preço estável acima da MA de 150 dias

As condições de venda incluem:

  • Preço abaixo da MA de 150 dias
  • Declínio consecutivo do volume elevado
  • O valor da MA de 50 dias é inferior à MA de 150 dias
  • Velas de baixa recentes com aumento de volume

Vantagens da estratégia

  1. A validação cruzada de múltiplos indicadores técnicos reduz os erros de apreciação
  2. Requisitos rigorosos de persistência da tendência filtram as flutuações de curto prazo
  3. A integração da análise de volume melhora a fiabilidade do sinal
  4. Condições claras de stop-loss e de obtenção de lucros para controlar eficazmente o risco
  5. Adequado para captar tendências de médio e longo prazo, reduzindo a frequência de negociação
  6. Lógica estratégica clara, fácil de compreender e executar

Riscos estratégicos

  1. Sistema de média móvel tem atraso, pode perder fases iniciais da tendência
  2. Condições de entrada rígidas podem fazer perder algumas oportunidades comerciais
  3. Pode gerar sinais falsos frequentes em mercados agitados
  4. Retardo na identificação de reversões de mercado
  5. Requer uma maior escala de capital para suportar os levantamentos

Sugestões de controlo de riscos:

  • Estabelecer posições de stop-loss razoáveis
  • Gestão conservadora do dinheiro
  • Considerar a adição de indicadores de confirmação da tendência
  • Ajustar os parâmetros com base no ambiente de mercado

Orientações para a otimização da estratégia

  1. Adicionar Parâmetros Adaptativos
  • Ajustar dinamicamente os períodos de MA com base na volatilidade do mercado
  • Otimizar as definições do limiar do RSI
  1. Melhorar o mecanismo de stop-loss
  • Adicionar paragens
  • Estabelecer paradas baseadas no tempo
  1. Introdução da análise do ambiente de mercado
  • Adicionar indicadores de força da tendência
  • Considerar os indicadores de volatilidade
  1. Otimizar o tamanho do comércio
  • Projeto de gestão de posição dinâmica
  • Ajuste com base na intensidade do sinal

Resumo

Esta é uma estratégia rigorosamente projetada que captura oportunidades de tendência fortes através do uso coordenado de múltiplos indicadores técnicos. As principais vantagens da estratégia estão em seu mecanismo abrangente de confirmação de sinal e sistema rigoroso de controle de risco. Embora haja algum atraso, através de otimização razoável de parâmetros e gerenciamento de riscos, a estratégia pode manter um desempenho estável em operação a longo prazo.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Micho's 150 (1D Time Frame Only)", overlay=true)

// Define the length for the SMAs and RSI
sma20Length = 20
sma50Length = 50
sma150Length = 150
sma200Length = 200
volumeMaLength = 20
rsiLength = 14
rsiSmaLength = 14
smaCheckLength = 40  // Check the last month of trading days (~20 days)
requiredRisingDays = 25  // Require SMA to rise in at least 16 of the past 20 days
sma150AboveSma200CheckDays = 1  // Require SMA150 > SMA200 for the last 10 days

// Calculate the SMAs for price
sma20 = ta.sma(close, sma20Length)
sma50 = ta.sma(close, sma50Length)
sma150 = ta.sma(close, sma150Length)
sma200 = ta.sma(close, sma200Length)

// Calculate the 20-period moving average of volume
volumeMA20 = ta.sma(volume, volumeMaLength)

// Calculate the 14-period RSI
rsi = ta.rsi(close, rsiLength)

// Calculate the 14-period SMA of RSI
rsiSMA = ta.sma(rsi, rsiSmaLength)

// Check if most of the last 5 days are buyer days (close > open)
buyerDays = 0
for i = 0 to 9
    if close[i] > open[i]
        buyerDays := buyerDays + 1

// Check if at least 1 day has volume higher than the 20-period volume MA
highVolumeDays = 0
for i = 0 to 9
    if close[i] > open[i] and volume[i] > volumeMA20
        highVolumeDays := highVolumeDays + 1

// Define the new RSI condition
rsiCondition = (rsi >= 55) or (rsiSMA > 50 and rsi > rsi[1])

// Check if the 50-day SMA has been rising on at least 16 of the last 20 trading days
risingDays = 0
for i = 1 to smaCheckLength
    if sma50[i] > sma50[i + 1]
        risingDays := risingDays + 1

// Check if the SMA has risen on at least 16 of the last 20 days
sma50Rising = risingDays >= requiredRisingDays

// Check if the price has been above the SMA150 for the last 20 trading days
priceAboveSma150 = true
for i = 1 to smaCheckLength
    if close[i] < sma150[i]
        priceAboveSma150 := false

// Check if the SMA150 has been above the SMA200 for the last 10 days
sma150AboveSma200 = true
for i = 1 to sma150AboveSma200CheckDays
    if sma150[i] < sma200[i]
        sma150AboveSma200 := false

// Define the conditions for the 150-day and 200-day SMAs being rising
sma150Rising = sma150 > sma150[1]
sma200Rising = sma200 > sma200[1]

// Check if most of the last 5 days are seller days (close < open)
sellerDays = 0
for i = 0 to 9
    if close[i] < open[i]
        sellerDays := sellerDays + 1

// Check if at least 1 day has seller volume higher than the 20-period volume MA
highSellerVolumeDays = 0
for i = 0 to 9
    if close[i] < open[i] and volume[i] > volumeMA20
        highSellerVolumeDays := highSellerVolumeDays + 1

// Check in the last N days the price below 150
priceBelowSma150 = true
for i = 0 to 0
    if close[i] > sma150[i]
        priceBelowSma150 := false

// Restrict the strategy to 1D time frame
if timeframe.isdaily
    // Buy condition:
    // - Most of the last 5 days are buyer days (buyerDays > 2)
    // - At least 1 of those days has high buyer volume (highVolumeDays >= 1)
    // - RSI SMA (14-period) between 45 and 50 with RSI >= 55, or RSI SMA > 50 and RSI rising
    // - 50-day SMA > 150-day SMA and 150-day SMA > 200-day SMA
    // - 50-day SMA has been rising on at least 16 of the last 20 trading days
    // - The price hasn't been below the 150-day SMA in the last 20 days
    // - 150-day SMA has been above the 200-day SMA for the last 10 days
    // - 150-day and 200-day SMAs are rising
    buyCondition = (close > sma150 and buyerDays > 4 and highVolumeDays >= 1 and rsiCondition  and sma50 > sma150 and sma50Rising and sma150Rising and sma200Rising and priceAboveSma150)

    // Sell condition:
    // - Price crossing below SMA 150
    // - Seller volume (current volume > volume MA 20)
    // - 150-day SMA crosses below 200-day SMA
    // - Most of the last 5 days are seller days (sellerDays > 2) and at least 1 day of higher seller volume (highSellerVolumeDays >= 1)
    sellCondition = (priceBelowSma150 and (sma50 < sma150 or (sellerDays >5 and highSellerVolumeDays >= 5)))

    // Execute buy when all conditions are met
    if (buyCondition)
        strategy.entry("Buy", strategy.long)

    // Execute sell when all conditions are met
    if (sellCondition)
        strategy.close("Buy")


Relacionados

Mais.