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

Autora:ChaoZhang, Data: 2024-01-29 14:31:25
Tags:

img

Resumo

Esta estratégia é baseada nos princípios da cruz de ouro e cruz de morte de médias móveis simples, fazendo decisões de compra e venda com base no cruzamento de médias móveis de 7 dias e 14 dias. Gerar um sinal de compra quando o MA de 7 dias cruza acima do MA de 14 dias de baixo, e um sinal de venda quando o MA de 7 dias cruza abaixo do MA de 14 dias de cima. A estratégia também apresenta funções de stop loss, take profit e trailing stop para bloquear lucros e controlar riscos.

Estratégia lógica

A lógica de negociação principal desta estratégia é baseada nos princípios de cruzamento das médias móveis de 7 dias e 14 dias. A MA de 7 dias reflete tendências de preços de curto prazo, enquanto a MA de 14 dias reflete tendências de médio prazo. Quando a MA de curto prazo cruza acima da MA de médio prazo de baixo, isso sinaliza que a tendência de curto prazo está se fortalecendo, tornando-se um bom momento para ir longo. Por outro lado, quando a MA de curto prazo cruza abaixo da MA de médio prazo de cima, isso sinaliza que a tendência de curto prazo está enfraquecendo, então você deve fechar posições ou ficar curto.

Especificamente, esta estratégia calcula as médias móveis simples de 7 dias e 14 dias usando o indicador SMA. Após cada forma de candelabro, ele compara os valores atuais da linha de 7 dias e da linha de 14 dias. Se a linha de 7 dias cruzar acima da linha de 14 dias, um sinal longo é gerado para ir longo. Se a linha de 7 dias cruzar abaixo da linha de 14 dias, um sinal curto é gerado para ir curto.

Além disso, a estratégia também define funções de stop loss, take profit e trailing stop para bloquear lucros e controlar riscos.

Vantagens

Esta estratégia tem as seguintes vantagens:

  1. Regras simples e claras, fáceis de compreender e aplicar, adequadas para os iniciantes aprenderem.
  2. Os princípios de cruzamento de médias móveis são comprovados e eficazes, com taxas de vitória relativamente elevadas.
  3. Equipado com stop loss, take profit e trailing stop para controlar eficazmente os riscos.
  4. Poucos parâmetros, convenientes para testes e otimização.

Riscos e contramedidas

Há também alguns riscos com esta estratégia:

  1. As médias móveis podem atrasar a reflexão das alterações de tendência, causando potencialmente grandes perdas quando as tendências se invertem.
  2. Os sinais cruzados frequentes durante mercados variados geram mais sinais falsos, o que prejudica a eficácia da estratégia.

Para fazer face a estes riscos, podem ser consideradas as seguintes contramedidas:

  1. Adicione outros indicadores como MACD e KDJ para filtrar sinais cruzados e evitar sinais errados em pontos de virada da tendência.
  2. Ampliar o intervalo de stop loss, encurtar o período de espera para reduzir o impacto de uma única perda.
  3. Otimizar os parâmetros da média móvel com base em condições de mercado variáveis, utilizando períodos mais longos para mercados variados.

Orientações de otimização

Esta estratégia pode ser otimizada nos seguintes aspectos:

  1. Testar diferentes combinações e parâmetros de MA para encontrar a configuração ideal.
  2. Adicionar outros indicadores de filtragem de sinais para melhorar a eficácia da estratégia.
  3. Otimizar o stop loss, tomar parâmetros de lucro para reduzir o drawdown e aumentar a taxa de lucro.
  4. Parâmetros de ajuste baseados em diferentes produtos e sessões de negociação.

Conclusão

Em conclusão, esta estratégia é muito adequada para os iniciantes a aprender. A lógica é simples e fácil de entender e implementar. Também tem uma adaptabilidade relativamente boa ao mercado, com amplo espaço para ajuste de parâmetros e otimização para alcançar lucros constantes. Vale a pena para os iniciantes de negociação quantitativa usá-lo para começar e aprender.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)






Mais.