Estrategia de inversión de impulso

El autor:¿ Qué pasa?, Fecha: 2023-11-13 10:02:25
Las etiquetas:

img

Resumen general

Esta estrategia tiene como objetivo detectar el cambio porcentual de los precios de las acciones dentro de un cierto período de tiempo y generar señales comerciales cuando se excede un umbral.

Estrategia lógica

  1. El parámetro de entrada x representa el número de períodos de candlestick a comprobar, con un valor predeterminado de 5 para velas de 5 minutos.

  2. Calcular el cambio porcentual del precio de cierre actual en relación con el precio de cierre de x períodos anteriores, guardado como trueChange1 y trueChange2.

  3. Los parámetros de entrada percentChangePos y percentChangeNeg representan el cambio porcentual de umbral, con valores predeterminados del 0,4% y del -0,4%.

  4. Cuando trueChange1 es mayor que percentChangePos, se genera una señal de compra. Cuando trueChange2 es menor que percentChangeNeg, se genera una señal de venta.

  5. Añadir texto y colores de fondo para el estado de compra y venta.

  6. Establezca reglas de entrada y salida basadas en las señales.

  7. Configurar alertas y dibujos.

Ventajas

  1. Utilice el cambio porcentual en lugar del cambio de precio absoluto, adaptable a diferentes existencias.

  2. Establecer flexiblemente umbrales de porcentaje positivo y negativo para identificar las rupturas de las bandas de Bollinger.

  3. Período de detección ajustable para identificar los cambios de tendencia en diferentes plazos.

  4. Alertas configurables para captar señales importantes.

  5. Lógica de señal simple y directa, fácil de entender y usar.

  6. Captar reversiones a corto plazo en el mercado abierto.

Los riesgos

  1. El cambio porcentual no determina la dirección de la tendencia, puede generar señales engañosas.

  2. Los parámetros predeterminados pueden no ser adecuados para todas las existencias, se requiere un ajuste específico.

  3. No hay stop loss en su lugar, no puede limitar las pérdidas.

  4. Señales frecuentes, costos de negociación potencialmente altos.

  5. Incapaz de determinar la estructura del mercado, propenso a los golpes en los mercados variados.

Soluciones:

  1. Combinar con indicadores de tendencia como la regresión lineal para determinar la tendencia general.

  2. Optimizar los parámetros basados en las características de las existencias.

  3. Implementar el stop loss adecuado.

  4. Filtrar las señales para evitar el exceso de negociación.

  5. Medir la estructura del mercado desde los marcos de tiempo más altos para evitar los problemas comerciales.

Mejoras

  1. Agregue mecanismos de stop loss como el stop loss de seguimiento para limitar las pérdidas.

  2. Añadir condiciones de filtro como el volumen, promedios móviles para evitar golpes.

  3. Optimice las reglas de entrada y salida con indicadores como el MACD.

  4. Utilice el aprendizaje automático para optimizar los parámetros.

  5. Incorporar análisis de la estructura del mercado para evitar problemas.

  6. Parámetros establecidos dinámicamente en función de la volatilidad y la liquidez.

  7. Combinar con el análisis de marcos de tiempo más altos para determinar la tendencia general.

Resumen de las actividades

Esta estrategia genera operaciones comparando el cambio porcentual de precios con umbrales preestablecidos, lo que la convierte en una estrategia de reversión media a corto plazo. Las ventajas se encuentran en su simplicidad, flexibilidad y capacidad para capturar movimientos repentinos del mercado. Los inconvenientes son los riesgos que se pueden abordar a través de optimizaciones y un uso adecuado con análisis de tendencias y gestión de riesgos. En general, tiene una lógica sólida y puede ser una estrategia comercial efectiva a corto plazo cuando se mejora adecuadamente.


/*backtest
start: 2023-10-13 00:00:00
end: 2023-11-12 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// created by Oliver
strategy("Percentage Change strategy w/BG color", overlay=true, scale=scale.none, precision=2)

x = input(5, title = 'x candles difference', minval = 1)
trueChange1 = (close - close[x]) / close[x] * 100
percentChangePos = input(0.4, title="Percent Change")

//if (percentChange > trueChange) then Signal  

plotChar1 = if percentChangePos > trueChange1
    false
else
    true

plotchar(series=plotChar1, char='🥶', color=color.green, location=location.top, size = size.tiny )

trueChange2 = (close - close[x]) / close[x] * 100
percentChangeNeg = input(-0.4, title="Percent Change")

plotChar2 = if percentChangeNeg < trueChange2
    false
else
    true
plotchar(series=plotChar2, char='🥵', color=color.red, location=location.top, size = size.tiny)

//------------------------------------------------------------------------
UpColor() => percentChangePos < trueChange1
DownColor() => percentChangeNeg > trueChange2

//Up = percentChangePos < trueChange1
//Down = percentChangeNeg > trueChange2


col = percentChangePos < trueChange1 ? color.lime : percentChangeNeg > trueChange2 ? color.red : color.white
//--------
condColor = percentChangePos < trueChange1 ? color.new(color.lime,50) : percentChangeNeg > trueChange2 ? color.new(color.red,50) : na
//c_lineColor = condUp ? color.new(color.green, 97) : condDn ? color.new(color.maroon, 97) : na
//barcolor(Up ? color.blue : Down ? color.yellow : color.gray, transp=70)

//Background Highlights
//bgcolor(condColor, transp=70)


//---------

barcolor(UpColor() ? color.lime: DownColor() ? color.red : na)
bgcolor(UpColor() ? color.lime: DownColor() ? color.red : na)

//------------------------------------------------------------------------

buy = percentChangePos < trueChange1
sell = percentChangeNeg > trueChange2


//------------------------------------------------------------------------
/////////////// Alerts /////////////// 
alertcondition(buy, title='buy', message='Buy')
alertcondition(sell, title='sell', message='Sell')

//-------------------------------------------------

if (buy)
    strategy.entry("My Long Entry Id", strategy.long)

if (sell)
    strategy.entry("My Short Entry Id", strategy.short)


/////////////////// Plotting //////////////////////// 
plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)


Más.