EintSimple Pullback Strategy adalah strategi reversi rata-rata berdasarkan crossover rata-rata bergerak ganda. Pertama-tama menggunakan garis rata-rata bergerak jangka panjang dan jangka pendek. Ketika garis rata-rata bergerak jangka pendek menembus garis rata-rata bergerak jangka panjang dari bawah, sinyal beli dihasilkan. Untuk menyaring pecah palsu, strategi ini juga membutuhkan harga penutupan lebih tinggi dari garis rata-rata bergerak jangka panjang.
Setelah memasuki pasar, jika harga jatuh kembali di bawah garis rata-rata bergerak jangka pendek lagi, itu akan memicu sinyal keluar. Selain itu, strategi ini juga menetapkan stop loss exit. Jika retracement dari titik tertinggi mencapai persentase stop loss yang ditetapkan, itu juga akan keluar posisi.
Strategi ini terutama bergantung pada salib emas dari rata-rata bergerak ganda untuk menentukan waktu masuk. Secara khusus, kondisi berikut harus dipenuhi pada saat yang sama sebelum membuka posisi untuk pergi panjang:
Setelah memenuhi kondisi di atas, strategi ini akan mengambil posisi panjang penuh.
Penghakiman sinyal keluar didasarkan pada dua kondisi. Yang satu adalah bahwa harga jatuh kembali di bawah rata-rata bergerak jangka pendek lagi. Yang lainnya adalah bahwa retracement dari titik tertinggi mencapai persentase stop loss yang ditetapkan. Kondisi keluar khusus adalah sebagai berikut:
Ketika salah satu kondisi keluar dipenuhi, strategi ini akan menutup semua posisi panjang.
Menggunakan crossover rata-rata bergerak ganda dikombinasikan dengan harga penutupan yang solid untuk menilai dapat secara efektif menyaring penyusutan palsu.
Mengadopsi entri pullback dapat masuk setelah harga membentuk titik infleksi jangka pendek.
Dengan pengaturan stop loss, itu dapat membatasi drawdown maksimum.
Strategi crossover rata-rata bergerak ganda cenderung menghasilkan sinyal perdagangan yang sering dan dapat mengejar puncak dan membunuh dasar.
Pengaturan parameter rata-rata bergerak yang tidak benar dapat mengakibatkan kurva yang terlalu halus atau terlalu sensitif.
Pengaturan stop loss yang terlalu longgar akan menyebabkan kerugian yang diperbesar.
Uji kombinasi panjang yang berbeda dari rata-rata bergerak jangka panjang dan jangka pendek untuk menemukan parameter yang optimal.
Bandingkan efek menggunakan harga dekat dan harga khas untuk menentukan crossover rata-rata bergerak.
Uji menambahkan filter seperti indikator volume atau volatilitas.
Backtest mengoptimalkan persentase stop loss untuk menemukan pengaturan terbaik.
EintSimple Pullback Strategy adalah strategi pullback rata-rata bergerak ganda yang sederhana dan praktis. Strategi ini secara efektif memanfaatkan fungsionalitas arah rata-rata bergerak sambil menggabungkan harga penutupan yang solid untuk menyaring sinyal palsu. Meskipun strategi ini cenderung sering berdagang dan mengejar puncak dan membunuh dasar, strategi ini dapat ditingkatkan lebih lanjut melalui optimasi parameter dan menambahkan filter. Secara keseluruhan, ini adalah strategi yang bagus bagi pemula perdagangan kuantitatif untuk berlatih dan mengoptimalkan.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m 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 // Get user input i_ma1 = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA") i_ma2 = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA") 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=true, 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.ema(close, i_ma1) ma2 = ta.ema(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.fuchsia)