Estratégia de reversão da média móvel de momentum


Data de criação: 2024-02-19 14:59:10 última modificação: 2024-02-19 14:59:10
cópia: 4 Cliques: 622
1
focar em
1617
Seguidores

Estratégia de reversão da média móvel de momentum

Visão geral

A ideia central desta estratégia é combinar o indicador RSI com a média móvel, procurar oportunidades de reversão do preço das ações, alcançar um preço de compra e venda baixo. Quando o indicador RSI mostra que as ações estão em um estado de sobrevenda e o preço passa abaixo da média móvel de curto prazo, como sinal de compra. Depois de definir um stop loss e um stop, aguarde a reversão do preço.

Princípio da estratégia

A estratégia usa principalmente o indicador RSI para determinar a tendência de preços de sobrevenda e sobrevenda, e a bifurcação da média móvel. Concretamente, o indicador RSI pode determinar efetivamente se uma ação está sobrevendida ou sobrecomprada. Quando o RSI está abaixo de 30, está dentro do alcance da sobrevenda.

Portanto, quando o indicador RSI está abaixo de 40, ou seja, perto de um estado de sobrevenda, e o preço atravessa a média móvel abaixo do dia 9, pode ser considerado um momento em que o preço da ação pode reverter.

Análise de vantagens

A estratégia combina o indicador RSI com a média móvel para determinar com eficácia o momento de comprar. Em comparação com o julgamento de um único excesso de venda, aumenta a determinação condicional da média móvel, evitando a oscilação da zona de venda. A configuração do stop loss é flexível e pode variar de pessoa para pessoa.

Análise de Riscos

Esta estratégia depende de configurações de parâmetros, como o limite de julgamento RSI, a janela de tempo da média móvel, etc. Diferentes parâmetros podem trazer resultados diferentes. E em determinadas condições de mercado, ainda é possível um stop loss.

Além disso, as taxas de transação também podem ter um certo impacto sobre os lucros. Em um futuro próximo, você pode considerar adicionar o volume de transação ou o módulo de gerenciamento de fundos para otimização.

Direção de otimização

Pode-se considerar o ajuste dinâmico dos parâmetros da média móvel, escolhendo diferentes parâmetros em diferentes períodos; ou a introdução de outros critérios de indicadores, como KDJ, MACD, etc., formando um julgamento integrado de várias condições.

Também é possível criar módulos de volume de transação ou de gerenciamento de capital para controlar a taxa de ocupação de capital de uma única transação e reduzir o impacto de uma única perda.

Resumir

A estratégia em geral, usando o indicador RSI e a média móvel para determinar a hora de comprar, pode determinar efetivamente a reversão do preço, comprar quando está superado e obter uma maior taxa de sucesso. Combinando o stop loss para bloquear os lucros, pode obter um melhor efeito.

Código-fonte da estratégia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 30m
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/
// © Coinrule

//@version=4
strategy(shorttitle='MARSI',title='Moving Average', overlay=true, initial_capital=1000,  default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//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()  => true

//MA inputs and calculations
inshort=input(9, title='MA short period')
MAshort= sma(close, inshort)

// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)

//Entry 
strategy.entry(id="long", long = true, when = MAshort<close and RSI<40 and window())

//Exit
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=1.5) * 0.01
longTakePerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=3) * 0.01
longSL  = strategy.position_avg_price * (1 - longLossPerc)
longTP  = strategy.position_avg_price * (1 + longTakePerc)
if (strategy.position_size > 0 and window())
    strategy.exit(id="TP/SL", stop=longSL, limit=longTP)


bgcolor(color = showDate and window() ? color.gray : na, transp = 90)  
plot(MAshort, color=color.purple, linewidth=4)