Estrategia de negociación de futuros de Martingale apalancada

El autor:¿ Qué pasa?, Fecha: 2024-01-26 11:12:23
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación de futuros que aprovecha el mecanismo de martingale para lograr altos rendimientos. Ajusta dinámicamente los tamaños de las posiciones para aumentar las posiciones cuando pierden para cumplir con los objetivos de ganancia.

Principios

La lógica central de esta estrategia es: cuando el precio activa la línea de stop loss, reabre posiciones con tamaños más grandes mientras baja la línea de stop loss en un cierto porcentaje. Al aumentar los tamaños de posición, tiene como objetivo reducir el precio promedio de entrada. Cuando el número de posiciones alcanza el máximo establecido de órdenes, espera la inversión de precio para obtener ganancias.

Específicamente, primero entra al precio actual con el tamaño de posición establecido y toma los niveles de ganancia / pérdida. Cuando el precio se mueve a la línea de stop loss, se reabrirán posiciones más grandes y la línea de stop loss se reducirá en un porcentaje establecido.

Análisis de ventajas

La mayor ventaja es la capacidad de reducir la base de costos a través de la reapertura apalancada, mientras que todavía tiene la posibilidad de una reversión favorable cuando las tendencias son negativas.

También funciona bien para materias primas y otros mercados de alta volatilidad, amplificando las ganancias/pérdidas mediante apalancamiento.

Análisis de riesgos

El principal riesgo es que el precio pueda continuar la tendencia a la baja después de la reapertura, incluso rompiendo los niveles de stop loss anteriores, lo que conduce a grandes pérdidas.

Otro riesgo es la insuficiencia de capital para soportar la cantidad máxima de pedidos antes de la reversión.

Áreas de mejora

Algunas maneras de optimizar aún más la estrategia:

  1. Ajuste dinámico del nivel de apalancamiento, más bajo cuando se obtiene ganancia y más alto cuando se pierde

  2. Incorporar indicadores de tendencia para detener las pérdidas cuando la tendencia no esté clara

  3. Se establecerá una anchura de stop loss basada en la volatilidad del mercado, más amplia cuando sea volátil

  4. Añadir módulos de pérdida de parada automática para limitar las pérdidas extremas

Resumen de las actividades

Esta es una estrategia comercial típica de martingale apalancada. Al reducir el costo a través de órdenes adicionales, persigue mayores rendimientos, pero también introduce riesgos. Todavía hay espacio para la optimización a través de ajuste de parámetros y expansión de características para adaptarse a más condiciones del mercado.


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

//@version=4
strategy("Leveraged Martingale Strategy with Fees", overlay=true)

// User-defined input parameters
var float takeProfitPct = input(2.0, title="Take Profit Percentage") / 100.0
var float positionMultiplier = input(2.0, title="Position Size Multiplier")
var int maxOrders = input(10, title="Maximum Number of Reinforced Orders")
var float tradeSizeUSD = input(10000.0, title="Trade Size in USD")
var float dropPctForNextTrade = input(1.0, title="Drop Percentage for Next Trade") / 100.0
var float leverage = input(5.0, title="Leverage Factor")
var bool enterAtCurrentPrice = input(true, title="Enter First Trade at Current Price")
var float takerFeePct = input(0.1, title="Taker Order Fee Percentage") / 100.0

// State variables
var float last_entry_price = na
var float avg_entry_price = na
var float total_position_size = 0.0
var int num_trades = 0

// Entry logic
if (num_trades == 0)
    if (enterAtCurrentPrice or close < last_entry_price * (1 - dropPctForNextTrade))
        float size = tradeSizeUSD / close * leverage
        strategy.entry("Long", strategy.long, qty=size)
        avg_entry_price := close
        total_position_size := size
        last_entry_price := close
        num_trades := 1
else if (close < last_entry_price * (1 - dropPctForNextTrade) and num_trades < maxOrders)
    float size = tradeSizeUSD / close * leverage * pow(positionMultiplier, num_trades)
    strategy.entry("Double Long" + tostring(num_trades), strategy.long, qty=size)
    avg_entry_price := ((avg_entry_price * total_position_size) + (close * size)) / (total_position_size + size)
    total_position_size := total_position_size + size
    last_entry_price := close
    num_trades := num_trades + 1

// Take profit logic adjusted for leverage and fees
var float take_profit_price = na
var float fee_deduction = na
if (num_trades > 0)
    take_profit_price := avg_entry_price * (1 + takeProfitPct / leverage)
    fee_deduction := total_position_size * close * takerFeePct
    if (close > take_profit_price + fee_deduction / total_position_size)
        strategy.close_all()
        num_trades := 0


Más.