Estrategia de toma de ganancias móviles de múltiples pasos y doble activación de supertendencia

ATR ST TP
Fecha de creación: 2024-06-21 14:36:35 Última modificación: 2024-06-21 14:36:35
Copiar: 1 Número de Visitas: 698
1
Seguir
1617
Seguidores

Estrategia de toma de ganancias móviles de múltiples pasos y doble activación de supertendencia

Descripción general

Se trata de una estrategia de parada móvil en varios pasos basada en dos indicadores de Supertrend. La estrategia utiliza dos indicadores de Supertrend diferentes para juzgar la tendencia del mercado y realizar operaciones multi-espacio en función de la dirección de la tendencia. El núcleo de la estrategia consiste en la adopción de un mecanismo de parada móvil en varios pasos, mediante el establecimiento de varios objetivos de parada para bloquear gradualmente las ganancias, mientras que se mantiene parte de la posición para aprovechar las condiciones más grandes.

Principio de estrategia

  1. Indicador de doble supertrend: estrategia que utiliza dos parámetros de configuración de diferentes indicadores de supertrend para juzgar la tendencia. Cuando dos indicadores muestran una tendencia alcista al mismo tiempo, se activa una señal múltiple; cuando dos indicadores muestran una tendencia descendente al mismo tiempo, se activa una señal de vacío. Este mecanismo de doble confirmación puede reducir eficazmente las falsas señales.

  2. Multi-step stop-out: la estrategia establece 4 objetivos de stop-out ajustables. Cada objetivo tiene su correspondiente porcentaje de stop-out y proporción de posición de paz. Por ejemplo, el primer objetivo de stop-out puede establecerse en un 12% de pérdidas de posición con un 6% de ganancias, el segundo objetivo puede ser un 8% de pérdidas de posición con un 12% de ganancias, y así sucesivamente. Este mecanismo puede bloquear los beneficios gradualmente y permitir que algunas posiciones continúen disfrutando de la situación.

  3. Dirección de negociación flexible: la estrategia permite a los usuarios elegir entre hacer solo más, solo menos o negociar en ambos sentidos para adaptarse a diferentes entornos de mercado y preferencias de negociación.

  4. Paradas dinámicas: aunque no hay una configuración de paradas clara en el código, la estrategia se cierra automáticamente cuando el indicador de Supertrend se invierte, lo que en realidad actúa como una parada dinámica.

Ventajas estratégicas

  1. Optimización de la gestión de riesgos: el mecanismo de suspensión móvil en varios pasos mejora considerablemente la relación riesgo-beneficio de la estrategia. Al bloquear los beneficios gradualmente, la estrategia puede reducir el riesgo de reversión al tiempo que conserva el espacio de ganancia.

  2. Reducción de señales falsas: El uso de indicadores de doble Supertrend reduce significativamente el impacto de las señales falsas y mejora la precisión y fiabilidad de las operaciones.

  3. Adaptabilidad: La estrategia puede ajustar la dirección de las operaciones y los parámetros de parada de forma flexible según las preferencias de los usuarios y las condiciones del mercado, y se aplica a una variedad de tipos de operaciones y períodos de tiempo.

  4. Alto grado de automatización: La estrategia es completamente automatizada, no requiere intervención humana desde la entrada, el frenado y la salida, lo que reduce considerablemente el impacto emocional y la posibilidad de errores de operación.

  5. Gestión de fondos flexible: mediante la configuración de diferentes porcentajes de paradas, la estrategia permite una gestión de fondos flexible, que garantiza el bloqueo rápido de parte de los beneficios y permite que las posiciones restantes sigan siendo rentables.

Riesgo estratégico

  1. Sensibilidad a los parámetros: el rendimiento de la estrategia depende en gran medida de la configuración de los parámetros del indicador de Supertrend y del parón. Los parámetros inadecuados pueden causar un exceso de comercio o perder oportunidades importantes.

  2. Dependencia de la tendencia: como una estrategia de seguimiento de tendencias, puede entrar y salir con frecuencia en mercados convulsionados, lo que genera costos de transacción innecesarios.

  3. Riesgo de deslizamiento: En el caso de un movimiento rápido, la ejecución de la parada múltiple puede verse afectada por el deslizamiento, y el precio de ejecución real puede diferir de lo esperado.

  4. Riesgo de optimización excesiva: las estrategias tienen varios parámetros ajustables y son susceptibles a caer en la trampa de la optimización excesiva, lo que hace que los resultados de las pruebas de retroalimentación difieran mucho del rendimiento del disco real.

Dirección de optimización de la estrategia

  1. Introducción de filtros de volatilidad: Considere la combinación de ATR u otros indicadores de volatilidad para reducir la frecuencia de negociación durante la baja volatilidad y mejorar la adaptabilidad de la estrategia en diferentes entornos de mercado.

  2. Ajuste de parámetros dinámicos: se puede explorar el uso de algoritmos de adaptación para ajustar dinámicamente los parámetros de Supertrend y los objetivos de parada para adaptarse mejor a los cambios en el mercado.

  3. Aumentar el mecanismo de detención de pérdidas: aunque la Supertrend inversa ofrece cierta función de detención de pérdidas, se puede considerar agregar un mecanismo de detención de pérdidas más flexible, como el seguimiento de las paradas, para controlar aún más el riesgo.

  4. Combinación con otros indicadores técnicos: Se puede considerar la introducción de otros indicadores técnicos, como RSI, MACD, para mejorar la precisión de entrada y salida mediante la resonancia de múltiples indicadores.

  5. Optimización de la gestión de fondos: Se pueden explorar estrategias de gestión de fondos más complejas, como ajustar el tamaño de las posiciones de forma dinámica en función de la rentabilidad de la cuenta, para equilibrar mejor el riesgo y los beneficios.

  6. Optimización de la retroalimentación: realizar una retroalimentación más completa, que incluya análisis de rendimiento en diferentes períodos de tiempo y condiciones de mercado, para identificar los mejores escenarios de aplicación y configuración de parámetros de la estrategia.

Resumir

La estrategia de parada móvil en varios pasos se basa en el doble indicador Supertrend, que logra un equilibrio entre el riesgo y los beneficios a través de un mecanismo de parada en varios pasos flexible. Las principales ventajas de la estrategia residen en su excelente capacidad de gestión de riesgos y su sensibilidad a las tendencias. Sin embargo, los usuarios deben prestar atención a la configuración de los parámetros y al impacto del entorno del mercado al aplicarla.

Código Fuente de la Estrategia
/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Strategic Multi-Step Supertrend Trader - Strategy [presentTrading]", overlay=true )

// this strategy utilizes a double Supertrend indicator to determine entry and exit conditions for both long and short trades, with user-configurable take profit levels and trade direction settings. 
// The strategy dynamically updates highest and lowest prices during trades and exits positions based on multi-step profit targets or opposing Supertrend signals.


// User inputs for take profit settings
// Grouping Take Profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(6.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(12.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(18.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(50.0, title="Take Profit % Step 4", group="Take Profit Settings")

takeProfitAmount1 = input.float(12, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(8, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(4, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(0, title="Take Profit Amount % Step 4", group="Take Profit Settings")

numberOfSteps = input.int(3, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")

// Grouping Trade Direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], group="Trade Direction")

// Grouping Supertrend settings
atrPeriod1 = input(10, title="ATR Length for Supertrend 1", group="Supertrend Settings")
factor1 = input.float(3.0, title="Factor for Supertrend 1", step=0.01, group="Supertrend Settings")

atrPeriod2 = input(5, title="ATR Length for Supertrend 2", group="Supertrend Settings")
factor2 = input.float(4.0, title="Factor for Supertrend 2", step=0.01, group="Supertrend Settings")


// Function to calculate Supertrend
supertrend(factor, atrPeriod) =>
    [a, direction] = ta.supertrend(factor, atrPeriod)
    direction

// Calculate Double Supertrend
supertrend1 = supertrend(factor1, atrPeriod1)
supertrend2 = supertrend(factor2, atrPeriod2)

// Entry conditions
longCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Exit conditions
longExitCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortExitCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Short" or tradeDirection == "Both")

// Variables to store the highest and lowest prices during the trade
var float highestPrice = na
var float lowestPrice = na

// Get the entry price from open trades
entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)

// Reset highestPrice or lowestPrice when entering new trades
if (longCondition and strategy.position_size <= 0)
    highestPrice := na // Reset the highest price
    strategy.entry("My Long Entry Id", strategy.long) // Enter long position
    strategy.close("My Short Entry Id", "Short Exit") // Close short position if any

if (shortCondition and strategy.position_size >= 0)
    lowestPrice := na // Reset the lowest price
    strategy.entry("My Short Entry Id", strategy.short) // Enter short position
    strategy.close("My Long Entry Id", "Long Exit") // Close long position if any

// Exit trades based on conditions
if (longExitCondition and strategy.position_size > 0)
    strategy.close("My Long Entry Id", "Long Exit") // Exit long position

if (shortExitCondition and strategy.position_size < 0)
    strategy.close("My Short Entry Id", "Short Exit") // Exit short position

if (strategy.position_size > 0)
    // Update the highest price for long positions
    highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Long Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Long Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Long Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Long Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))

if (strategy.position_size < 0)
    // Update the lowest price for short positions
    lowestPrice := na(lowestPrice) ? low : math.min(lowestPrice, low)

    // Step 1
    if (useTakeProfit and numberOfSteps >= 1)
        strategy.exit("Take Profit 1", from_entry="My Short Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
    // Step 2
    if (useTakeProfit and numberOfSteps >= 2)
        strategy.exit("Take Profit 2", from_entry="My Short Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
    // Step 3
    if (useTakeProfit and numberOfSteps >= 3)
        strategy.exit("Take Profit 3", from_entry="My Short Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
    // Step 4
    if (useTakeProfit and numberOfSteps == 4)
        strategy.exit("Take Profit 4", from_entry="My Short Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))