La estrategia de los indicadores de movimiento de la agregación utiliza los indicadores de movimiento de la agregación para juzgar el flujo de fondos en el mercado y capturar los cambios de tendencia en el mercado. La estrategia combina las medias móviles rápidas y las medias móviles lentas para formar una curva de indicadores, compras por tendencia en la curva y ventas por tendencia debajo de la curva, para seguir la tendencia del mercado.
La estrategia se basa en el índice de movimiento de agregación, que mejora el índice de William, sustituyendo el precio de apertura por el promedio de los precios más altos y más bajos del día para resolver el problema de la falta de precios de apertura. La fórmula del indicador es:
Línea de movimiento de aglutinación = promedio móvil del índice de movimiento de aglutinación rápida - promedio móvil del índice de movimiento de aglutinación lenta
La fórmula para calcular el índice de movilidad agregada es:
Indice de movimiento de agregación = (precio de cierre - precio de apertura) / (precio más alto - precio más bajo) * volumen de transacción
Debido a la ausencia de precio de apertura, se utiliza:
Indice de movimiento de aglutinación = (precio de cierre - (precio más alto + precio más bajo) / 2) / (precio más alto - precio más bajo) * volumen de transacción
El indicador toma el diferencial entre la media móvil rápida y la media móvil lenta como la línea de medida de agregación. Cuando la línea rápida atraviesa la línea lenta, es una señal de compra, y cuando la línea baja lo hace, es una señal de venta.
El objetivo de la campaña es:
La estrategia tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
El riesgo puede ser controlado mediante la optimización de los parámetros y la combinación de otros indicadores.
La estrategia puede ser optimizada en las siguientes direcciones:
La estrategia de indicadores de la dinámica agregada es más estable y confiable en su conjunto, y puede equilibrar los beneficios y los riesgos mediante el ajuste de los parámetros. La adición de condiciones de filtración y el stop loss puede mejorar aún más la estabilidad de la estrategia. La estrategia es adecuada para seguir un mercado de tendencia y puede obtener un efecto satisfactorio de la estrategia optimizando la personalización.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/09/2017
// Indicator plots Money Flow Indicator (Chaikin). This indicator looks
// to improve on Larry William's Accumulation Distribution formula that
// compared the closing price with the opening price. In the early 1970's,
// opening prices for stocks stopped being transmitted by the exchanges.
// This made it difficult to calculate Williams' formula. The Chaikin
// Oscillator uses the average price of the bar calculated as follows
// (High + Low) /2 instead of the Open.
// The indicator subtracts a 10 period exponential moving average of the
// AccumDist function from a 3 period exponential moving average of the
// AccumDist function.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Money Flow Indicator (Chaikin Oscillator)", shorttitle="MFI")
Fast = input(3, minval=1)
Slow = input(10, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=hline.style_dashed)
lenMax = max(Fast, Slow)
lenMin = min(Fast, Slow)
xDiv = (high - low) * volume
SumMax = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMax)
SumMin = sum(iff(xDiv > 0, (close - open) / (high - low) * volume , 0) , lenMin)
emaMax = ema(SumMax, lenMax)
emaMin = ema(SumMin, lenMin)
nRes = emaMax - emaMin
pos = iff(nRes > 0, 1,
iff(nRes < 0, -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="RMI")