Estrategia de seguimiento de tendencia de media móvil adaptativa de Kanfman


Fecha de creación: 2023-12-13 17:25:33 Última modificación: 2023-12-13 17:25:33
Copiar: 0 Número de Visitas: 737
1
Seguir
1213
Seguidores

Estrategia de seguimiento de tendencia de media móvil adaptativa de Kanfman

Descripción general

La estrategia utiliza el movimiento automático de movimiento de Kaufman (KAMA) para determinar la dirección de la tendencia, para capturar la tendencia de la línea media-larga. Hacer más cuando la línea KAMA está en alza y hacer menos cuando la línea KAMA está en baja. La estrategia combina la función de seguimiento de tendencias de las medias móviles y la característica de ajuste dinámico de la media automática de Kaufman para mejorar la calidad de la señal de negociación.

Principio de estrategia

El indicador central de esta estrategia es el movimiento automático de la media de adaptación de Kafman (KAMA). El KAMA ajusta su propio factor de ponderación de forma dinámica en función del tamaño de las fluctuaciones del mercado, lo que mejora la sensibilidad de la curva. En concreto, la curva de KAMA se vuelve más suave cuando las fluctuaciones del mercado aumentan; la curva de KAMA se vuelve más sensible cuando las fluctuaciones del mercado disminuyen.

La estrategia primero calcula el valor de KAMA. Luego, se determina el estado de la línea KAMA que está abierta: se produce una señal de compra cuando el precio de cierre se cruza por encima de la línea KAMA; se produce una señal de venta cuando el precio de cierre se cruza por debajo de la línea KAMA.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que utiliza el indicador KAMA para determinar tendencias. El indicador KAMA tiene una gran capacidad de seguimiento de tendencias en sí mismo, ya que puede ajustar dinámicamente los parámetros para adaptarse a las condiciones del mercado, lo que genera una señal de negociación más confiable. En comparación con las medias móviles simples y las medias móviles del índice, el indicador KAMA puede identificar mejor las tendencias y reducir las falsas señales.

Además, la estrategia utiliza solo el estado de vacío de KAMA para juzgar la dirección de la tendencia. No se establecen condiciones de filtrado adicionales, lo que simplifica la lógica de la estrategia y también hace que haya menos parámetros, lo que reduce el riesgo de optimización excesiva, lo que favorece la estabilidad de los parámetros y la adaptabilidad entre mercados.

Análisis de riesgos

El principal riesgo de esta estrategia es que el propio KAMA es un indicador de retraso, y la tendencia del mercado puede haberse invertido cuando se producen las señales de negociación. Esto puede dar lugar a un riesgo de stop loss. Además, la curva KAMA también puede tener un estado de oscilación a corto plazo, lo que puede generar señales erróneas frecuentes.

Para reducir el riesgo, se puede considerar la combinación de otros indicadores para confirmar las señales de negociación, como el indicador de volatilidad, el indicador de volumen de transacciones, etc. También se pueden ajustar los parámetros adecuadamente, Identification hace que la curva KAMA sea más suave.

Dirección de optimización

Hay mucho espacio para optimizar esta estrategia, principalmente en los siguientes aspectos:

  1. Filtración de la señal en combinación con otros indicadores, como MACD, indicadores de conmoción, etc., para mejorar la calidad de la señal

  2. Incrementar las estrategias de stop loss, utilizando el stop loss móvil o el stop loss de la curva de saldo para controlar las pérdidas individuales

  3. Optimizar los parámetros para que KAMA capte las tendencias de manera más eficiente

  4. Aumentar el análisis de múltiples períodos de tiempo para determinar la dirección de las grandes tendencias a través de períodos de tiempo más largos

  5. Optimización automática de parámetros para adaptarlos a diferentes variedades mediante métodos de aprendizaje automático

Resumir

La estrategia tiene una idea general clara, determina la dirección de la tendencia a través del indicador KAMA, tiene ventajas como una fuerte capacidad de seguimiento de tendencias, una lógica simple y menos parámetros. Pero también existe el riesgo de que la identificación tardía de la tendencia cambie. Se puede optimizar la estrategia de varias maneras para que sea más efectiva y más adaptable.

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

//Noro
//2019

//@version=3
strategy(title = "Noro's KAMA Strategy", shorttitle="KAMA str", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
length = input(3, minval = 1) 
fast = input(2, minval = 1)
slow = input(30, minval = 1)
src = input(title = "Source",  defval = close)
type = input(defval = "Trend", options = ["Trend", "Crossing"], title = "Type")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//KAMA
volatility = sum(abs(src-src[1]), length)
change = abs(src[1]-src[length])
er = iff(volatility != 0, change/volatility, 0)
fastSC = 2/(fast+1)
slowSC = 2/(slow+1)
sc = pow((er*(fastSC-slowSC))+slowSC, 2)
bid = hl2
kama = 0.0
kama := nz(kama[1])+(sc*(bid-nz(kama[1])))
plot(kama, color = black, title = "KAMA", trackprice = false, style = line, linewidth = 3)

//Signals
up = false
dn = false
up := (type == "Crossing" and kama > kama[1]) or (type == "Trend" and close > kama)
dn := (type == "Crossing" and kama < kama[1]) or (type == "Trend" and close < kama)

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if dn
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))