Chiến lược giao dịch này dựa trên ba chỉ số: Trung bình Di chuyển Triệu suất 100 giai đoạn (EMA100), Lợi nhuận/Lợi nhuận chưa thực hiện ròng (NUPL) và Lợi nhuận chưa thực hiện tương đối. Nó tạo ra các tín hiệu giao dịch bằng cách xác định sự giao thoa giá với EMA100 và tính tích cực hoặc tiêu cực của NUPL và Lợi nhuận chưa thực hiện tương đối. Một tín hiệu dài được kích hoạt khi giá vượt qua EMA100 và cả NUPL và Lợi nhuận chưa thực hiện tương đối đều dương tính. Một tín hiệu ngắn được kích hoạt khi giá vượt qua dưới EMA100 và cả NUPL và Lợi nhuận chưa thực hiện tương đối đều âm tính. Chiến lược sử dụng kích thước vị trí cố định 10% và thiết lập dừng lỗ 10%.
Chiến lược giao dịch này tạo ra các tín hiệu giao dịch thông qua ba chỉ số: EMA100, NUPL và Lợi nhuận tương đối chưa thực hiện. Nó có những lợi thế như logic rõ ràng, rủi ro có thể kiểm soát được và khả năng thích nghi mạnh mẽ. Đồng thời, nó cũng có những rủi ro như tín hiệu sai, 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à cải thiện thông qua tối ưu hóa tham số, lọc tín hiệu, quản lý vị trí năng động và kết hợp ngắn dài.
/*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")