Estratégia de tendência do RSI Alligator

Autora:ChaoZhang, Data: 2024-01-29 14:40:07
Tags:

img

Resumo

A estratégia de tendência do Alligator RSI baseia-se na combinação do indicador RSI e do indicador Alligator para determinar a entrada e saída das tendências. Ele usa três linhas médias móveis - a linha da mandíbula do alligador, a linha do dente e a linha do lábio, construídas pelo RSI de diferentes períodos. Ela fica longa quando a linha do dente cruza acima da linha do lábio e a linha do mandíbula do RSI é maior do que a linha do dente; ela fica curta quando a linha do dente cruza abaixo da linha do lábio e a linha da mandíbula do RSI é menor do que a linha do dente.

Estratégia lógica

A estratégia RSI Alligator Trend constrói as três linhas do indicador Alligator usando o indicador RSI.

  • Linha da mandíbula: linha RSI de 5 períodos
  • Linha dentária: linha RSI de 13 períodos
  • Linha dos lábios: linha RSI de 34 períodos

A lógica do sinal de entrada é:

sinal longo: quando a linha do dente cruza acima da linha do lábio e a linha da mandíbula está acima da linha do dente, vá longo.

sinal curto: quando a linha do dente cruzar abaixo da linha do lábio e a linha da mandíbula estiver abaixo da linha do dente, vá curto.

A estratégia também estabelece as condições de stop loss e take profit:

  • O preço de stop loss é fixado em 10% abaixo do preço de entrada
  • O lucro é fixado em 90% acima do preço de entrada

Análise da força

A estratégia RSI Alligator Trend tem os seguintes pontos fortes:

  1. Usando as linhas de Alligator para determinar a tendência pode efetivamente filtrar o ruído do mercado e bloquear a tendência principal
  2. A combinação do RSI de vários períodos evita falhas e melhora a confiabilidade do sinal
  3. A fixação de condições razoáveis de stop loss e take profit ajuda a estabilizar as operações de estratégia
  4. A ideia de estratégia é clara e fácil de entender, as configurações de parâmetros são simples, e é fácil de implementar para negociação ao vivo
  5. Pode ser tanto longo como curto, tendo em conta ambas as direcções da tendência, e tem uma grande flexibilidade

Análise de riscos

A estratégia RSI Alligator Trend também apresenta os seguintes riscos:

  1. Os parâmetros do ciclo podem ser ajustados para reduzir a probabilidade de falhas.

  2. A configuração de stop loss pode ser muito agressiva, com uma alta probabilidade de stop loss desnecessário.

  3. Se o mercado se mover violentamente, o stop loss pode não desempenhar o seu papel adequado de proteger a margem.

  4. Quando as posições longas e curtas alternam frequentemente, a pressão sobre os custos de negociação é maior.

Orientações de otimização

A estratégia de tendência do RSI Alligator pode ser otimizada nos seguintes aspectos:

  1. Otimize as configurações do parâmetro de linha do Alligator para encontrar a melhor combinação de parâmetros

  2. Otimizar a lógica da condição de entrada, como adicionar indicadores como volume de negociação para filtrar sinais

  3. Otimizar as estratégias de captação de lucro e de stop loss para as tornar mais adaptáveis às condições de mercado e aos níveis de margem

  4. Adicionar mecanismos para lidar com eventos extremos e evitar a exposição a condições anormais de mercado

  5. Adicionar algoritmos de posição aberta para controlar a proporção de capital investido num único negócio para mitigar os riscos

Conclusão

Em geral, a estratégia de tendência do RSI Alligator é uma estratégia de tendência confiável e fácil de usar. Ele usa o indicador Alligator para determinar a direção da tendência, combinado com o indicador RSI para definir limiares de referência, que podem efetivamente bloquear a tendência e definir pontos de saída razoáveis. Ao mesmo tempo, a própria estratégia também tem forte flexibilidade e extensibilidade, tornando-se útil para negociação ao vivo e otimização adicional.


/*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=3
// RSI Alligator
// Forked from Author: Reza Akhavan
// Updated by Khalid Salomão

strategy("RSI Alligator Strategy", overlay=false, pyramiding=0, default_qty_type=strategy.cash, default_qty_value=25000, initial_capital=25000, commission_type=strategy.commission.percent, commission_value=0.15, slippage=3)

// === TA LOGIC ===
overBought = input(70, minval=0, maxval=100, title="Over bought")
overSold = input(30, minval=0, maxval=100, title="Over sold")
jawPeriods = input(5, minval=1, title="Jaw Periods")
jawOffset = input(0, minval=0, title="Jaw Offset")
teethPeriods = input(13, minval=1, title="Teeth Periods")
teethOffset = input(0, minval=0, title="Teeth Offset")
lipsPeriods = input(34, minval=1, title="Lips Periods")
lipsOffset = input(0, minval=0, title="Lips Offset")

jaws = rsi(close, jawPeriods)
teeth = rsi(close, teethPeriods)
lips = rsi(close, lipsPeriods)
plot(jaws, color=green, offset=jawOffset, title="Jaw")
plot(teeth, color=red, offset=teethOffset, title="Teeth")
plot(lips, color=blue, offset=lipsOffset, title="Lips")

//
// === Signal logic ===
// 
LONG_SIGNAL_BOOLEAN  = crossover(teeth, lips) and jaws > teeth
SHORT_SIGNAL_BOOLEAN = crossunder(teeth, lips) and jaws < teeth

// === INPUT BACKTEST DATE RANGE ===
strategyType = input(defval="Long Only", options=["Long & Short", "Long Only", "Short Only"])

FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => true

// === STRATEGY BUY / SELL ENTRIES ===

// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy()  => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN

if buy()
    if (strategyType == "Short Only")
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long, comment="Long")

if sell()
    if (strategyType == "Long Only")
        strategy.close("Long")
    else
        strategy.entry("Short", strategy.short, comment="Short")
        

// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(90, title='Take Profit %', type=float)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)

strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)

Mais.