Momentum Pullback Strategy mengidentifikasi pembacaan RSI ekstrem sebagai sinyal momentum untuk strategi panjang/pendek.
Ini masuk panjang/pendek pada pullback pertama ke EMA 5 periode (rendah) / EMA 5 periode (tinggi) dan keluar pada rolling 12 bar high/low. Fitur rolling high/low berarti target keuntungan akan mulai berkurang dengan setiap bar baru jika harga memasuki konsolidasi yang berkepanjangan.
Stop loss yang disarankan adalah X ATRs (bisa disesuaikan dalam input) dari harga masuk.
Strategi ini cukup kuat di seluruh jangka waktu dan pasar dengan tingkat kemenangan 60%-70% dan perdagangan yang menang lebih besar.
Menghitung RSI 6 periode dan mengidentifikasi nilai di atas 90 (overbought) dan di bawah 10 (oversold).
Ketika RSI terlalu banyak dibeli, pergi panjang pada pullback ke EMA 5 periode (rendah) dalam 6 bar.
Ketika RSI oversold, pergi pendek pada pullback ke EMA 5 periode (tinggi) dalam 6 bar.
Strategi keluar adalah mengambil keuntungan bergerak, dengan target awal adalah tertinggi tertinggi / terendah terendah dari 12 bar terakhir, memperbarui pada setiap bar baru untuk keluar bergulir.
Stop loss adalah X ATR dari harga masuk (bisa disesuaikan).
Strategi ini menggabungkan ekstrem RSI sebagai sinyal momentum dan entri pullback untuk menangkap titik pembalikan potensial dalam tren, dengan tingkat kemenangan yang tinggi.
Mekanisme mengambil keuntungan bergerak mengunci keuntungan parsial sesuai dengan tindakan harga yang sebenarnya, mengurangi penarikan.
Stop ATR membantu secara efektif mengendalikan kerugian perdagangan tunggal.
Robusitas yang baik untuk diterapkan di pasar yang berbeda dan set parameter untuk replikasi perdagangan nyata yang mudah.
Stop loss yang terlalu luas jika ATR multiplier diatur terlalu tinggi, meningkatkan kerugian per perdagangan.
Memindahkan mekanisme mengambil keuntungan dapat mengurangi margin keuntungan jika konsolidasi berlangsung lama.
Hilang perdagangan jika pullback meluas lebih dari 6 bar.
Potensi slippage atau breakout palsu jika peristiwa berita utama terjadi.
Tes memperpendek jumlah bar entri dari 6 menjadi 4 untuk meningkatkan tingkat entri.
Uji meningkatkan pengganda ATR untuk kehilangan kontrol lebih lanjut per perdagangan.
Menggabungkan indikator volume untuk menghindari kerugian dari divergensi dalam konsolidasi.
Masuk pada jeda mundur 60 menit titik tengah untuk menyaring kebisingan.
Momentum Pullback Strategy adalah pendekatan reversi rata-rata jangka pendek yang sangat praktis, menggabungkan elemen tren, pembalikan dan manajemen risiko untuk perdagangan riil yang mudah sementara masih membawa potensi penghasil alfa. Peningkatan stabilitas lebih lanjut dimungkinkan melalui penyesuaian parameter dan penggabungan indikator tambahan.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 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/ // © Marcns_ //@version=5 strategy("M0PB", commission_value = 0.0004, slippage = 1, initial_capital=30000) // commision is equal to approx $3.8 per round trip which is accurate for ES1! futures and slippage per trade is conservatively 1 tick in and 1 tick out. // *momentum pull back* // // long / short strategy that identifies extreme readings on the rsi as a *momentum signal* //Strategy buys/ sells a pullback to the 5ema(low)/ 5ema(high) and exits at rolling 12 bar high/ low. The rolling high/ low feature means that //if price enters into a pronlonged consolidation the profit target will begin to reduce with each new bar. The best trades tend to work within 2-6 bars // hard stop is X atr's from postion average price. This can be adjusted in user inputs. // built for use on 5 min & 1min intervals on: FX, Indexes, Crypto // there is a lot of slack left in entries and exits but the overall strategy is fairly robust across timeframes and markets and has between 60%-70% winrate with larger winners. // signals that occur from economic news volatility are best avoided. // define rsi r = ta.rsi(close,6) // find rsi > 90 b = 0.0 if r >= 90 b := 1.0 else na // find rsi < 10 s = 0.0 if r <= 10 s := -1.0 else na // plot rsi extreme as painted background color bgcolor(b ? color.rgb(255, 82, 82, 49): na) bgcolor(s? color.rgb(76, 175, 79, 51): na) // exponential moving averages for entries. note that source is high and low (normally close is def input) this creates entry bands //entry short price using high as a source ta.ema(high,5) es = ta.ema(high,5) //entry long price using low as a source ta.ema(low,5) el = ta.ema(low,5) // long pullback entry trigger: last period above ema and current low below target ema entry let = 0.0 if low[1] > el[1] and low <= el let := 1.0 else na //short entry trigger "" set = 0.0 if high[1] < es[1] and high >= es set := -1.0 else na // create signal "trade_l" if RSI > 90 and price pulls back to 5ema(low) within 6 bars trade_l = 0.0 if ta.barssince(b == 1.0) < 6 and let == 1.0 trade_l := 1.0 else na plot(trade_l, "l_entry", color.green) //create short signal "trade_s" if rsi < 10 and prices pullback to 5em(high) wihthin 6 bars trade_s = 0.0 if ta.barssince(s == -1.0) < 6 and set == -1.0 trade_s := -1.0 else na plot(trade_s, "s_entry", color.purple) // define price at time of trade_l signal and input value into trade_p to use for stop parems later trade_p = strategy.position_avg_price //indentify previous 12 bar high as part of long exit strat // this creates a rolling 12 bar high target... a quick move back up will exit at previous swing high but if a consolidation occurs system will exit on a new 12 bar high which may be below prev local high ph = ta.highest(12) // inverse of above for short exit strat - previous lowest low of 12 bars as exit (rolling) pl = ta.lowest(12) // 1.5 atr stop below entry price (trade_p defined earlier) as part of exit strat atr_inp = input.float(2.75, "atr stop", minval = 0.1, maxval = 6.0) atr = ta.atr(10) stop_l = trade_p - (atr* atr_inp) stop_s = trade_p + (atr* atr_inp) //strat entry long strategy.entry("EL", strategy.long, 2, when = trade_l == 1.0) //strat entry short strategy.entry("ES", strategy.short, 2, when = trade_s == -1.0) //strat long exit if strategy.position_size == 2 strategy.exit(id = "ph", from_entry = "EL", qty = 2, limit = ph) if strategy.position_size == 2 strategy.close_all(when = low[1] > stop_l[1] and low <= stop_l) // strat short exit if strategy.position_size == -2 strategy.exit(id = "pl", from_entry = "ES", qty = 2, limit =pl) if strategy.position_size == -2 strategy.close_all(when = high[1] < stop_s[1] and high >= stop_s) // code below to trail remaining 50% of position // //if strategy.position_size == 1 //strategy.exit(id ="trail", from_entry = "EL", qty = 1, stop = el)