Estratégia de cruzamento de média móvel máxima seguindo tendência


Data de criação: 2023-10-17 13:05:29 última modificação: 2023-10-17 13:05:29
cópia: 1 Cliques: 657
1
focar em
1617
Seguidores

Estratégia de cruzamento de média móvel máxima seguindo tendência

Visão geral

A estratégia utiliza a cruz de duas médias móveis de diferentes períodos para negociar e é uma estratégia de seguimento de tendência. A estratégia utiliza a cruz de médias móveis de curto e longo prazo para comprar e vender sinais e negociar em uma tendência.

Princípio da estratégia

A estratégia usa um SMA de curto prazo de 9 períodos e um LMA de longo prazo de 50 períodos. Um sinal de compra é gerado quando a média móvel de curto prazo atravessa a média móvel de longo prazo de baixo; um sinal de venda é gerado quando a média móvel de curto prazo atravessa a média móvel de longo prazo de cima para baixo.

Ao mesmo tempo, a estratégia também introduziu o indicador RSI para determinar a força da tendência. O sinal de negociação é gerado somente quando o RSI é maior do que o limiar definido (default 55). Isso evita que o RSI produza um sinal errado quando está em um intervalo de oversold.

Estratégia: O capital por transação representa 30% do capital total, com apenas um pedido por vez. Uma taxa de transação de 0,1% é levada em consideração.

Análise de vantagens

  • A estratégia utiliza os sinais de tendência formados pela interseção de médias móveis para monitorar a tendência de forma eficaz.
  • A introdução do indicador RSI para avaliar a força da tendência evita que se produzam sinais errados quando a tendência é bloqueada.
  • Os parâmetros padrão são otimizados para obter ganhos mais estáveis em vários mercados.
  • Gerenciamento racional de fundos para evitar perdas individuais excessivas.

Análise de Riscos

  • Quando o mercado está em uma correção de choque, a estratégia é propensa a produzir sinais errados e não pode ser lucrativa.
  • A estratégia de acompanhamento de tendências não pode gerar lucro sem uma tendência clara.
  • A configuração inadequada dos parâmetros pode causar transações frequentes e aumentar as taxas de transação.
  • A falta de consideração para o impacto de eventos inesperados pode levar a um atraso na parada.

Pode-se reduzir o risco através de parâmetros de otimização, combinação de outros indicadores para determinar a oportunidade de lucro, gestão rigorosa de fundos, configuração de stop loss.

Direção de otimização

  • É possível testar diferentes combinações de médias móveis para encontrar o parâmetro ideal.
  • Outros indicadores podem ser introduzidos para avaliar as tendências, como o MACD.
  • Pode-se configurar o stop loss dinâmico para controlar a perda individual.
  • A proporção de fundos administrados pode ser ajustada de acordo com os diferentes mercados.
  • A força da tendência pode ser avaliada com base no volume de transações.

Resumir

A estratégia capta oportunidades de tendência através de um simples sistema de cruzamento de médias móveis. Os parâmetros padrão são otimizados, os ganhos são estáveis e adequados para negociação automática. A estabilidade e a taxa de retorno da estratégia podem ser aumentadas ainda mais pela introdução de outros indicadores auxiliares, parâmetros de otimização e melhoria do stop loss.

Código-fonte da estratégia
/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © relevantLeader16058

//@version=4
strategy(shorttitle='Maximized Moving Average Crossing ',title='Maximized Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
inlong=input(50, title='MA long period')
inshort=input(9, title='MA short period')

MAlong = sma(close, inlong)
MAshort= sma(close, inshort)

// RSI inputs and calculations
lengthRSI = (14)

RSI = rsi(close, lengthRSI)
RSI_Signal = input(55, title = 'RSI Trigger', minval=1)

//Entry and Exit
bullish = crossover(MAshort, MAlong)
bearish = crossunder(MAshort, MAlong)

strategy.entry(id="long", long = true, when = bullish and RSI > RSI_Signal and window())
strategy.close(id="long", when = bearish and window())

 
plot(MAshort, color=color.purple, linewidth=2)
plot(MAlong, color=color.red, linewidth=2)