Estrategia de negociación de diferencias de volatilidad de doble marco temporal

El autor:¿ Qué pasa?, Fecha: 2024-02-18 15:31:32
Las etiquetas:

img

Resumen general

La estrategia de negociación de diferencias de volatilidad de doble marco temporal evalúa el estado de sobrecompra/sobreventa del mercado mediante el cálculo del diferencial entre los indicadores de RSI de dos ciclos de tiempo diferentes para implementar operaciones de tendencia de bajo riesgo.

Principio de la estrategia

Los indicadores principales de esta estrategia son shortTermXtrender y longTermXtrender. shortTermXtrender calcula el margen del RSI en el marco de tiempo a corto plazo y longTermXtrender calcula el margen del RSI en el marco de tiempo a largo plazo.

El marco de tiempo a corto plazo adopta la diferencia de precio entre la EMA de 7 días y la LMA de 4 días para calcular el RSI, y luego la diferencia de precio con 50 constituye shortTermXtrender.

Cuando el shortTermXtrender cruza por encima de 0, ir largo; cuando el longTermXtrender cruza por encima de 0, también ir largo. El principio de stop loss después de ir largo es detener la pérdida cuando el shortTermXtrender cruza por debajo de 0, cuando el longTermXtrender cruza por debajo de 0, detener la pérdida también.

De esta manera, al juzgar en los marcos de tiempo duales, más falsos brotes pueden ser filtrados.

Análisis de ventajas

La mayor ventaja de esta estrategia es que el juicio de tendencia es preciso. La combinación de marcos de tiempo duales puede filtrar eficazmente el ruido y bloquear la dirección de tendencia objetivo. Esto proporciona una garantía para el comercio de seguimiento de tendencias de bajo riesgo.

Además, la estrategia proporciona espacio para la optimización de parámetros. Los usuarios pueden ajustar parámetros como el ciclo SMA y los parámetros RSI de acuerdo con diferentes variedades y ciclos de tiempo para optimizar los resultados de la estrategia.

Análisis de riesgos

El principal riesgo de esta estrategia es el juicio erróneo de largo y corto. En los mercados oscilantes, es fácil generar señales erróneas. Si la posición todavía está abierta en este momento, habrá el riesgo de pérdida.

Además, la configuración inadecuada de parámetros también puede conducir a malos resultados. Si el parámetro del ciclo de tiempo se establece demasiado corto, la probabilidad de error de juicio aumentará; si el parámetro del ciclo de tiempo se establece demasiado largo, se perderá la oportunidad de la tendencia. Esto requiere que los usuarios prueben y optimicen parámetros para diferentes mercados.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Aumentar el mecanismo de toma de ganancias. Actualmente no hay un ajuste de toma de ganancias en la estrategia. Se puede tomar ganancias a tiempo después de alcanzar el beneficio objetivo.

  2. Mejorar la gestión de posiciones: las posiciones pueden ajustarse dinámicamente en función del tamaño del capital, la volatilidad y otros indicadores.

  3. Los usuarios pueden probar la combinación óptima de parámetros mediante pruebas retroactivas de diferentes plazos de tiempo, como diarios y 60 minutos.

  4. Los modelos pueden ser entrenados para determinar las condiciones del mercado y ajustar dinámicamente los parámetros de la estrategia para mejorar la tasa de ganancia.

Resumen de las actividades

La estrategia de comercio de volatilidad de doble marco de tiempo logra una captura de tendencia eficiente mediante la construcción de indicadores de doble marco de tiempo. La estrategia tiene un gran espacio de optimización. Los usuarios pueden optimizar a través del ajuste de parámetros, la gestión de la toma de ganancias, la gestión de posiciones, etc. para obtener mejores resultados de la estrategia.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//study("MavXtrender")
strategy("MavXtrender")

ShortTermSMA = input(7)
ShortTermLMA = input(4)
ShortTermRSI = input(2)

LongTermMA  = input(4)
LongTermRSI  = input(2)

UseFactors = input(true)
TradeShortTerm = input(true)
TradeLongTerm = input(true)

count = TradeShortTerm == true ? 1 : 0
count := TradeLongTerm == true ? count + 1 : count
// set position size
Amount = strategy.equity / (close * count)

ShortTermLMA := UseFactors == true ? round(ShortTermSMA * ShortTermLMA) : ShortTermLMA
ShortTermRSI := UseFactors == true ? round(ShortTermSMA * ShortTermRSI) : ShortTermRSI
LongTermMA := UseFactors == true ? round(ShortTermSMA * LongTermMA) : LongTermMA
LongTermRSI := UseFactors == true ? round(ShortTermSMA * LongTermRSI) : LongTermRSI

shortTermXtrender = rsi(ema(close, ShortTermSMA) - ema(close, ShortTermLMA), ShortTermRSI ) - 50
longTermXtrender  = rsi( ema(close, LongTermMA), LongTermRSI ) - 50

// === INPUT BACKTEST RANGE ===
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2018, title = "From Year", minval = 2012)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 2020, title = "To Year", minval = 2012)

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

strategy.entry("ShortTerm", strategy.long, qty = Amount, when = window() and crossover(shortTermXtrender,0) and TradeShortTerm)
strategy.entry("LongTerm", strategy.long, qty = Amount, when = window() and crossover(longTermXtrender,0) and TradeLongTerm)

strategy.close("ShortTerm", when = crossunder(shortTermXtrender,0) or time > finish)
strategy.close("LongTerm", when = crossunder(longTermXtrender,0) or time > finish)

shortXtrenderCol = shortTermXtrender > 0 ? shortTermXtrender > shortTermXtrender[1] ? color.lime : #228B22 : shortTermXtrender > shortTermXtrender[1] ? color.red : #8B0000
plot(shortTermXtrender, color=shortXtrenderCol, style=plot.style_columns, linewidth=1, title="B-Xtrender Osc. - Histogram", transp = 50)

longXtrenderCol = longTermXtrender> 0 ? longTermXtrender > longTermXtrender[1] ? color.lime : #228B22 : longTermXtrender > longTermXtrender[1] ? color.red : #8B0000
plot(longTermXtrender , color=longXtrenderCol, style=plot.style_histogram, linewidth=2, title="B-Xtrender Trend - Histogram", transp = 80)
plot(longTermXtrender , color=color.white,     style=plot.style_line,      linewidth=1, title="B-Xtrender Trend - Line",      transp = 80)


Más.