Basado en el seguimiento del impulso y estrategias de tendencias


Fecha de creación: 2024-02-22 17:27:18 Última modificación: 2024-02-22 17:27:18
Copiar: 0 Número de Visitas: 550
1
Seguir
1617
Seguidores

Basado en el seguimiento del impulso y estrategias de tendencias

Descripción general

La idea central de esta estrategia es combinar el indicador de tendencia super y el indicador de tendencia promedio (ADX), para permitir el juicio y el seguimiento de la tendencia. El indicador de tendencia super se utiliza para identificar la dirección de la tendencia de precios actual, el ADX se utiliza para determinar la fuerza de la tendencia y solo se negocia bajo una tendencia fuerte. Además, la estrategia también utiliza el color de la entidad de la línea K, el indicador de volumen de transacción, etc. para confirmar, formando una regla de negociación más completa.

En términos generales, la estrategia es una estrategia de seguimiento de tendencias, cuyo objetivo es capturar tendencias claras en la línea media y larga, evitando la interferencia de la corrección y la oscilación.

Principio de estrategia

  1. Utiliza el indicador de tendencia súper para determinar la dirección de la tendencia de los precios. Cuando el precio se encuentra en la tendencia súper, es una señal de más de una cabeza, y cuando se encuentra en la tendencia súper, es una señal de cabeza.

  2. Utiliza el ADX para determinar la fuerza de la tendencia. La señal de negociación se genera solo cuando el ADX es mayor que el umbral establecido, lo que permite filtrar los períodos de ajuste incierto.

  3. El color de la entidad de la línea K determina si el patrón actual es ascendente o descendente, y se combina con el indicador de tendencia súper para formar una confirmación.

  4. El aumento del volumen de transacciones es una señal de confirmación. La creación de posiciones solo se realiza cuando el volumen de transacciones aumenta.

  5. Establezca un Stop Loss y un Stop Out para bloquear ganancias y controlar el riesgo.

  6. Eliminar todas las posiciones antes de que finalice el tiempo en el disco establecido.

Ventajas estratégicas

  1. En el caso de las inversiones de capital de riesgo, las inversiones de capital de riesgo son las inversiones de capital de riesgo que se realizan con el objetivo de obtener una mayor rentabilidad.

  2. La estrategia tiene menos parámetros y es fácil de entender e implementar.

  3. El control de riesgo está en su lugar, con paradas y paradas.

  4. El uso de varios indicadores para la confirmación puede reducir las señales falsas.

Riesgo estratégico

  1. Los cambios en la profundidad de la bolsa pueden causar grandes pérdidas.

  2. El resultado de una acción puede cambiar drásticamente.

  3. El caso de los cisnes negros, un cambio importante en la política.

Resolvemos el riesgo:

  1. Ajuste adecuado de los parámetros de ADX para asegurar que solo se negocie en una tendencia fuerte.

  2. Aumentar el stop loss y controlar las pérdidas individuales.

  3. Seguir de cerca las políticas y los acontecimientos importantes, y actuar activamente cuando sea necesario.

Dirección de optimización de la estrategia

  1. Se pueden probar diferentes combinaciones de parámetros de tendencia súper, seleccionando los parámetros que producen una señal más estable.

  2. Se pueden probar diferentes parámetros de ADX para determinar la mejor combinación de parámetros.

  3. Se pueden agregar otros indicadores para la confirmación, como la volatilidad, la banda de Brin, etc., para reducir aún más las falsas señales.

  4. Se puede combinar con estrategias como la ruptura, para detener los pérdidas en el momento en que la tendencia se rompe.

Resumir

Esta estrategia tiene una idea general clara, para determinar la dirección de la tendencia del precio con la tendencia súper, para determinar la fuerza de la tendencia con el ADX, para realizar el seguimiento de la tendencia en una tendencia fuerte. Al mismo tiempo, establece paradas de pérdida para controlar el riesgo. Los parámetros de la estrategia son pocos y son fáciles de optimizar.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Intraday Strategy Template

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]Hulk Smash Intra", overlay=true, calc_on_every_tick = false, pyramiding=0,default_qty_type=strategy.percent_of_equity, default_qty_value=100,initial_capital=2000)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=1) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=0.5) * 0.01    
     
var float i_multiplier = input(title = "ST Multiplier", type = input.float, 
     defval = 2, step = 0.1, confirm=true)

var int i_atrPeriod = input(title = "ST ATR Period", type = input.integer, 
     defval = 10, confirm=true)     
     
len = input(title="ADX Length", type=input.integer, defval=14)
th = input(title="ADX Threshold", type=input.integer, defval=20)
adxval = input(title="ADX Momemtum Value", type=input.integer, defval=25)     



// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0

// ********** Supporting functions - End **********


// ********** Strategy - Start **********

[superTrend, dir] = supertrend(i_multiplier, i_atrPeriod)

colResistance = dir == 1 and dir == dir[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = dir == -1 and dir == dir[1] ? color.new(color.green, 0) : color.new(color.green, 100)


// Super Trend Long/short condition
stlong = close > superTrend
stshort = close < superTrend



// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)

//Vol Confirmation
vol = volume > volume[1]


//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active




TrueRange = max(max(high - low, abs(high - nz(close[1]))), abs(low - nz(close[1])))
DirectionalMovementPlus = high - nz(high[1]) > nz(low[1]) - low ? max(high - nz(high[1]), 0) : 0
DirectionalMovementMinus = nz(low[1]) - low > high - nz(high[1]) ? max(nz(low[1]) - low, 0) : 0


SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - nz(SmoothedTrueRange[1]) / len + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - 
   nz(SmoothedDirectionalMovementPlus[1]) / len + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - 
   nz(SmoothedDirectionalMovementMinus[1]) / len + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus) * 100
ADX = sma(DX, len)

// a = plot(DIPlus, color=color.green, title="DI+", transp=100)
// b = plot(DIMinus, color=color.red, title="DI-", transp=100)

//Final Long/Short Condition
longCondition = stlong and redCandle and vol and ADX>adxval
shortCondition = stshort and greenCandle and vol and ADX >adxval



//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id",stop=stop_level, limit=profit_level)
    


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
    
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********