Estratégia de avanço da linha de tendência MA

Autora:ChaoZhang, Data: 2023-10-30 11:39:31
Tags:

img

Esta estratégia permite obter uma rentabilidade contínua em mercados voláteis através do acompanhamento dos avanços da linha média móvel.

Estratégia lógica

A lógica central desta estratégia é abrir posições com base em avanços da linha média móvel.

Especificamente, a estratégia adota uma média móvel dupla WMA de 60 períodos como a principal linha média móvel. Ao mesmo tempo, calcula a verdadeira faixa do preço e desenha as faixas superior e inferior.

Além dos sinais de ruptura, a estratégia também incorpora o RSI e a EMA como indicadores auxiliares.

Além disso, a estratégia usa formações de média móvel tripla para determinar pontos de saída.

Análise das vantagens

  • Usando MA para suavizar as mudanças de preços, pode identificar efetivamente as direcções da tendência
  • A negociação baseada em breakouts de canal pode gerar lucros decentes em mercados de intervalo
  • A combinação de RSI e EMA evita falsos sinais de ruptura
  • Usar formações de MA tripla para determinar pontos de saída evita tendências esgotadas

Análise de riscos

  • As linhas MA podem gerar muitas falhas em mercados muito flutuantes
  • Os horários de saída do triplo MA podem não ser muito precisos
  • Parâmetros de RSI inadequados podem levar a uma troca excessiva

Estes riscos podem ser reduzidos através da otimização dos períodos de MA, do ajuste das configurações de MA tripla, da utilização prudente do RSI, etc.

Orientações de otimização

  • Otimizar os períodos de MA para encontrar melhores definições para a linha da média móvel principal
  • Tente diferentes indicadores auxiliares para substituir o RSI, por exemplo, KDJ, MACD, etc.
  • Ajustar os parâmetros de MA triplo para identificar com mais precisão os pontos de reversão
  • Adicionar stop loss ao risco de controlo por transacção

Resumo

Em resumo, esta é uma excelente estratégia de ruptura para mercados de faixa. A ideia central é abrir posições baseadas em rupturas de MA, filtradas por indicadores de tendência, e realizar lucros constantes em mercados não-trending. As saídas são determinadas mais cedo usando formações de MA tripla. Há amplo espaço para otimizar parâmetros, melhorar a lógica de entrada / saída, etc., para maximizar o desempenho em mercados de faixa.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-03-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/



//@version=5

//exapple bot
strategy('RIPO BOT', shorttitle='RIPO BOT', overlay=true, process_orders_on_close=true, calc_on_order_fills=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
sl_inp = input(0.1, title='Stop Loss %') / 100
tp_inp = input(0.33, title='Take Profit %') / 100

length = input(defval=21)
upper = ta.highest(length)
lower = ta.lowest(length)

lengthChop = input.int(14, minval=1)
ci = 100 * math.log10(math.sum(ta.atr(1), lengthChop) / (ta.highest(lengthChop) - ta.lowest(lengthChop))) / math.log10(lengthChop)
offset = input.int(0, "Offset",  minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
hline(50, "Middle Band", color=color.new(#787B86, 50))
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

rsi = ta.rsi(close, 14)

var float entry_price = na

output = 100 * (close - upper) / (upper - lower)
ema = ta.ema(output, input(defval=13, title='EMA'))

ma(src, len) =>
    ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len)))
BBMC = ma(close, 60)
rangema = ta.ema(ta.tr, 60)
upperk = BBMC + rangema * 0.2
lowerk = BBMC - rangema * 0.2
color_bar = close > upperk ? color.blue : close < lowerk ? color.fuchsia : color.gray

ExitHigh = ma(high, 15)
ExitLow = ma(low, 15)
Hlv3 = int(na)
Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]
sslExit = Hlv3 < 0 ? ExitHigh : ExitLow
base_cross_Long = ta.crossover(close, sslExit)
base_cross_Short = ta.crossover(sslExit, close)
codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na
entry_long = false

entry_short = false

    
if ta.crossover(close, BBMC) and output > ema
    entry_long := true
    
if ta.crossunder(close, BBMC) and output < ema
    entry_short := true

if entry_long and strategy.position_size == 0
    entry_price := close
    strategy.entry('enter long', strategy.long, comment='ENTER-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size > 0
    strategy.exit('Stop Loss/TP long', 'enter long', limit=entry_price * (1 + tp_inp), stop = color_bar == color.fuchsia ? BBMC : na, comment='EXIT-LONG_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))


//if entry_short and strategy.position_size == 0
    //entry_price := close
    //strategy.entry('enter short', strategy.short, comment='ENTER-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
if strategy.position_size < 0
    strategy.exit('Stop Loss/TP short', 'enter short', limit=entry_price * (1 - tp_inp), stop = color_bar == color.blue ? BBMC : na, comment='EXIT-SHORT_BYBIT_MATICUSDT_BOT-NAME_1M_85915e4dc80fb663')
plot(entry_price * (1 + tp_inp), color=color.new(color.green, 0))
// plot(entry_price * (1 - sl_inp), color=color.new(color.red, 0))

plot(rsi, color=color.yellow)

plot(output, title='%R', color=color.new(color.yellow, 0), linewidth=2)
plot(ema, title='EMA', color=color.new(color.aqua, 0), linewidth=2)

plotarrow(codiff, colorup=color.new(color.blue, 35), colordown=color.new(color.fuchsia, 35), title='Exit Arrows', maxheight=20, offset=0)
plot(BBMC, color=color_bar, linewidth=4, title='MA Trendline')





Mais.