
Chiến lược giao dịch này dựa trên trung bình di chuyển chỉ số 100 chu kỳ ((EMA100), lợi nhuận ròng chưa thực hiện ((NUPL) và ba chỉ số lợi nhuận tương đối chưa thực hiện để tạo ra tín hiệu giao dịch bằng cách phán đoán giá giao nhau với EMA100 và âm tính của NUPL và lợi nhuận tương đối chưa thực hiện. Gây nhiều tín hiệu khi giá vượt qua EMA100 và NUPL và lợi nhuận tương đối chưa thực hiện đều đúng; khi giá vượt qua EMA100 và NUPL và lợi nhuận tương đối chưa thực hiện đều âm tính.
Chiến lược giao dịch này tạo ra tín hiệu giao dịch thông qua EMA100, NUPL và ba chỉ số lợi nhuận tương đối chưa đạt được, có các ưu điểm như rõ ràng logic, khả năng kiểm soát rủi ro và khả năng thích ứng. Ngoài ra còn có các rủi ro như tín hiệu giả, chậm trễ và tối ưu hóa tham số. Trong tương lai, chiến lược có thể được tối ưu hóa và nâng cao bằng các phương thức tối ưu hóa tham số, lọc tín hiệu, quản lý vị trí động và kết hợp đa không gian.
/*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")