
La estrategia es una estrategia de seguimiento de tendencias que utiliza indicadores de la dinámica de los precios. Para determinar la tendencia del mercado, calcula los cambios en los precios de cierre durante un período determinado y realiza las operaciones de compra o venta correspondientes cuando los precios tienen una tendencia ascendente o descendente.
El indicador central de la estrategia es el movimiento del precio. La fórmula para calcular el movimiento es:
momentum = close - close[n]
Donde n representa la duración del ciclo de la dinámica. Cuando el momento es > 0, indica que el precio ha subido durante el ciclo actual; cuando el momento es < 0, indica que el precio ha bajado durante el ciclo actual.
La estrategia establece primero un parámetro de confirmBars, que representa el juicio de tendencia de las líneas K necesarias para ejecutar la operación. En el rango de retracción, se realiza una entrada adicional si el momento > 0 continúa en la línea de la raíz K de confirmBars; si el momento < 0 continúa en la línea de la raíz K de confirmBars, se realiza una entrada en blanco.
La clave de esta estrategia para determinar la tendencia es la estadística de la cantidad de líneas K con un momento consecutivo mayor o menor que 0, a través de las variables bcount y scount. Cuando se cumplen las condiciones correspondientes, se vuelven a +1, y si no se cumplen, a 0. Cuando el recuento alcanza confirmBars, se ejecuta una operación de sobre-ocupe o de descuento.
Se trata de una estrategia de seguimiento de tendencias más sencilla, con las siguientes ventajas:
La estrategia también tiene sus riesgos:
La estrategia puede ser optimizada en los siguientes aspectos:
En general, la estrategia de ruptura dinámica es una estrategia de seguimiento de tendencias sencilla y práctica, que se adapta a una de las estrategias de entrada para el comercio cuantitativo. En el proceso de aplicación, se debe tener en cuenta el control de la frecuencia de las transacciones y evitar el exceso de transacciones y los costos de transacción demasiado altos. Al mismo tiempo, los parámetros y las reglas de filtración deben ajustarse y optimizarse según la variedad real y el entorno del mercado para que la estrategia tenga la máxima eficacia.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)
confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")
price = close
momentum = close - close[momentumLength]
// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)
startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)
inBacktestRange = true
// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
strategy.entry("Buy", strategy.long, comment="Long")
scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
strategy.entry("Sell", strategy.short, comment="Short")
// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)