
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên chỉ số chuyển động trung bình 33 chu kỳ (EMA). Nó nhận biết sự thay đổi xu hướng thị trường thông qua mối quan hệ chéo của giá với EMA và kết hợp với các điểm cao và thấp của biến động để thiết lập vị trí dừng lỗ để theo dõi động lực và kiểm soát rủi ro của xu hướng.
Lý luận cốt lõi của chiến lược là để đánh giá xu hướng xu hướng bằng cách quan sát giá và 33 chu kỳ EMA. Khi giá đóng cửa phá vỡ lên và giữ vững EMA, kích hoạt nhiều tín hiệu; Khi giá đóng cửa phá vỡ xuống và phá vỡ EMA, kích hoạt tín hiệu phá vỡ. Chiến lược sử dụng các điểm cao và thấp của 14 chu kỳ như là một tài liệu tham khảo biến động, đặt điểm cao nhất là nhiều điểm dừng đơn và điểm thấp nhất là nhiều điểm dừng đơn; tương ứng, đặt điểm thấp nhất là một điểm dừng đơn và điểm cao nhất là một điểm dừng đơn.
Đây là một chiến lược theo dõi xu hướng có cấu trúc, logic rõ ràng. Bằng cách nắm bắt xu hướng qua EMA, quản lý rủi ro bằng các điểm cao và thấp của biến động, có tính thực tế tốt. Mặc dù có một số hạn chế vốn có, nhưng bằng hướng tối ưu hóa được đề xuất, có thể nâng cao hơn nữa sự ổn định và khả năng sinh lợi của chiến lược.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GlenMabasa
//@version=6
strategy("33 EMA Crossover Strategy", overlay=true)
// Input for the EMA length
ema_length = input.int(33, title="EMA Length")
// Calculate the 33-day Exponential Moving Average
ema_33 = ta.ema(close, ema_length)
// Plot the 33 EMA
plot(ema_33, color=color.blue, title="33 EMA", linewidth=2)
// Buy condition: Price crosses and closes above the 33 EMA
buy_condition = ta.crossover(close, ema_33) and close > ema_33
// Sell condition: Price crosses or closes below the 33 EMA
sell_condition = ta.crossunder(close, ema_33) or close < ema_33
// Swing high and swing low calculations
swing_high_length = input.int(14, title="Swing High Lookback")
swing_low_length = input.int(14, title="Swing Low Lookback")
swing_high = ta.highest(high, swing_high_length) // Previous swing high
swing_low = ta.lowest(low, swing_low_length) // Previous swing low
// Profit target and stop loss for buys
buy_profit_target = swing_high
buy_stop_loss = swing_low
// Profit target and stop loss for sells
sell_profit_target = swing_low
sell_stop_loss = swing_high
// Plot buy and sell signals
plotshape(series=buy_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy logic for backtesting
if (buy_condition)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=buy_profit_target, stop=buy_stop_loss)
if (sell_condition)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=sell_profit_target, stop=sell_stop_loss)