Estrategia comercial basada en media móvil adaptativa y ruptura de tendencia


Fecha de creación: 2023-09-19 15:49:37 Última modificación: 2023-09-19 15:49:37
Copiar: 0 Número de Visitas: 793
1
Seguir
1617
Seguidores

Descripción general

La estrategia determina la entrada a través de la adaptación de las medias móviles y la ruptura de la línea de tendencia, y utiliza el indicador RSI para decidir la salida. Su objetivo es entrar en el mercado cuando cumpla con las condiciones de la tendencia, detener la salida en zonas de sobrecompra, mientras controla solo una operación por mes.

Principio de estrategia

  1. Calcula el promedio móvil adaptado de longitud 99 para determinar la dirección de la tendencia general

  2. Pico local de longitud calculada en 14, dibujado en la vía para representar la línea de presión

  3. Cuando el precio de cierre de la bolsa se desvía y no hay pedidos en el mes, se hace una entrada adicional

  4. Calcula el RSI de 14 ciclos, cuando el RSI es superior a 70 (zona de sobrecompra) para cerrar la posición

  5. Sigue el último mes de entrada y asegúrate de que sólo se realice una transacción al mes

Análisis de las ventajas

  1. Las medias móviles adaptadas pueden seguir de forma dinámica los cambios en la tendencia

  2. Combinado con la ruptura de la línea de tendencia puede mejorar la precisión de entrada

  3. El indicador RSI es eficaz para detectar sobrecompra y sobreventa y controlar el riesgo en tiempo real.

  4. Solo una transacción al mes reduce la frecuencia de las transacciones y los honorarios

  5. Las reglas son simples, claras y fáciles de entender y de cumplir.

Análisis de riesgos

  1. Los parámetros mal configurados pueden causar errores en los mejores puntos de entrada.

  2. Los indicadores fijos de salida no pueden seguir a tiempo los cambios en el mercado

  3. Existe un cierto riesgo de retirada

  4. Incapacidad para controlar el riesgo de las posiciones a largo plazo

  5. El exceso de condiciones de filtración puede impedir la entrada

Dirección de optimización

  1. Prueba diferentes parámetros para encontrar el parámetro óptimo

  2. Aumentar otros indicadores de filtrado para mejorar la estabilidad de la estrategia

  3. Desarrollar estrategias de parada dinámica y seguimiento de la parada

  4. Optimización de la lógica de entrada para identificar brechas más potentes

  5. Variedad y parámetros de ciclo aplicables a las pruebas

  6. Combinado con un indicador de tendencia para filtrar falsas señales de ruptura

Resumir

La estrategia integra el análisis de tendencias y el indicador de sobrecompra y sobreventa, lo que permite un seguimiento de tendencias más estable. A través de la optimización de la configuración de parámetros, el mecanismo de salida dinámica, etc., puede convertirse en un sistema de comercio cuantitativo fiable. En general, la estrategia es fácil de manejar y merece ser mejorada y verificada.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-18 00:00:00
period: 15m
basePeriod: 5m
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)