
Chiến lược này là một hệ thống giao dịch ngắn hạn kết hợp nhiều chỉ số kỹ thuật, chủ yếu dựa trên chỉ số chuyển hướng đường parabola ((PSAR) làm tín hiệu cốt lõi, đồng thời kết hợp chỉ số cân bằng, động lực để lọc giao dịch và sử dụng phương pháp quản lý rủi ro kết hợp với dừng động và dừng cố định. Chiến lược được thiết kế để xem xét đầy đủ các xu hướng và biến động của thị trường, phù hợp để giao dịch ngắn hạn trong môi trường thị trường biến động lớn.
Chiến lược sử dụng chỉ số PSA như một công cụ định hướng chính, tạo ra tín hiệu giao dịch khi giá vượt quá PSA. Để tăng độ tin cậy của tín hiệu, điều kiện lọc sau đây được thêm vào:
Chiến lược này xây dựng một hệ thống giao dịch hoàn chỉnh bằng cách kết hợp nhiều chỉ số kỹ thuật, được xem xét tốt trong việc phán đoán xu hướng, kiểm soát rủi ro và thực hiện giao dịch. Ưu điểm cốt lõi của chiến lược là cơ chế kiểm soát rủi ro linh hoạt và hệ thống tín hiệu hoàn chỉnh, nhưng cũng cần chú ý đến các vấn đề về tối ưu hóa tham số và khả năng thích ứng của thị trường.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("妮可百分百", overlay=true)
// 📌 設定 Parabolic SAR 參數
start = input.float(0.02, "起始 AF")
increment = input.float(0.02, "加速因子")
maximum = input.float(0.2, "最大 AF")
// 📌 計算 Parabolic SAR
SAR = ta.sar(start, increment, maximum)
// 📌 ATR 計算(用於動態止損)
atrLength = input.int(14, "ATR 計算週期")
atrMultiplier = input.float(1.3, "ATR 係數") // 2倍 ATR 作為止損範圍
ATR = ta.atr(atrLength)
// 📌 固定 0.5% 止盈計算
takeProfitPercent = 0.007 // 0.7% 固定止盈
takeProfitLong = close * (1 + takeProfitPercent) // 多單止盈
takeProfitShort = close * (1 - takeProfitPercent) // 空單止盈
// 📌 **50 EMA 過濾**
ema50 = ta.ema(close, 50)
// 📌 **RSI 過濾(防止震盪進場)**
rsiLength = input.int(14, "RSI 週期")
rsi = ta.rsi(close, rsiLength)
longFilter = rsi > 40 // 只在 RSI > 31 時做多
shortFilter = rsi < 60 // 只在 RSI < 69 時做空
// 📌 **檢查是否已經有持倉**
isFlat = strategy.position_size == 0 // **無持倉時,才能開新單**
// 🔼 **多頭進場條件**
longCondition = ta.crossover(close, SAR) and close > ema50 and longFilter and isFlat
// 🔽 **空頭進場條件**
shortCondition = ta.crossunder(close, SAR) and close < ema50 and shortFilter and isFlat
// 📌 **進場策略**
if (longCondition)
strategy.entry("B", strategy.long, comment="B")
if (shortCondition)
strategy.entry("S", strategy.short, comment="S")
// 📌 **止盈 & 止損**
stopLossLong = close - (ATR * atrMultiplier) // 多單 ATR 止損
stopLossShort = close + (ATR * atrMultiplier) // 空單 ATR 止損
strategy.exit("Exit Long", from_entry="B", stop=stopLossLong, limit=takeProfitLong, comment="TP Long")
strategy.exit("Exit Short", from_entry="S", stop=stopLossShort, limit=takeProfitShort, comment="TP Short")
// 📌 **標記進出場點**
plotshape(series=longCondition, location=location.belowbar, style=shape.triangleup, size=size.small, title="B")
plotshape(series=shortCondition, location=location.abovebar, style=shape.triangledown, size=size.small, title="S")
// 📌 **繪製 50 EMA**
plot(ema50, color=color.blue, title="50 EMA")