Modelo de tres factores de juicio auxiliar de shock de precios


Fecha de creación: 2024-02-26 15:32:27 Última modificación: 2024-02-26 15:32:27
Copiar: 0 Número de Visitas: 591
1
Seguir
1617
Seguidores

Modelo de tres factores de juicio auxiliar de shock de precios

Descripción general

El modelo de tres factores para determinar la oscilación de los precios es una estrategia de negociación de corto plazo que combina varios factores. La estrategia toma en cuenta los factores de la relación de volumen de transacción, el indicador RSI, el indicador MACD y el indicador de la línea de señal para juzgar el comportamiento de la oscilación de los precios y descubrir oportunidades de negociación de corto plazo.

Principio de estrategia

La lógica central de esta estrategia es la siguiente:

  1. Calcular indicadores técnicos como promedios rápidos y promedios lentos, curvas MACD y líneas de señal;

  2. Para determinar el ratio de transacción, el RSI, el MACD y el indicador de la línea de señal, se utilizarán los siguientes factores:

  3. La evaluación de múltiples factores, que confirman que el momento actual es un período de fluctuación de los precios y que existen oportunidades de compra y venta;

  4. Entra en una posición LONG o SHORT y establece un stop loss.

  5. Cuando el precio alcanza el punto de parada o el punto de pérdida, se cierra la posición.

La estrategia utiliza la flexibilidad de la medición de múltiples factores, como el índice de fluctuación, el indicador RSI, el indicador MACD y el indicador de la línea de señal, para juzgar el comportamiento de la oscilación de los precios y capturar oportunidades de negociación en la línea corta. La combinación de varios factores evita las señales erróneas causadas por un solo factor y mejora la precisión de la señal.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. La mayoría de los usuarios de Internet en todo el mundo están interesados en la tecnología de la información.
  2. El objetivo es aprovechar las características de la oscilación de los precios para aprovechar las oportunidades de corto plazo y obtener grandes ganancias.
  3. El sistema de control automático de pérdidas y control de riesgos.
  4. La lógica de la transacción es simple y clara, fácil de implementar.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. Los algoritmos dependen demasiado de datos históricos y son sensibles a los cambios en el mercado.
  2. La combinación de múltiples factores podría necesitar ser optimizada aún más y podría ser mal interpretada.
  3. El establecimiento de un punto de parada tiene un impacto razonable y directo en la estabilidad de la estrategia.

Los riesgos mencionados pueden ser optimizados en los siguientes aspectos:

  1. Aumentar el ciclo de muestreo de datos y reducir el impacto de los cambios en los datos de mercado.
  2. La adaptación a las nuevas condiciones climáticas es una de las principales prioridades de la FAO.
  3. Prueba diferentes puntos de parada para encontrar la mejor posición de parada.

Dirección de optimización

La estrategia se puede optimizar principalmente en los siguientes aspectos:

  1. Optimización de la ponderación de múltiples factores, para lograr un ajuste dinámico. Se puede ajustar la ponderación de los juicios de múltiples factores en función de diferentes situaciones, para mejorar la adaptabilidad;

  2. En combinación con algoritmos de aprendizaje automático, para lograr la optimización de la adaptación de múltiples factores. El uso de redes neuronales, algoritmos genéticos y otros algoritmos para entrenar modelos de múltiples factores, para lograr la optimización autónoma de los parámetros;

  3. Optimización de la estrategia de detención de pérdidas. Puede probar diferentes combinaciones de seguimiento de pérdidas y movimiento de pérdidas para encontrar la mejor solución de detención de pérdidas.

  4. Combinado con indicadores de alta tecnología, se pueden probar más indicadores como la oscilación de la tasa de fluctuación, la vibración de la dinámica y una combinación rica de múltiples factores.

Resumir

La estrategia de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara de la cuchara

Código Fuente de la Estrategia
/*backtest
start: 2024-01-26 00:00:00
end: 2024-02-25 00:00:00
period: 4h
basePeriod: 15m
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.7)
shortLookBack = input( title="Short LookBack", defval=3)
longLookBack = input( title="Long LookBack", defval=6)
takeProfit = input( title="Take Profit", defval=2)
stopLoss = input( title="Stop Loss", defval=0.7)

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")
plot(macdSlope, color=color.green, title="MACD Slope")
plot(signalSlope, color=color.red, title="Signal Slope")
intrabarRange = high - low
rsi = ta.rsi(close, 14)
rsiSlope = rsi - rsi[1]
plot(rsiSlope, color=color.black, title="RSI Slope")

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 )


// 202.30 Profit 55.29% 5m
if ( ( getVolBias(longLookBack) == false ) and rsi <= 41 and math.abs(rsi - rsi[shortLookBack]) > 1 and hasNoSignalBias and rsiSlope > 1.5 and close > open)
    strategy.entry("5C1", strategy.long, qty=1.0)
strategy.exit("TPS", "5C1", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 171.70 Profit 50.22% 5m
if ( getVolBias(longLookBack) == true and rsi > 45 and rsi < 55 and macdSlope > 0 and signalSlope > 0)
    strategy.entry("5C2", strategy.long, qty=1.0)
strategy.exit("TPS", "5C2", limit=strategy.position_avg_price + takeProfit, stop=strategy.position_avg_price - stopLoss)

// 309.50 Profit 30.8% 5m 2 tp .7 sl 289 trades
if ( macd > macdBiasValue and macdSlope > 0)
    strategy.entry("5P1", strategy.short, qty=1.0)
strategy.exit("TPS", "5P1", limit=strategy.position_avg_price - takeProfit, stop=strategy.position_avg_price + stopLoss)