Estrategia de media móvil filtrada por momentum


Fecha de creación: 2023-12-12 12:35:05 Última modificación: 2023-12-12 12:35:05
Copiar: 0 Número de Visitas: 415
1
Seguir
1212
Seguidores

Estrategia de media móvil filtrada por momentum

Descripción general

Se trata de una estrategia de comercio de medias móviles construida utilizando la tecnología de filtración dinámica. Filtra las pequeñas fluctuaciones de los precios mediante la configuración de un umbral de cambio de precio, elige solo la participación en el cálculo de los cambios de precio más grandes, lo que mejora la estabilidad de la estrategia.

Principio de estrategia

El indicador central de esta estrategia es el indicador de oscilación de la dinámica de Cande filtrado por la dinámica (CMO). El indicador de oscilación de Cande es un tipo de indicador de dinámica que determina la dinámica de la dinámica mediante el cálculo de la suma de los valores absolutos de los días libres y la suma de los valores de las diferencias entre las caídas y las subidas de los precios. La estrategia se ha mejorado con un filtro de parámetros de mínimo umbral de cambio de precio, que solo participa en el cálculo de CMO cuando el cambio de precio supera este umbral.

Sobre la base de los indicadores calculados, se establece un TopBand en línea alta y un LowBand en línea baja, que genera una señal de transacción cuando el indicador supera estos dos límites. Finalmente, el parámetro de entrada inversa inversa puede invertir la señal original y realizar la operación inversa.

Análisis de las ventajas

Es una estrategia de seguimiento de tendencias muy estable y confiable, que puede filtrar el ruido del mercado de manera efectiva y evitar el arbitraje debido a la tecnología de filtración dinámica. El espacio para optimizar los parámetros de la estrategia es amplio, puede optimizar los indicadores de la estrategia ajustando parámetros como Filter, TopBand y LowBand.

Análisis de riesgos

La estrategia se basa principalmente en el seguimiento de tendencias, por lo que es fácil generar señales erróneas y pérdidas en el mercado de liquidación. Además, la optimización inadecuada de los parámetros también puede causar una frecuencia de negociación excesiva o una señal inestable. Finalmente, el uso inadecuado de los parámetros de negociación inversa puede causar pérdidas innecesarias.

Para reducir estos riesgos, se debe optimizar razonablemente los parámetros para que la señal sea más estable y confiable; evitar el uso de esta estrategia en la liquidación del mercado y elegir un instrumento estratégico más adecuado; usar con cuidado la función de negociación inversa, evitar activar cuando la optimización de los parámetros no es buena.

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Optimizar los valores de los parámetros de filtro, asegurando que la frecuencia de las transacciones no sea demasiado baja, al tiempo que se filtra el ruido del mercado.

  2. Optimizar el rango de parámetros de TopBand y LowBand para que coincida con la amplitud de las fluctuaciones del mercado y evitar señales erróneas.

  3. Utiliza métodos como el análisis de marcha hacia adelante para optimizar dinámicamente los parámetros de la estrategia y adaptarlos a los cambios en el mercado.

  4. Aumentar la lógica de stop loss y establecer un punto de parada razonable para controlar las pérdidas.

  5. En combinación con las fluctuaciones de otros indicadores, como el MACD, el KD, etc., se evita el error de negociación en el mercado fuera de tendencia.

Resumir

Esta es una estrategia de seguimiento de tendencias muy práctica. Utiliza la tecnología de filtración dinámica, que puede silenciar eficazmente el ruido del mercado y hacer que la señal sea más clara y confiable. A través de la optimización de parámetros y la optimización lógica, se puede adiestrar como una herramienta de comercio cuantitativa confiable y estable.

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2017
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. CMO was developed by Tushar Chande. A scientist, 
// an inventor, and a respected trading system developer, Mr. Chande developed 
// the CMO to capture what he calls "pure momentum". For more definitive 
// information on the CMO and other indicators we recommend the book The New 
// Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented 
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change, etc. 
// It is most closely related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly 
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
// movements in price are not hidden. Once calculated, smoothing can be applied to the 
// CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
// changes in net momentum using the 0 level. The bounded scale also allows you to 
// conveniently compare values across different securities.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

strategy(title="CMOfilt", shorttitle="CMOfilt")
Length = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMom = close - close[1]
xMomAbs = abs(close - close[1])
xMomFilter = fFilter(xMom, xMomAbs, Filter)
xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
nSum = sum(xMomFilter, Length)
nAbsSum = sum(xMomAbsFilter, Length)
nRes =   100 * nSum / nAbsSum
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1 )
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="CMOfilt")