Estratégia de negociação de reversão de média móvel


Data de criação: 2023-10-25 10:58:02 última modificação: 2023-10-25 10:58:02
cópia: 0 Cliques: 1191
1
focar em
1617
Seguidores

Estratégia de negociação de reversão de média móvel

Visão geral

A estratégia de negociação de regressão de linha média determina os sinais de compra e venda através do cálculo da linha de regressão linear e do cruzamento da linha média do preço da ação. A estratégia combina a análise de regressão de linha média e de regressão linear, levando em conta a tendência do preço da ação e as características estatísticas, para determinar efetivamente o ponto de reversão do preço da ação e realizar baixos e altos.

Princípio da estratégia

A estratégia começa por calcular a linha de regressão linear para o preço de uma ação em n dias e a linha média diária em m dias. A linha de regressão linear reflete a tendência estatística de longo prazo do preço da ação e a linha média reflete o movimento de curto prazo do preço da ação.

Quando a linha de regresso linear atravessa a linha média, indica que o preço da ação aumentou, gerando um sinal de compra. Quando a linha de regresso linear atravessa a linha média, indica que o preço da ação diminuiu, gerando um sinal de venda.

A estratégia, especificamente, julga os sinais de negociação através das seguintes etapas:

  1. Calcule a linha de regressão linear de n dias do preço da ação

  2. Calcule a média móvel simples de m dias da linha de regressão linear LRMA

  3. Índice m-dia de medias móveis para ações

  4. Quando o ema usa o LRMA, gera um sinal de compra longEntry

  5. Quando o ema atravessa o LRMA, gera um sinal de venda de longExit

  6. Ao mesmo tempo, combinando com o julgamento do mercado de ações, só se deve considerar um sinal de compra quando o mercado de ações é um mercado de ações em alta.

  7. Execução de transações de compra e venda com base em sinais

O cruzamento de linhas de média e de regressão permite determinar o momento de compra e venda, filtrar e capturar os pontos de inversão e comprar baixo e vender alto.

Vantagens estratégicas

  • A linha de regressão reflete a tendência de longo prazo, a linha média reflete a tendência de curto prazo, e a combinação de dois indicadores permite determinar com precisão os pontos de compra e venda
  • A linha de regressão é simples e fácil de implementar
  • A análise de mercado permite filtrar os sinais de negociação inadequados
  • Parâmetros personalizáveis para ajustar a estratégia de compra e venda
  • O que é que o Space tem de melhor?

Risco estratégico

  • Quando os preços das ações flutuam fortemente, a linha média e a linha de regressão se cruzam com frequência, o que pode gerar sinais errados
  • O mercado de ações pode ter um julgamento impreciso, mas também pode ter um julgamento equivocado sobre a hora de comprar e vender.
  • Parâmetros mal definidos também podem afetar a eficácia da política
  • Transações frequentes e custos elevados

Ajuste de parâmetros a serem considerados, aumento apropriado dos parâmetros de média e de regressão, redução da frequência de negociação. Configure de forma razoável a estratégia de controle de risco de stop loss. Otimize as regras de julgamento de grandes apostas e aumente a precisão.

Otimização de Estratégia

A estratégia pode ser melhorada em vários aspectos:

  1. Optimização de indicadores de mediana: experimente diferentes tipos de mediana, como médias móveis ponderadas, para encontrar a melhor média para o estoque.

  2. Otimização da linha de regressão: ajuste o ciclo de cálculo da linha de regressão, procurando o parâmetro de ciclo que melhor reflita a tendência de longo prazo da ação.

  3. Optimização de tomada de decisão em grandes apostas: teste diferentes indicadores de tomada de decisão em grandes apostas para encontrar o sinal de tomada de decisão mais adequado para a estratégia.

  4. Optimização de parâmetros: busca a melhor configuração de parâmetros através de diferentes combinações de parâmetros.

  5. Otimização da estratégia de stop loss: teste diferentes métodos de stop loss e defina a melhor lógica de stop loss para controlar o risco.

  6. Otimização de custos de transação: Adapte a frequência de transação para reduzir os custos de transação de acordo com os diferentes modelos de taxas de transação.

Otimizando os pontos acima, pode-se melhorar ainda mais a estabilidade e a taxa de retorno da estratégia.

Resumir

Esta estratégia de negociação de regressão de linha média integra a análise de regressão de linha média e linear, que permite identificar efetivamente os pontos de reversão dos preços das ações e orientar os preços baixos e altos. A estratégia é mais simples e confiável e é adequada para a negociação de ações opcionais de linha média e longa.

Código-fonte da estratégia
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © lazy_capitalist

//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1,    title = "Start Month",  minval = 1, maxval = 12,  group=datesGroup)
startDay   = input.int(defval = 1,    title = "Start Day",    minval = 1, maxval = 31,  group=datesGroup)
startYear  = input.int(defval = 2022, title = "Start Year",   minval = 1970,            group=datesGroup)

averagesGroup = "Averages"
lrLineInput     = input.int(title="Linear Regression Line",   defval=55, minval = 1, group=averagesGroup)
lrMAInput       = input.int(title="Linear Regression MA",     defval=55, minval = 1, group=averagesGroup)
emaInput        = input.int(title="EMA Length",               defval=55, minval = 1, group=averagesGroup)


tradesGroup = "Execute Trades"
executeLongInput    = input.bool(title="Execute Long Trades",       defval=true)
executeShortInput   = input.bool(title="Execute Short Trades",      defval=true)
executeStopLoss     = input.bool(title="Execute Stop Loss",         defval=true)

fourHrSMAExpr       = ta.sma(close, 200)
fourHrMA            = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)

bullish             = close > fourHrMA ? true : false


maxProfitInput              = input.float(  title="Max Profit (%)",         defval=10.0,    minval=0.0)   * 0.01
stopLossPercentageInput     = input.float(  title="Stop Loss (%)",          defval=1.75,    minval=0.0)   * 0.01

start       = timestamp(startYear, startMonth, startDay, 00, 00)            // backtest start  window
window()    => time >= start ? true : false                              // create function "within window of time"
showDate    = input(defval = true, title = "Show Date Range")

lrLine = ta.linreg(close, lrLineInput, 0)
lrMA   = ta.sma(lrLine, lrMAInput)
ema     = ta.ema(close, emaInput)

longEntry   = ema   < lrMA
longExit    = lrMA  < ema

shortEntry  = lrMA  < ema
shortExit   = ema   < lrMA


maxProfitLong   = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort  = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)

stopLossPriceShort  = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong   = strategy.position_avg_price * (1 - stopLossPercentageInput)

if(executeLongInput and bullish)
    strategy.entry( id="long_entry", direction=strategy.long,   when=longEntry and window(),    qty=10,  comment="long_entry")
    strategy.close( id="long_entry", when=longExit,     comment="long_exit")
    // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
    
if(executeShortInput and not bullish)
    strategy.entry( id="short_entry", direction=strategy.short,   when=shortEntry and window(),    qty=10,  comment="short_entry")
    strategy.close( id="short_entry", when=shortExit,     comment="short_exit")
    // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")

if(strategy.position_size > 0 and executeStopLoss)
    strategy.exit(  id="long_entry",        stop=stopLossPriceLong,             comment="exit_long_SL")
    strategy.exit(  id="short_entry",       stop=stopLossPriceShort,            comment="exit_short_SL")
    
// plot(series=lrLine,     color=color.green)
plot(series=lrMA,       color=color.red)
plot(series=ema,        color=color.blue)