Chiến lược này nhằm mục đích xác định các cơ hội rút lui tiềm năng trên thị trường. Nó sử dụng một hệ thống trung bình động kép với trung bình động dài hạn (MA1) và trung bình động ngắn hạn (MA2). Mục tiêu chính là mua dài khi giá đóng dưới MA1 nhưng trên MA2, báo hiệu một sự rút lui tiềm năng trong xu hướng tổng thể.
Chiến lược này sử dụng hai đường trung bình động: MA1 (kỳ dài) và MA2 (kỳ ngắn). Lý thuyết là nếu giá rút ngắn để kiểm tra hỗ trợ xu hướng dài hạn, nó có thể tạo ra một cơ hội dài. Cụ thể, nếu giá đóng ở trên ngưỡng hỗ trợ dài hạn (MA1), xu hướng chính vẫn còn nguyên vẹn. Nhưng nếu giá đóng phá vỡ dưới mức MA ngắn hạn (MA2) nhưng vẫn giữ trên mức MA dài hạn (MA1), nó báo hiệu một thiết lập pullback sách giáo khoa. Người ta có thể đi dài với một lỗ dừng và nhắm mục tiêu cho giá quay trở lại trên mức MA ngắn.
Những lợi thế của chiến lược này bao gồm:
Những rủi ro cần lưu ý:
Một số cách để tối ưu hóa và giảm thiểu rủi ro:
Một số cách để tăng cường chiến lược:
Tóm lại, đây là một chiến lược rút lui đảo ngược trung bình đơn giản. Nó xác định các thiết lập rút lui với cách tiếp cận MA kép và quản lý rủi ro bằng các điểm dừng thích nghi. Chiến lược dễ hiểu và thực hiện với điều chỉnh linh hoạt.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ZenAndTheArtOfTrading / www.PineScriptMastery.com // @version=5 strategy("Simple Pullback Strategy", overlay=true, initial_capital=50000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, // 100% of balance invested on each trade commission_type=strategy.commission.cash_per_contract, commission_value=0.005) // Interactive Brokers rate // Get user input i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA") i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA") i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline") i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2") i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups") i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups") // Get indicator values ma1 = ta.sma(close, i_ma1) ma2 = ta.sma(close, i_ma2) // Check filter(s) f_dateFilter =true // Check buy/sell conditions var float buyPrice = 0 buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1]) stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent // Enter positions if buyCondition strategy.entry(id="Long", direction=strategy.long) if buyCondition[1] buyPrice := open // Exit positions if sellCondition or stopCondition strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : "")) buyPrice := na // Draw pretty colors plot(buyPrice, color=color.lime, style=plot.style_linebr) plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1) plot(ma1, color=color.blue) plot(ma2, color=color.orange)