Estrategia de filtración del impulso de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-12 12:35:05
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación de promedio móvil construida con técnicas de filtración de impulso. Establece un umbral para los cambios de precios para filtrar pequeñas fluctuaciones de precios, seleccionando solo grandes movimientos de precios para el cálculo, mejorando así la estabilidad de la estrategia.

Estrategia lógica

El indicador central de esta estrategia es el Oscilador de Momento de Chande (CMO) filtrado por el momento. El Oscilador de Momento de Chande es un tipo de indicador de momento que juzga el momento de las tendencias calculando la relación de la suma de los valores absolutos de los días de subidas y bajadas a la suma de los aumentos y caídas de precios. Esta estrategia lo mejora estableciendo un umbral mínimo de cambios de precios llamado Filtro. Solo cuando el cambio de precio exceda este umbral participará en el cálculo de CMO. Esto filtra muchas pequeñas fluctuaciones en el mercado y hace que el indicador sea más estable y confiable.

El indicador de velocidad de entrada es un indicador de velocidad de entrada que se utiliza para calcular la velocidad de entrada de las señales.

Análisis de ventajas

Esta es una estrategia de seguimiento de tendencias muy estable y confiable. Al adoptar técnicas de filtrado de impulso, puede filtrar efectivamente el ruido del mercado y evitar quedar atrapado. La estrategia tiene un gran espacio de optimización de parámetros, parámetros como Filter, TopBand, LowBand, etc. se pueden ajustar para optimizar el indicador de estrategia. También tiene una funcionalidad de negociación inversa que puede adaptarse flexiblemente a diferentes entornos de mercado.

Análisis de riesgos

La estrategia se basa principalmente en el seguimiento de tendencias, por lo que es propensa a generar señales falsas y pérdidas en los mercados de rango. Además, la optimización inadecuada de parámetros también puede conducir a una frecuencia de negociación excesiva o señales inestables. Finalmente, el uso inadecuado del parámetro de negociación inversa puede conducir a pérdidas innecesarias.

Para reducir estos riesgos, los parámetros deben optimizarse razonablemente para que las señales sean más estables y confiables; evitar el uso de esta estrategia en mercados de rango, elegir herramientas de estrategia más adecuadas; utilizar funciones de negociación inversa con precaución, evitar habilitarla cuando la optimización de parámetros no es ideal.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Optimizar el valor del parámetro de filtro, asegurarse de filtrar el ruido del mercado manteniendo la frecuencia de negociación no demasiado baja.

  2. Optimizar el rango de parámetros de TopBand y LowBand para que coincida con el rango de volatilidad del mercado para evitar señales falsas.

  3. Utilice el análisis de marcha adelante y otros métodos para optimizar dinámicamente los parámetros para que los parámetros de la estrategia se adapten a los cambios del mercado.

  4. Añadir una lógica de stop loss y establecer puntos de stop loss razonables para controlar las pérdidas.

  5. Filtrar con otros indicadores técnicos como MACD, KD para evitar operaciones falsas en mercados que no tienen tendencia.

Resumen de las actividades

Esta es una estrategia muy práctica de seguimiento de tendencias. Adopta técnicas de filtrado de impulso para frenar eficazmente el ruido del mercado y hacer señales más claras y confiables. A través de la optimización de parámetros y la optimización lógica, se puede sintonizar en una herramienta de negociación cuantitativa confiable y estable. Aún así, es necesario tener en cuenta los riesgos de su uso en mercados de rango y optimización inadecuada de parámetros. En general, esta es una plantilla de estrategia con grandes perspectivas de aplicación.


/*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")


Más.