이 거래 전략은 100 기간 기하급수적 이동 평균 (EMA100), 순실화되지 않은 이익/손실 (NUPL), 상대적 실화되지 않은 이익) 이라는 세 가지 지표에 기반합니다. EMA100과 가격의 교차와 NUPL 및 상대적 실화되지 않은 이익의 긍정 또는 부정성을 결정함으로써 거래 신호를 생성합니다. 가격이 EMA100을 넘어서면 긴 신호가 발사되며 NUPL과 상대적 실화되지 않은 이익 모두 긍정적입니다. 가격이 EMA100을 넘어서면 짧은 신호가 발사되며 NUPL과 상대적 실화되지 않은 이익 모두 부정적입니다. 전략은 10%의 고정 포지션 크기를 사용하고 손실을 10%로 설정합니다.
이 거래 전략은 EMA100, NUPL 및 상대적 실현되지 않은 이익이라는 세 가지 지표를 통해 거래 신호를 생성합니다. 명확한 논리, 제어 가능한 위험 및 강력한 적응력과 같은 장점이 있습니다. 동시에 잘못된 신호, 지연 및 매개 변수 최적화와 같은 위험도 있습니다. 미래에, 전략은 매개 변수 최적화, 신호 필터링, 동적 위치 관리 및 긴 짧은 조합을 통해 최적화 및 개선 될 수 있습니다.
/*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")