Múltiples ciclos de tiempo MACD estrategia de inversión cruzada en el eje cero

El autor:¿ Qué pasa?, Fecha: 2024-02-18 15:27:21
Las etiquetas:

多时间周期MACD零轴交叉反转策略

Resumen

Múltiples ciclos de tiempo MACD estrategia de inversión cruzada de eje cero mediante el cálculo de indicadores MACD de diferentes ciclos, la identificación de señales de que el precio puede invertirse, la adopción de un método de seguimiento de la tendencia de stop-loss, en busca de una mayor eficiencia de uso de capital.

Principios estratégicos

La estrategia calcula al mismo tiempo las medias móviles del SMA de 3 ciclos y 10 ciclos, construye una línea rápida y lenta, y luego calcula el indicador MACD y la línea de señal. Cuando la línea rápida y la línea de señal se cruzan en el eje cero hacia arriba o hacia abajo, indica que el precio alcanza un punto crítico y que puede haber un cambio. Además, la estrategia también combina el juicio de estado de espacio de la cantidad de transacciones, el indicador RSI, etc., para identificar la fiabilidad de la señal de cambio.

En concreto, la estrategia es invertir el precio mediante los siguientes métodos: 1. El cruce del eje cero del MACD, que indica que el precio ha alcanzado un punto crítico
2. Las presiones de compra y venta determinan la situación de la mayoría de los vacíos.
3. El indicador RSI observa la tendencia bajista, combinada con el cambio en la inclinación del MACD, para determinar la intensidad de la señal de inversión
4. La línea rápida y la línea de señal se cruzan en sentido contrario para formar una señal inversa.

Cuando la fiabilidad de la señal de reversión es alta, la estrategia es entrar en juego con un método de seguimiento de tendencias para buscar mayores ganancias.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El análisis de múltiples indicadores hace más fiables las señales de inversión
  2. Punto de inflexión con una alta precisión mediante la determinación cruzada del eje cero MACD
  3. Indicadores de RSI y juzgamiento de transacciones auxiliares, confiabilidad alta
  4. Tendencias de seguimiento de pérdidas y búsqueda de una mayor eficiencia en el uso de los fondos

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Es más probable que el MACD emita señales falsas y es más fácil ser atrapado.
  2. En el proceso de intercambio de espacio, hay una mayor probabilidad de que el deterioro sea atravesado.
  3. La configuración incorrecta de los parámetros puede conducir a operaciones demasiado frecuentes, aumentando los costos de transacción y la pérdida de puntos de deslizamiento

Los riesgos pueden reducirse mediante: 1. Relajar adecuadamente la amplitud de los daños para evitar que se cubran
2. Optimizar los parámetros y reducir la frecuencia de las transacciones
3. Solo considere la entrada cerca de los puntos de resistencia de soporte críticos

Dirección de optimización

La estrategia también puede ser optimizada para incluir:

  1. Aumentar los algoritmos de aprendizaje automático para ayudar a determinar la fiabilidad de la señal de inversión
  2. Aumentar los indicadores de emoción para determinar el espacio psicológico
  3. Combinado con el soporte de resistencias clave, mejora la precisión de entrada
  4. Optimizar la forma de detener los daños para mejorar aún más la eficiencia en el uso de los fondos
  5. Prueba la combinación óptima de parámetros para reducir la frecuencia de las transacciones

Resumen

La estrategia de inversión por eje cero MACD de múltiples ciclos de tiempo, que tiene en cuenta información de múltiples dimensiones como el precio, el volumen de transacción y los indicadores de volatilidad, determina el momento de entrada en el reverso a través de la determinación de múltiples indicadores, para obtener mejores ganancias en el mercado de reversión después de que la ganancia sea suficiente. Se espera que la estrategia se perfeccione aún más a través de métodos como el aprendizaje automático y la optimización de bits clave, para reducir la frecuencia y el riesgo de las transacciones y aumentar el margen de ganancia.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("3 10.0 Oscillator Profile Flagging", shorttitle="3 10.0 Oscillator Profile Flagging", overlay=false)

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.0)
takeProfit = input( title="Take Profit", defval=0.8)
stopLoss = input( title="Stop Loss", defval=0.75)

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(macd, color=color.blue, title="Total Volume")
plot(signal, color=color.orange, title="Total Volume")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]

getRSISlopeChange(lookBack) =>
    j = 0
    for i = 0 to lookBack
        if ( rsi[i] - rsi[ i + 1 ] ) > -5
            j += 1
    j

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.0
    float s = 0.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.0 - signalBiasValue )
            j += 1
    j

getSignalNoBias(lookBack) =>
    j = 0
    for i = 1 to lookBack
        if signal[i] < signalBiasValue and signal[i] > ( 0.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.0 and signalSlope[1] > 0.0
bool isNegativeMacdReversal = macdSlope < 0.0 and macdSlope[1] > 0.0

bool isPositiveSignalReversal = signalSlope > 0.0 and signalSlope[1] < 0.0
bool isPositiveMacdReversal = macdSlope > 0.0 and macdSlope[1] < 0.0

bool hasBearInversion = signalSlope > 0.0 and macdSlope < 0.0
bool hasBullInversion = signalSlope < 0.0 and macdSlope > 0.0

bool hasSignalBias = math.abs(signal) >= signalBiasValue
bool hasNoSignalBias = signal < signalBiasValue and signal > ( 0.0 - signalBiasValue )

bool hasSignalBuyerBias = hasSignalBias and signal > 0.0
bool hasSignalSellerBias = hasSignalBias and signal < 0.0

bool hasPositiveMACDBias = macd > macdBiasValue
bool hasNegativeMACDBias = macd < ( 0.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 )

// 393.60 Profit 52.26% 15m
if ( hasBullInversion and rsiSlope > 1.5 and volume > 300000.0 )
    strategy.entry("15C1", strategy.long, qty=10.0)
strategy.exit("TPS", "15C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 356.10 Profit 51,45% 15m
if ( getVolBias(shortLookBack) == false and rsiSlope > 3.0 and signalSlope > 0)
    strategy.entry("15C2", strategy.long, qty=10.0)
strategy.exit("TPS", "15C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 124 Profit 52% 15m
if ( rsiSlope < -11.25 and macdSlope < 0.0 and signalSlope < 0.0)
    strategy.entry("15P1", strategy.short, qty=10.0)
strategy.exit("TPS", "15P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

// 455.40 Profit 49% 15m
if ( math.abs(math.abs(macd) - math.abs(signal)) < .1 and buyVolume > sellVolume and hasBullInversion)
    strategy.entry("15P2", strategy.short, qty=10.0)
strategy.exit("TPS", "15P2", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)

Más contenido