Esta estratégia de negociação é baseada em três indicadores: a média móvel exponencial de 100 períodos (EMA100), lucro/perda não realizado líquido (NUPL) e lucro não realizado relativo. Ela gera sinais de negociação determinando o cruzamento do preço com a EMA100 e a positividade ou negatividade da NUPL e do lucro não realizado relativo. Um sinal longo é acionado quando o preço cruza acima da EMA100 e tanto a NUPL quanto o lucro não realizado relativo são positivos. Um sinal curto é acionado quando o preço cruza abaixo da EMA100 e a NUPL e o lucro não realizado relativo são negativos.
Esta estratégia de negociação gera sinais de negociação através de três indicadores: EMA100, NUPL e Relativo Lucro Não Realizado. Tem vantagens como lógica clara, risco controlável e forte adaptabilidade. Ao mesmo tempo, também tem riscos como falsos sinais, lag e otimização de parâmetros. No futuro, a estratégia pode ser otimizada e melhorada através de otimização de parâmetros, filtragem de sinal, gerenciamento dinâmico de posição e combinações long-short.
/*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")