La estrategia 3 10 Oscillator Profile Flagging genera señales de trading mediante el cálculo de la diferencia entre las medias móviles simples de 3 y 10 días como indicador MACD y la combinación de análisis de volumen para determinar la fortaleza de compradores y vendedores en el mercado.
El indicador central de esta estrategia es el MACD, que consiste en una línea de promedio móvil rápido y una línea de promedio móvil lento. La línea rápida es una media móvil simple de 3 días y la línea lenta es una media móvil simple de 10 días. La diferencia entre ellos forma el histograma MACD. Cuando la línea rápida cruza por encima de la línea lenta desde abajo, representa un fortalecimiento del poder adquisitivo y genera una señal de compra. Por el contrario, cuando la línea rápida cruza por debajo de la línea lenta desde arriba, el poder de venta se fortalece y se genera una señal de venta.
Además, la estrategia incorpora el análisis de la fuerza relativa del volumen de compra y venta basado en la relación de tamaño entre el volumen de compra y el volumen de venta de cada candelabro. El método específico es: Volumen de compra = Volumen x (Cerrar - Bajo) ÷ (Alto - Bajo); Volumen de venta = Volumen x (Alto - Cerrar) ÷ (Alto - Bajo). Si el volumen de compra es significativamente mayor que el volumen de venta, significa que el candelabro cierra con un poder de compra relativamente fuerte, que es una señal de compra.
Al combinar el indicador MACD y el análisis de volumen, la estrategia puede determinar efectivamente la relación de oferta y demanda y la dirección pendiente en el mercado. Al mismo tiempo, la estrategia también verifica condiciones tales como si el precio está en un área clave, si el MACD tiene una reversión efectiva y si la diferencia entre el volumen de compra y venta es lo suficientemente grande, para filtrar algo de ruido impulsivo y garantizar una entrada de alta probabilidad y alta eficiencia.
La mayor ventaja de esta estrategia es que incorpora plenamente el juicio de la relación de oferta y demanda del mercado. El histograma MACD puede determinar efectivamente el contraste entre el poder de compra y venta y la dirección pendiente en el mercado; el análisis de la diferencia de volumen puede identificar claramente el poder dominante entre compradores y vendedores. Al mismo tiempo, la estrategia establece múltiples condiciones para la revisión para evitar perseguir aumentos y vencer caídas, lo que garantiza una probabilidad relativamente alta de ganancia. Además, el mecanismo de stop profit y stop loss incorporado de la estrategia también puede limitar pérdidas individuales.
Los riesgos anteriores pueden evitarse determinando con precisión la tendencia principal del mercado para evitar el uso de esta estrategia durante las fluctuaciones del mercado; prestando atención a la información del mercado para identificar volúmenes de negociación inflados artificialmente; ajustando cuidadosamente los parámetros o consultando a profesionales.
La estrategia se puede optimizar en los siguientes aspectos:
En resumen, se puede ver que hay un amplio margen para optimizar esta estrategia. Los inversores pueden hacer los ajustes y mejoras apropiados de acuerdo con su propia situación y condiciones del mercado para lograr una mejor eficacia de la estrategia.
La estrategia 3 10 Oscillator Profile Flagging integra con éxito las ideas del análisis MACD, la comparación de volumen y la verificación de filtrado multicondicional. Tiene fuertes capacidades para determinar las relaciones de oferta y demanda y las direcciones pendientes del mercado, al tiempo que controla los riesgos a través de mecanismos de stop profit y stop loss incorporados. La estrategia tiene un gran espacio de optimización y amplias perspectivas de aplicación que merecen una consideración clave e investigación en profundidad para los inversores.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("3 10 Oscillator Profile Flagging", shorttitle="3 10 Oscillator Profile Flagging", overlay=true) signalBiasValue = input(title="Signal Bias", defval=0.26) macdBiasValue = input(title="MACD Bias", defval=0.8) shortLookBack = input( title="Short LookBack", defval=3) longLookBack = input( title="Long LookBack", defval=10) takeProfit = input( title="Take Profit", defval=0.75) stopLoss = input( title="Stop Loss", defval=0.5) fast_ma = ta.sma(close, 3) slow_ma = ta.sma(close, 10) macd = fast_ma - slow_ma signal = ta.sma(macd, 16) hline(0, "Zero Line", color = color.black) buyVolume = volume*((close-low)/(high-low)) sellVolume = volume*((high-close)/(high-low)) buyVolSlope = buyVolume - buyVolume[1] sellVolSlope = sellVolume - sellVolume[1] signalSlope = ( signal - signal[1] ) macdSlope = ( macd - macd[1] ) //plot(macdSlope, color=color.red, title="Total Volume") //plot(signalSlope, color=color.green, title="Total Volume") intrabarRange = high - low getLookBackSlope(lookBack) => signal - signal[lookBack] getBuyerVolBias(lookBack) => j = 0 for i = 1 to lookBack if buyVolume[i] > sellVolume[i] j += 1 j getSellerVolBias(lookBack) => j = 0 for i = 1 to lookBack if sellVolume[i] > buyVolume[i] j += 1 j getVolBias(lookBack) => float b = 0 float s = 0 for i = 1 to lookBack b += buyVolume[i] s += sellVolume[i] b > s getSignalBuyerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] > signalBiasValue j += 1 j getSignalSellerBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < ( 0 - signalBiasValue ) j += 1 j getSignalNoBias(lookBack) => j = 0 for i = 1 to lookBack if signal[i] < signalBiasValue and signal[i] > ( 0 - signalBiasValue ) j += 1 j getPriceRising(lookBack) => j = 0 for i = 1 to lookBack if close[i] > close[i + 1] j += 1 j getPriceFalling(lookBack) => j = 0 for i = 1 to lookBack if close[i] < close[i + 1] j += 1 j getRangeNarrowing(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] < intrabarRange[i + 1] j+= 1 j getRangeBroadening(lookBack) => j = 0 for i = 1 to lookBack if intrabarRange[i] > intrabarRange[i + 1] j+= 1 j bool isNegativeSignalReversal = signalSlope < 0 and signalSlope[1] > 0 bool isNegativeMacdReversal = macdSlope < 0 and macdSlope[1] > 0 bool isPositiveSignalReversal = signalSlope > 0 and signalSlope[1] < 0 bool isPositiveMacdReversal = macdSlope > 0 and macdSlope[1] < 0 bool hasBearInversion = signalSlope > 0 and macdSlope < 0 bool hasBullInversion = signalSlope < 0 and macdSlope > 0 bool hasSignalBias = math.abs(signal) >= signalBiasValue bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0 - signalBiasValue ) bool hasSignalBuyerBias = hasSignalBias and signal > 0 bool hasSignalSellerBias = hasSignalBias and signal < 0 bool hasPositiveMACDBias = macd > macdBiasValue bool hasNegativeMACDBias = macd < ( 0 - macdBiasValue ) bool hasBullAntiPattern = ta.crossunder(macd, signal) bool hasBearAntiPattern = ta.crossover(macd, signal) bool hasSignificantBuyerVolBias = buyVolume > ( sellVolume * 1.5 ) bool hasSignificantSellerVolBias = sellVolume > ( buyVolume * 1.5 ) // 7.48 Profit 52.5% if ( hasSignificantBuyerVolBias and getPriceRising(shortLookBack) == shortLookBack and getBuyerVolBias(shortLookBack) == shortLookBack and hasPositiveMACDBias and hasBullInversion) strategy.entry("Short1", strategy.short, qty=10) strategy.exit("TPS", "Short1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss) // 32.53 Profit 47.91% if ( getPriceFalling(shortLookBack) and (getVolBias(shortLookBack) == false) and signalSlope < 0 and hasSignalSellerBias) strategy.entry("Long1", strategy.long, qty=10) strategy.exit("TPS", "Long1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)