Estrategia de seguimiento de tendencias basada en el canal de precios y la media móvil


Fecha de creación: 2024-02-06 09:46:23 Última modificación: 2024-02-06 09:46:23
Copiar: 0 Número de Visitas: 600
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en el canal de precios y la media móvil

Descripción general

La estrategia permite la identificación y el seguimiento de las tendencias mediante la construcción de un canal de precios, el cálculo de la distancia de los precios de la línea central, y la combinación de señales de filtración uniforme. La estrategia produce una señal de transacción cuando los precios se desbordan en el canal.

Principio de estrategia

  1. Construyendo el canal de precios
  • Calcula los máximos y mínimos de los últimos períodos de len
  • La línea central es el promedio de los precios más altos y más bajos
  • La distancia es la desviación absoluta del precio de la línea central
  • Distancia de planeación para subir y bajar de la vía
  1. Juzgar la dirección de las tendencias
  • Cuando el precio está por debajo de la baja, se define como una tendencia a la baja
  • Cuando el precio es más alto que el de arriba, se define como una tendencia al alza
  1. Generación de señales de negociación
  • En una tendencia ascendente, los precios están por debajo del precio de apertura o más bajo cuando se rompe la vía
  • Bajo la tendencia bajista, el precio es más alto que el precio de apertura o se queda en blanco cuando se rompe la vía de salida

Análisis de las ventajas

  1. La tendencia de la línea media-larga
  2. Combinación de señales de ruptura para evitar que las transacciones sean inactivas durante una zona de temblor
  3. Parámetros personalizables para diferentes variedades

Análisis de riesgos

  1. En el contexto de la tendencia a la convulsión, es posible que se produzcan pérdidas menores
  2. Los parámetros mal configurados pueden perder la inversión de tendencia
  3. La frecuencia de las transacciones es importante para evitar el exceso de transacciones

Dirección de optimización

  1. Combinación con otros indicadores para filtrar señales
  2. Ajuste dinámico de los parámetros del canal de precios
  3. Adhesión al mecanismo de detención de pérdidas y optimización de la gestión de fondos

Resumir

La estrategia es robusta en su conjunto y puede seguir de manera efectiva las tendencias medianas y largas, al tiempo que genera señales de comercio en combinación con las rupturas de tendencias. La estrategia puede mejorarse aún más a través de la optimización de parámetros y el filtrado de señales, lo que la hace adaptada a más variedades y entornos de mercado.

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


//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)