Strategi ini bertujuan untuk mengenal pasti peluang pulback yang berpotensi di pasaran. Ia menggunakan sistem purata bergerak berganda dengan purata bergerak jangka panjang (MA1) dan purata bergerak jangka pendek (MA2). Matlamat utama adalah untuk pergi lama apabila harga penutupan di bawah MA1 tetapi di atas MA2, menandakan kemungkinan pulback dalam trend keseluruhan.
Strategi ini menggunakan dua purata bergerak: MA1 (jangka panjang) dan MA2 (jangka pendek). Logiknya adalah bahawa jika harga menarik kembali seketika untuk menguji sokongan trend jangka panjang, ia mungkin membentangkan peluang yang panjang. Khususnya, jika harga penutupan kekal di atas sokongan jangka panjang (MA1), trend utama tetap utuh. Tetapi jika harga penutupan memecahkan di bawah MA jangka pendek (MA2) tetapi masih memegang di atas MA jangka panjang (MA1), ia menandakan persediaan pullback buku teks. Seseorang boleh pergi lama di sini dengan stop-loss dan bertujuan untuk harga bergerak kembali di atas MA jangka pendek.
Kelebihan strategi ini termasuk:
Risiko yang perlu diketahui:
Beberapa cara untuk mengoptimumkan dan mengurangkan risiko:
Beberapa cara untuk meningkatkan strategi:
Ringkasnya, ini adalah strategi pulback pembalikan purata yang mudah. Ia mengenal pasti persediaan pulback dengan pendekatan MA berganda dan menguruskan risiko dengan hentian adaptif. Strategi ini mudah difahami dan dilaksanakan dengan penyesuaian fleksibel. Langkah seterusnya adalah pengoptimuman lebih lanjut di sekitar elemen seperti parameter MA, hentian kerugian, penapis untuk menjadikan strategi lebih mantap.
/*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)