Tendência do canal de média móvel tripla seguindo a estratégia

Autora:ChaoZhang, Data: 2023-11-06 16:58:57
Tags:

img

Resumo

Esta estratégia usa uma combinação tripla de médias móveis para determinar a direção da tendência com base na ordem das médias móveis, de modo a alcançar a tendência seguinte.

Princípio da estratégia

A estratégia utiliza três médias móveis com períodos diferentes, incluindo uma média móvel rápida, uma média móvel média e uma média móvel lenta.

Condições de entrada:

  1. Long: Quando a MA rápida > a MA média > a MA lenta, considera-se que o mercado está em tendência de alta, vá long.
  2. Curto: quando o MA lento < MA médio < MA rápido, considera-se que o mercado está numa tendência de baixa, vá curto.

Condições de saída:

  1. Saída MA: posição de fechamento quando a ordem das três médias móveis se inverte.
  2. Saída do TP/SL: Pontos fixos de take profit e stop loss, tais como 12% para o TP e 1% para o SL, saída quando o preço atingir o TP ou o SL.

A estratégia é simples e direta, utilizando três médias móveis para determinar a direção da tendência do mercado para a tendência após a negociação, adequada para mercados com forte tendência.

Análise das vantagens

  • Use três médias móveis para determinar a tendência e filtrar o ruído do mercado.
  • As médias móveis de diferentes períodos podem determinar com mais precisão os pontos de inversão da tendência.
  • Combinar indicadores de média móvel e TP/SL fixo para gerir o risco de capital.
  • A lógica da estratégia é simples e intuitiva, fácil de entender e implementar.
  • Os parâmetros do período de MA podem ser facilmente otimizados para se adaptarem às condições de mercado de diferentes ciclos.

Riscos e melhorias

  • Nos mercados de ciclo longo, as médias móveis podem apresentar mais sinais falsos, levando a perdas desnecessárias.
  • Considerar a adição de outros indicadores ou filtros para melhorar a rentabilidade.
  • Otimizar a combinação dos parâmetros da média móvel do período para se adaptar a condições de mercado mais amplas.
  • Combinar com indicadores de força da tendência para evitar picos de compra e baixos de venda.
  • Adicionar paradas automáticas para evitar a ampliação das perdas.

Conclusão

A estratégia de seguimento de tendência da média móvel tripla tem uma lógica clara e fácil de entender, usando médias móveis para determinar a direção da tendência para a tendência simples após a negociação. A vantagem é que é fácil de implementar e ajustar os parâmetros do período de MA pode se adaptar às condições de mercado de diferentes ciclos. No entanto, há também certos riscos de sinais falsos, que podem ser melhorados adicionando outros indicadores ou condições para reduzir perdas desnecessárias e melhorar a lucratividade da estratégia.


/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
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/
// © Jompatan

//@version=5
strategy('Strategy Triple Moving Average', overlay=true, initial_capital = 1000, commission_value=0.04, max_labels_count=200)

//INPUTS
mov_ave = input.string(defval="EMA", title='Moving Average type:', options= ["EMA", "SMA"])

period_1 = input.int(9,  title='Period 1', inline="1", group= "============== Moving Average Inputs ==============")
period_2 = input.int(21, title='Period 2', inline="2", group= "============== Moving Average Inputs ==============")
period_3 = input.int(50, title='Period 3', inline="3", group= "============== Moving Average Inputs ==============")

source_1 = input.source(close, title='Source 1', inline="1", group= "============== Moving Average Inputs ==============")
source_2 = input.source(close, title='Source 2', inline="2", group= "============== Moving Average Inputs ==============")
source_3 = input.source(close, title='Source 3', inline="3", group= "============== Moving Average Inputs ==============")


//EXIT CONDITIONS
exit_ma   = input.bool(true, title= "Exit by Moving average condition", group="================ EXIT CONDITIONS ================")
exit_TPSL = input.bool(false, title= "Exit by Take Profit and StopLoss", group="================ EXIT CONDITIONS ================")
TP        = input.int(12, title='Take Profit', step=1, group="================ EXIT CONDITIONS ================")
SL        = input.int(1, title='Stop Loss', step=1, group="================ EXIT CONDITIONS ================")
plot_TPSL = input.bool(false, title='Show TP/SL lines', group="================ EXIT CONDITIONS ================")


//Date filters
desde = input(defval= timestamp("01 Jan 2023 00:00 -3000"), title="From", inline="12", group= "============= DATE FILTERS =============")
hasta = input(defval= timestamp("01 Oct 2099 00:00 -3000"), title="To  ", inline="13", group= "============= DATE FILTERS =============")
enRango = true

//COMMENTS
//entry_long_comment  = input.string(defval=" ", title="Entry Long comment: ", inline="14", group="============= COMMENTS =============")
//exit_long_comment   = input.string(defval=" ", title="Exit Long comment:  ", inline="15", group="============= COMMENTS =============")
//entry_short_comment = input.string(defval=" ", title="Entry Short comment:", inline="16", group="============= COMMENTS =============")
//exit_short_comment  = input.string(defval=" ", title="Exit Short comment: ", inline="17", group="============= COMMENTS =============")

//============================================================

//Selecting Moving average type
ma1 = mov_ave == "EMA" ? ta.ema(source_1, period_1) : ta.sma(source_1, period_1)
ma2 = mov_ave == "EMA" ? ta.ema(source_2, period_2) : ta.sma(source_2, period_2)
ma3 = mov_ave == "EMA" ? ta.ema(source_3, period_3) : ta.sma(source_3, period_3)

//============================================================
//Entry Long condition: Grouped Moving average from: (ma fast > ma middle > ma slow)
long_condition = (ma1 > ma2) and (ma2 > ma3)

//Entry Short condition: Grouped Moving average from: (ma fast < ma middle < ma slow)
short_condition = (ma1 < ma2) and (ma2 < ma3)

//============================================================

cantidad       = strategy.equity / close
comprado_long  = strategy.position_size > 0
comprado_short = strategy.position_size < 0

var long_profit_price  = 0.0
var long_stop_price    = 0.0
var short_profit_price = 0.0
var short_stop_price   = 0.0

//============================================================

//ENTRY LONG
if not comprado_long and not comprado_short and long_condition and not long_condition[1] and enRango
    strategy.entry('Long', strategy.long, qty=cantidad, comment= "Entry Long")
    if exit_TPSL
        long_profit_price := close * (1 + TP/100)
        long_stop_price   := close * (1 - SL/100)
    else
        long_profit_price := na
        long_stop_price   := na
//============================================================


//ENTRY SHORT
if not comprado_long and not comprado_short and short_condition and not short_condition[1] and enRango
    strategy.entry('Short', strategy.short, qty=cantidad, comment= "Entry Short")
    if exit_TPSL
        short_profit_price := close * (1 - TP/100)
        short_stop_price   := close * (1 + SL/100)
    else
        short_profit_price := na
        short_stop_price   := na
//============================================================


//EXIT LONG 
if comprado_long and exit_ma and long_condition[1] and not long_condition
    strategy.close('Long', comment='Exit-Long(MA)')
if comprado_long and exit_TPSL
    strategy.exit('Long', limit=long_profit_price, stop=long_stop_price, comment='Exit-Long(TP/SL)')
//============================================================


//EXIT SHORT 
if comprado_short and exit_ma and short_condition[1] and not short_condition
    strategy.close('Short', comment='Exit-Short(MA)')
if comprado_short and exit_TPSL
    strategy.exit('Short', limit=short_profit_price, stop=short_stop_price, comment='Exit-Short(TP/SL)')
//============================================================



//PLOTS
plot(ma1, linewidth=2, color=color.rgb(255, 255, 255))
plot(ma2, linewidth=2, color=color.rgb(144, 255, 252))
plot(ma3, linewidth=2, color=color.rgb(49, 167, 255))
//Plot Take Profit line
plot(plot_TPSL ? comprado_long  ? long_profit_price : comprado_short ? short_profit_price : na : na, color=color.new(color.lime, 30), style= plot.style_linebr)
//Plot StopLoss line
plot(plot_TPSL ? comprado_long ? long_stop_price : comprado_short ? short_stop_price : na : na, color=color.new(color.red, 30), style= plot.style_linebr)









Mais.