Estrategia de negociación de seguimiento del impulso

El autor:¿ Qué pasa?, Fecha: 2023-12-20 16:06:26
Las etiquetas:

img

Resumen de la estrategia

La estrategia de trading de seguimiento de impulso es una estrategia de trading automatizada que rastrea principalmente las tendencias del impulso del mercado y utiliza múltiples indicadores técnicos como juicios auxiliares.

En general, esta estrategia es adecuada para el comercio de tendencias a mediano y largo plazo, y puede capturar eficazmente las tendencias del mercado y reducir la frecuencia de operaciones para obtener mayores ganancias individuales.

Principio de la estrategia

El juicio de la potencia principal

El núcleo de la estrategia de seguimiento de impulso es juzgar la dirección de los principales fondos del mercado. La estrategia calcula el indicador ATR para monitorear la volatilidad del mercado en tiempo real. Cuando la volatilidad aumenta, significa que los principales fondos se están acumulando o distribuyendo, y la estrategia saldrá temporalmente del mercado para evitar el período en que los principales fondos están operando.

Cuando la volatilidad se debilita, significa que la acumulación o asignación de la fuerza principal está completa, y la estrategia volverá a entrar en el mercado para determinar la dirección específica de la fuerza principal. El método de juicio es calcular las posiciones de soporte y presión del mercado para ver si hay signos de avances. Si hay un avance claro, demostrará que los fondos principales han elegido esa dirección.

Decisión auxiliar

Una vez determinada la dirección de los fondos principales, la estrategia también introducirá múltiples indicadores técnicos auxiliares para su verificación de nuevo para evitar errores de apreciación.

Solo cuando la dirección de los fondos principales y los indicadores auxiliares emiten señales en la misma dirección, la estrategia abrirá posiciones.

Salida de pérdida de parada

Después de abrir posiciones, la estrategia de seguimiento de impulso rastreará los cambios de precios en tiempo real y utilizará la expansión de los valores ATR como una señal de stop loss.

Además, si el movimiento del precio excede un cierto rango y luego retrocede, también se producirá un stop loss.

Ventajas de la estrategia

Alto grado de sistematización

La mayor ventaja de las estrategias de seguimiento de impulso es su alto grado de sistematización y estandarización.

Esto hace que la replicabilidad de esta estrategia sea muy fuerte. Los usuarios pueden aplicarla para uso a largo plazo después de la configuración sin intervención manual.

Control de riesgos maduro

La estrategia cuenta con mecanismos de control de riesgos integrados a varios niveles, como las evaluaciones de potencia principal, la verificación auxiliar, el establecimiento de la línea de stop loss, etc., que pueden controlar eficazmente los riesgos no sistemáticos.

Específicamente, la estrategia solo abre posiciones en situaciones de alta probabilidad y establece puntos de stop loss científicos para maximizar la evitación de pérdidas.

Retorno relativamente sostenible

En comparación con las estrategias a corto plazo, el período de retención de las estrategias de seguimiento del impulso es más largo y cada ganancia es mayor.

Además, la estrategia realiza un seguimiento de las tendencias a medio y largo plazo, lo que permite captar plenamente la volatilidad de las tendencias, especialmente en los principales mercados con tendencias.

Advertencias sobre el riesgo

Optimización de parámetros difícil

La estrategia de seguimiento del momento implica múltiples parámetros, como parámetros ATR, parámetros de penetración, parámetros de stop loss, etc. Existe una cierta correlación entre estos parámetros, lo que requiere pruebas repetidas para encontrar la combinación óptima de parámetros.

La configuración incorrecta de los parámetros puede llevar fácilmente a una frecuencia de negociación excesiva o un control de riesgos insuficiente.

Trampa para escapar

Cuando la estrategia determina las principales señales de potencia e indicador, se basa en el avance de los precios para confirmar, pero puede haber falsas rupturas en las operaciones de penetración, lo que aumentará la probabilidad de quedar atrapado.

Si un avance clave falla, puede llevar a mayores pérdidas.

Direcciones de optimización

Introducción del aprendizaje automático

Los algoritmos de aprendizaje automático se pueden utilizar para detectar automáticamente correlaciones entre parámetros y encontrar combinaciones óptimas de parámetros.

Específicamente, el algoritmo EnvironmentError se puede usar para iterar continuamente parámetros basados en el aprendizaje de refuerzo para maximizar los retornos de la estrategia.

Aumentar los filtros

Se pueden introducir más filtros auxiliares sobre la base de indicadores existentes, tales como indicadores de volumen de operaciones, indicadores de flujo de capital, etc., para verificar tres o cuatro veces las señales de avance para mejorar la fiabilidad.

Pero demasiados filtros también pueden conducir a oportunidades perdidas. La intensidad del filtro debe ser equilibrada. Además, los filtros mismos también deben evitar la correlación.

Fusión de estrategias

Combinar la estrategia de seguimiento del impulso con otras estrategias para aprovechar las fortalezas de las diferentes estrategias para lograr la ortogonalidad y mejorar la estabilidad general.

Por ejemplo, incorporar estrategias de reversión a corto plazo y abrir operaciones de reversión después de avances puede obtener más ganancias.

Resumen de las actividades

En general, la estrategia de trading de seguimiento del momento es una estrategia sistematizada de seguimiento de tendencias que vale la pena recomendar.

Pero la estrategia en sí también tiene algunas debilidades inherentes. Requiere que los usuarios tengan la capacidad de optimizar parámetros e integrar estrategias para maximizar la efectividad de esta estrategia. En general, la estrategia de seguimiento de impulso es un producto cuantitativo adecuado para entusiastas cuantitativos con alguna base.


/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-15 01:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Created by frasmac2k Strategy credit to Alex Morris

//@version=5
strategy("Mechanical", shorttitle="MECH", overlay=true)

// Get the current date and time
currentYear = year
currentMonth = month
currentDay = dayofmonth

// Create a timestamp for the present date and time
currentTimestamp = timestamp(currentYear, currentMonth, currentDay)

// Define time interval for backtesting
dStart = input(timestamp('2023-07-01'), title='Set Start date', tooltip='Select a start date to run the script from')

// Define direction of strategy
direction = input.string('Forward',title='Direction', tooltip='Forward will go LONG on a Green anchor candle. Inverse will go short on a Green anchor candle and vice versa for Red candle', options=['Forward', 'Inverse'])

// Define the anchor hour as user input with a range of 0 to 23
anchorHour = input.int(11, title="Anchor Hour", tooltip='Set the hour to trade', minval=0, maxval=23)

// Define the take profit and stop loss in pips
takeProfitPips = input.int(10, title='Define TP Pips', tooltip='How many pips do you want to set TP. Choose a sensible value related to the instrument', minval=5)
stopLossPips = input.int(10,'Define SL Pips', tooltip='How many pips do you want to set SL. Choose a sensible value related to the instrument', minval=5)

// Define Tick size
tick10p = input.int(100, title='tick size', tooltip='Choose how many ticks equal 10 pips. This can vary by broker so measure 10 pips on the chart and select how many ticks that equates to. Forex is typically 100. Some instruments such as indices can be 1000', options=[100,1000])

// Declare TP/SL variables
var float takeProfit = na
var float stopLoss = na

// Calculate take profit and stop loss levels in ticks
if tick10p == 100
    takeProfit := takeProfitPips * 10
    stopLoss := stopLossPips * 10
if tick10p == 1000
    takeProfit := takeProfitPips * 100
    stopLoss := stopLossPips * 100

// Declare offset time
var int offset = na

if currentTimestamp > timestamp('2023-10-29')
    offset := 4
else
    offset := 5

//adjust for exchange time
anchorHour := anchorHour - offset

// Define the anchor hour as user input with a range of 0 to 23
tradeHour = anchorHour

// Define logical check for strategy date range
isStratTime = true

// Calculate the time condition for placing the order at the user-defined hour (start of the next hour)
isTradeTime = true

// Logic condition for forwards or inverse
isForward = direction == 'Forward'
isInverse = direction == 'Inverse'

// Declare entry condition variables
var bool longCondition = na
var bool shortCondition = na

// Declare and initialize variables for anchorCandle open and close prices
var float anchorOpen = na
var float anchorClose = na
var float tradeOpen = na
var float tradeClose = na

// Set logic by direction

if isForward
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        longCondition := anchorClose > anchorOpen
        shortCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

if isInverse
    // Strategy logic
    if isTradeTime and isStratTime
        //Obtain candle open/close
        anchorOpen := open
        anchorClose := close
        // Define entry conditions
        shortCondition := anchorClose > anchorOpen
        longCondition := anchorClose < anchorOpen
        
        // Entry logic
        if longCondition
            strategy.entry("Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Long", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')
        if shortCondition
            strategy.entry("Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Short", profit=takeProfit, loss=stopLoss, comment_profit='TP', comment_loss='SL')

// Define the time range for the background shade
startHour = anchorHour
startMinute = 0
endHour = anchorHour
endMinute = 0

// Check if the current time is within the specified range
isInTimeRange = (hour == startHour and minute >= startMinute) or (hour == endHour and minute <= endMinute) or (hour > startHour and hour < endHour)

// Define the background color for the shade
backgroundColor = color.new(color.red, 90)

// Apply the background shade
bgcolor(isInTimeRange ? backgroundColor : na)



Más.