Estratégia de ruptura mensal da tendência

Autora:ChaoZhang, Data: 24 de outubro de 2023 16:08:33
Tags:

img

Resumo

A estratégia de ruptura de tendência mensal é um indicador de TradingView baseado em Pine Script. Ele combina uma média móvel adaptativa, rupturas de linha de tendência e o indicador RSI para determinar sinais de entrada longa uma vez por mês. As saídas ocorrem quando o RSI mostra condições de sobrecompra.

Estratégia lógica

  1. Defina a variável lastEntryMonth para rastrear o último mês de entrada. CurrentMonth obtém o mês atual.

  2. Defina os parâmetros MA adaptativos TRAMA length=99 para suavizar o preço e determinar a tendência.

  3. Defina length_trend=14 para traçar a linha de tendência superior com base em pivots.

  4. Calcular o indicador RSI com rsiLength=14 para determinar a sobrecompra/supervenda.

  5. Lógico de entrada: ir longo se fechar > TRAMA e fechar quebras acima da linha de tendência superior, se não houver entrada no mês anterior.

  6. Lógico de saída: fechar longo se o RSI for > 70 (supercomprado).

  7. Gráfico linha TRAMA e RSI sobrecomprado nível 70.

A estratégia combina 3 principais indicadores técnicos para encontrar entradas longas de baixo risco uma vez por mês.

Vantagens

  1. Combina múltiplos indicadores para uma análise robusta do mercado e uma maior precisão.

  2. Limita as entradas a um período mensal, evitando o excesso de negociação.

  3. A MA adaptativa adapta-se rapidamente às mudanças de tendência.

  4. O RSI sobrevendido evita comprar no topo do mercado e controla o risco.

  5. As regras simples de entrada/saída são fáceis de implementar.

  6. Parâmetros personalizáveis permitem a otimização da estratégia.

Riscos

  1. Risco de ruptura se falhar, parada de perda se o preço voltar abaixo da linha de tendência.

  2. O mau timing leva a entradas perto dos topos.

  3. Parâmetros de indicador defeituosos causam sinais enganosos.

  4. Os breakouts podem refletir a volatilidade recente do mercado.

  5. Monitore o risco/recompensa. Considere apenas os pullbacks de negociação ou adicionar outros filtros de confirmação.

  6. Valida os indicadores em vários prazos, utilizando prazos mais altos para identificar tendências e mais baixos para entrada.

  7. Otimizar parâmetros para combinar estratégia com o tipo de mercado.

Optimização

  1. Adicionar um indicador de volume para evitar falhas com baixo volume.

  2. Considere o lucro parcial assumindo a saída do RSI sobrecomprado, mantendo a posição parcial.

  3. Otimizar os parâmetros de MA para melhor adaptar-se às alterações da tendência.

  4. Adicione zonas antes/depois do ponto de ruptura para evitar comprar direito na reversão.

  5. Adicionar mais filtros como canais, volatilidade para maior precisão.

  6. A escala com novas rupturas em novos níveis de resistência.

Conclusão

A estratégia de ruptura de tendência mensal analisa a tendência, o impulso e os extremos. Determina a tendência em um prazo mensal, mas entra em rupturas de prazo mais curto. O RSI supervisiona o gerenciamento de riscos. A lógica simples identifica entradas longas mensais otimizadas. Equilibra o seguimento da tendência e os controles de risco. A otimização de parâmetros a adapta a diferentes condições do mercado.


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

//@version=5
strategy('Bannos Strategy', shorttitle='Bannos', overlay=true)

//The provided script is an indicator for TradingView written in Pine Script version 5. The indicator is used to determine entry and exit points for a trading strategy. Here's a detailed breakdown of what the script does:

// Strategy Definition:

// Bannos Strategy is the full name, with a short title Bannos.
// The overlay=true option indicates that the strategy will be overlayed on the price chart.
// Tracking Entry Month:

// A variable lastEntryMonth is set up to track the month of the last entry.
// currentMonth identifies the current month.
// Trend Regularity Adaptive Moving Average (TRAMA):

// It takes an input of length 99 as default.
// It uses adaptive calculations to track trend changes.
// Trendlines with Breaks:

// Identifies local peaks over a given period (in this case, 14) and calculates a slope based on these peaks.
// Relative Strength Index (RSI):

// Uses a length of 14 (default) to calculate the RSI.
// RSI is an oscillation indicator that indicates overbought or oversold conditions.
// Strategy Logic for Long Entry:

// A long position is opened if:
// The close price is above the TRAMA.
// There's a crossover of the close price and the upper trendline.
// The position is taken only once per month.
// Strategy Logic for Long Exit:

// The long position is closed if the RSI exceeds 70, indicating an overbought condition.
// Plotting:

// The TRAMA is plotted in red on the chart.
// A horizontal line is also drawn at 70 to indicate the RSI's overbought zone.
// In summary, this strategy aims to enter a long position when certain trend and crossover conditions are met, and close the position when the market is considered overbought as per the RSI. Additionally, it ensures entries only occur once a month.
//



// Variable pour suivre le mois de la dernière entrée
var float lastEntryMonth = na
currentMonth = month(time)

// Parameters for Trend Regularity Adaptive Moving Average (TRAMA)
length_trama = input(99)
src_trama = close
ama = 0.
hh = math.max(math.sign(ta.change(ta.highest(length_trama))), 0)
ll = math.max(math.sign(ta.change(ta.lowest(length_trama)) * -1), 0)
tc = math.pow(ta.sma(hh or ll ? 1 : 0, length_trama), 2)
ama := nz(ama[1] + tc * (src_trama - ama[1]), src_trama)

// Parameters for Trendlines with Breaks
length_trend = 14
mult = 1.0
ph = ta.pivothigh(length_trend, length_trend)
upper = 0.
slope_ph = 0.
slope_ph := ph ? mult : slope_ph
upper := ph ? ph : upper - slope_ph

// Parameters for RSI
rsiLength = 14
up = ta.rma(math.max(ta.change(close), 0), rsiLength)
down = ta.rma(-math.min(ta.change(close), 0), rsiLength)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// Strategy Logic for Long Entry
longCondition = close > ama and ta.crossover(close, upper) and (na(lastEntryMonth) or lastEntryMonth != currentMonth)
if (longCondition)
    lastEntryMonth := currentMonth
    strategy.entry('Long', strategy.long)

// Strategy Logic for Long Exit
exitCondition = rsi > 70
if (exitCondition)
    strategy.close('Long')

// Plotting
plot(ama, 'TRAMA', color=color.red)
hline(70, 'Overbought', color=color.red)


Mais.