Estrategia de trading de seguimiento inteligente basada en media móvil doble


Fecha de creación: 2024-02-18 15:58:08 Última modificación: 2024-02-18 15:58:08
Copiar: 2 Número de Visitas: 505
1
Seguir
1617
Seguidores

Estrategia de trading de seguimiento inteligente basada en media móvil doble

Descripción general

La estrategia de seguimiento inteligente de transacciones de doble línea es una estrategia de seguimiento de tendencias basada en la línea media y en un indicador específico. La estrategia utiliza dos configuraciones de parámetros diferentes para construir canales de línea media y, en combinación con los indicadores OTT, establece un límite superior o inferior para el canal, lo que permite un seguimiento inteligente de las tendencias de los precios.

Principio de estrategia

La estrategia se basa en dos promedios móviles y indicadores OTT para construir un canal de adaptación. Los principios son los siguientes:

  1. Calcule la línea rápida MAvg, con el precio de cierre de CLOSE y la línea media personalizada como entrada, con una longitud de 5;

  2. Según MAvg y el porcentaje de configuración, se calcula el límite inferior de la línea larga en el canal y la línea corta en el canal.

  3. Calcular el MT de pérdidas móviles del canal en el indicador OTT, calculando el precio del canal OTT en función del estado de vacío;

  4. Cuando el precio se rompe con el OTT, se genera una señal de transacción.

El proceso de construcción de este canal de adaptación permite a la estrategia seguir la tendencia de los cambios de precios en tiempo real y, a su vez, generar señales de negociación.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. La estructura de canales de doble línea permite capturar las tendencias de los precios de manera efectiva.
  2. Los indicadores OTT establecen la pérdida de movimiento de canal y controlan el riesgo.
  3. La estructura del canal es adaptable y puede responder rápidamente a los cambios en los precios.
  4. La configuración de los parámetros de la estrategia es flexible y se puede optimizar para diferentes variedades y ciclos.

Riesgo estratégico

La estrategia también tiene sus riesgos:

  1. Las líneas biuniversales se desvían fácilmente y pueden generar señales erróneas.
  2. Los parámetros OTT mal configurados pueden ser demasiado radicales o conservadores y afectar el rendimiento de las estrategias.
  3. Las estrategias se basan en indicadores técnicos y no en factores fundamentales.

Para los riesgos mencionados anteriormente, se puede mejorar y optimizar a través de la optimización de parámetros, en combinación con otros indicadores o señales de filtración básicas.

Dirección de optimización de la estrategia

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Optimizar los parámetros de la línea media, seleccionando la combinación de parámetros adecuada para la variedad y el ciclo;
  2. Optimización de los parámetros de ancho de banda del canal para equilibrar la sensibilidad y la estabilidad del seguimiento.
  3. Se trata de un sistema de filtración de señales basado en el volumen de transacciones.
  4. El filtro de la dirección de la transacción se establece de acuerdo con las condiciones básicas.

Resumir

En general, esta estrategia es una estrategia de seguimiento de tendencias basada en canales de doble línea y indicadores OTT, y la idea central es construir canales de adaptación y generar señales de negociación con una ruptura. La estrategia tiene ciertas ventajas, pero también hay espacio para posibles mejoras.

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

//@version=4
strategy(title="BugRA_Trade_Strategy", shorttitle="BugRA_Trade_Strategy", overlay=true)

// Kullanıcı Girdileri
length = input(5, title="Period", minval=1)
percent = input(1, title="Sihirli Yüzde", type=input.float, step=0.1, minval=0)
mav = input(title="Hareketli Ortalama Türü", defval="VAR", options=["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"])
wt_n1 = input(10, title="Kanal Periyodu")
wt_n2 = input(21, title="Averaj Uzunluğu")
src = close

// Tarih Aralığı Girdileri
startDate = input(20200101, title="Başlangıç Tarihi (YYYYMMDD)")
endDate = input(20201231, title="Bitiş Tarihi (YYYYMMDD)")

// Tarih Filtresi Fonksiyonu
isDateInRange() => true

// Özel Fonksiyonlar
Var_Func(src, length) =>
    valpha = 2 / (length + 1)
    vud1 = src > src[1] ? src - src[1] : 0
    vdd1 = src < src[1] ? src[1] - src : 0
    vUD = sum(vud1, length)
    vDD = sum(vdd1, length)
    vCMO = (vUD - vDD) / (vUD + vDD)
    varResult = 0.0
    varResult := nz(valpha * abs(vCMO) * src + (1 - valpha * abs(vCMO)) * nz(varResult[1]))
    varResult

Wwma_Func(src, length) =>
    wwalpha = 1 / length
    wwma = 0.0
    wwma := wwalpha * src + (1 - wwalpha) * nz(wwma[1])
    wwma

Zlema_Func(src, length) =>
    zxLag = floor(length / 2)
    zxEMAData = src + (src - src[zxLag])
    zlema = ema(zxEMAData, length)
    zlema

Tsf_Func(src, length) =>
    lrc = linreg(src, length, 0)
    lrs = lrc - linreg(src, length, 1)
    tsf = lrc + lrs
    tsf

getMA(src, length) =>
    ma = mav == "SMA" ? sma(src, length) :
         mav == "EMA" ? ema(src, length) :
         mav == "WMA" ? wma(src, length) :
         mav == "TMA" ? sma(sma(src, ceil(length / 2)), floor(length / 2) + 1) :
         mav == "VAR" ? Var_Func(src, length) :
         mav == "WWMA" ? Wwma_Func(src, length) :
         mav == "ZLEMA" ? Zlema_Func(src, length) :
         mav == "TSF" ? Tsf_Func(src, length) : na

// Strateji Hesaplamaları
MAvg = getMA(src, length)
fark = MAvg * percent * 0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop = MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT = MAvg > MT ? MT*(200+percent)/200 : MT*(200-percent)/200

plot(OTT, title="BugRA", color=color.rgb(251, 126, 9))

// Alım ve Satım Koşulları
longCondition = crossover(src, OTT) and isDateInRange()
shortCondition = crossunder(src, OTT) and isDateInRange()

// Strateji Giriş ve Çıkış Emirleri
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")