Esta estrategia de negociación se basa en tres indicadores: el promedio móvil exponencial de 100 períodos (EMA100), la ganancia/pérdida no realizada neta (NUPL) y la ganancia no realizada relativa. Genera señales de negociación determinando el cruce de precios con EMA100 y la positividad o negatividad de NUPL y la ganancia no realizada relativa. Una señal larga se activa cuando el precio cruza EMA100 y tanto NUPL como la ganancia no realizada relativa son positivas. Una señal corta se activa cuando el precio cruza por debajo de EMA100 y tanto NUPL como la ganancia no realizada relativa son negativas. La estrategia utiliza un tamaño de posición fijo del 10% y establece un stop loss del 10%.
Esta estrategia de trading genera señales de trading a través de tres indicadores: EMA100, NUPL y Relative Unrealized Profit. Tiene ventajas como lógica clara, riesgo controlable y fuerte adaptabilidad. Al mismo tiempo, también tiene riesgos como señales falsas, retraso y optimización de parámetros. En el futuro, la estrategia puede ser optimizada y mejorada a través de optimización de parámetros, filtrado de señales, gestión dinámica de posiciones y combinaciones largas y cortas.
/*backtest start: 2023-06-11 00:00:00 end: 2024-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Scalping Strategy with EMA 100, NUPL, and Relative Unrealized Profit", overlay=true) // Input for EMA period emaPeriod = input.int(100, title="EMA Period", minval=1) ema100 = ta.ema(close, emaPeriod) plot(ema100, color=color.blue, title="EMA 100") // Placeholder function for NUPL (Net Unrealized Profit/Loss) // Replace this with actual NUPL data or calculation NUPL = close * 0.0001 // Dummy calculation // Placeholder function for relative unrealized profit // Replace this with actual relative unrealized profit data or calculation relativeUnrealizedProfit = close * 0.0001 // Dummy calculation // Define conditions for long and short entries longCondition = ta.crossover(close, ema100) and NUPL > 0 and relativeUnrealizedProfit > 0 shortCondition = ta.crossunder(close, ema100) and NUPL < 0 and relativeUnrealizedProfit < 0 // Plot buy and sell signals on the chart plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal") // Calculate stop loss levels longStopLoss = close * 0.90 shortStopLoss = close * 1.10 // Strategy entry and exit rules if (longCondition) strategy.entry("Long", strategy.long, stop=longStopLoss) if (shortCondition) strategy.entry("Short", strategy.short, stop=shortStopLoss) // Set stop loss levels for active positions if (strategy.position_size > 0) strategy.exit("Exit Long", "Long", stop=longStopLoss) if (strategy.position_size < 0) strategy.exit("Exit Short", "Short", stop=shortStopLoss) // Alerts for long and short entries alertcondition(longCondition, title="Long Entry Alert", message="Long entry signal based on EMA 100, NUPL, and relative unrealized profit") alertcondition(shortCondition, title="Short Entry Alert", message="Short entry signal based on EMA 100, NUPL, and relative unrealized profit") // Visualize the entry conditions plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.cross, title="Long Condition") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.cross, title="Short Condition")