Estrategia de adición de posiciones dinámicas basada en RSI


Fecha de creación: 2024-02-06 09:44:05 Última modificación: 2024-02-06 09:44:05
Copiar: 1 Número de Visitas: 727
1
Seguir
1617
Seguidores

Estrategia de adición de posiciones dinámicas basada en RSI

Descripción general

La estrategia combina un índice relativamente fuerte (RSI) y el principio de la subida de posición de Martingale. La primera compra y apertura de posición se realiza cuando el RSI está por debajo de la línea de sobreventa; luego, si los precios continúan bajando, se subirá la posición en el índice de 2 para obtener un tope de ganancias. Esta estrategia se aplica a las operaciones en efectivo en monedas de alto valor de mercado y puede obtener ganancias estables a largo plazo.

Principio de estrategia

  1. Utiliza el indicador RSI para determinar el mercado de sobreventa, el RSI se establece en 14 y el umbral de sobreventa se establece en 30.
  2. Cuando el RSI es < 30, el primer posicionamiento se realiza con el 5% de los intereses de la cuenta.
  3. Si el precio baja un 0,5% respecto al precio de entrada inicial, se aumenta la posición por el doble; si el precio continúa bajando, se aumenta la posición por el cuadruplo.
  4. Cada ganancia es de 0.5%, y se compensa con un tope de ganancias.
  5. Repetir los pasos mencionados anteriormente para realizar un ciclo de transacciones.

Análisis de las ventajas

  • Utilizando el RSI para determinar el punto de sobreventa en el mercado, se puede hacer más al abrir posiciones en puntos relativamente bajos.
  • El incremento de las existencias de Martingale puede hacer que el precio promedio de apertura sea cada vez más bajo.
  • Un pequeño paramiento puede generar ganancias estables y duraderas.
  • El riesgo es controlado para operaciones en efectivo en monedas de alto valor de mercado.

Análisis de riesgos

  • Si el mercado se mantiene bajo, las pérdidas de las posiciones podrían extenderse aún más.
  • No hay paradas de pérdidas, no hay límite de pérdidas máximas.
  • El exceso de acumulación también aumenta las pérdidas.
  • El riesgo de que el mercado siga bajando es mayor si se opera en múltiples direcciones.

Optimización de la estrategia

  1. Se puede establecer un punto de parada para limitar la pérdida máxima.
  2. Optimización de los parámetros del RSI para encontrar las mejores señales de sobreventa y sobreventa.
  3. Se puede establecer un límite razonable basado en la volatilidad de una moneda específica.
  4. Se puede establecer el margen de incremento de la posición en función de los activos totales o la proporción de posiciones individuales.

Resumir

La estrategia combina el indicador RSI y el principio de la subida de la posición de Martingale, para obtener ganancias con un pequeño margen de detención. Puede obtener ganancias estables y continuas, pero también existe un cierto riesgo. Se puede optimizar aún más mediante el establecimiento de paros, el ajuste de parámetros, etc.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Stavolt

//@version=5
strategy("RSI Martingale Strategy", overlay=true, default_qty_type=strategy.cash, currency=currency.USD)

// Inputs
rsiLength = input(14, title="RSI Length")
oversoldThreshold = input(30, title="Oversold Threshold") // Keeping RSI threshold
profitTargetPercent = input(0.5, title="Profit Target (%)") / 100
initialInvestmentPercent = input(5, title="Initial Investment % of Equity")

// Calculating RSI
rsiValue = ta.rsi(close, rsiLength)

// State variables for tracking the initial entry
var float initialEntryPrice = na
var int multiplier = 1

// Entry condition based on RSI
if (rsiValue < oversoldThreshold and na(initialEntryPrice))
    initialEntryPrice := close
    strategy.entry("Initial Buy", strategy.long, qty=(strategy.equity * initialInvestmentPercent / 100) / close)
    multiplier := 1

// Adjusting for errors and simplifying the Martingale logic
// Note: This section simplifies the aggressive position size adjustments without loops
if (not na(initialEntryPrice))
    if (close < initialEntryPrice * 0.995) // 0.5% drop from initial entry
        strategy.entry("Martingale Buy 1", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 2)
        multiplier := 2 // Adjusting multiplier for the next potential entry

    if (close < initialEntryPrice * 0.990) // Further drop
        strategy.entry("Martingale Buy 2", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 4)
        multiplier := 4

    // Additional conditional entries could follow the same pattern

// Checking for profit target to close positions
if (strategy.position_size > 0 and (close - strategy.position_avg_price) / strategy.position_avg_price >= profitTargetPercent)
    strategy.close_all(comment="Take Profit")
    initialEntryPrice := na // Reset for next cycle