Strategi Penarikan Momentum


Tanggal Pembuatan: 2023-12-12 16:34:52 Akhirnya memodifikasi: 2023-12-12 16:34:52
menyalin: 0 Jumlah klik: 837
1
fokus pada
1621
Pengikut

Strategi Penarikan Momentum

Ringkasan

Momentum Pullback Strategy adalah strategi jangka pendek yang mengidentifikasi nilai ekstrim RSI sebagai sinyal momentum. Berbeda dengan kebanyakan strategi RSI, strategi ini mencari pullback pertama untuk masuk ke dalam arah bacaan RSI ekstrim.

Ini melakukan over/under pada titik awal penarikan pada 5th EMA (minimum harga) / 5th EMA (maksimum harga) dan bergulir pada titik tertinggi/terendah pada 12 garis K. Mekanisme tinggi/rendah bergulir ini berarti bahwa target stop akan turun dengan munculnya setiap garis K baru jika harga masuk ke penarikan jangka panjang.

Jarak stop loss yang disarankan adalah X kali ATR dari harga masuk (dapat disesuaikan dalam parameter input pengguna).

Strategi ini memiliki stabilitas yang kuat untuk setiap siklus waktu dan pasar, dengan tingkat kemenangan antara 60-70% dan volume perdagangan yang menguntungkan yang lebih besar. Perlu dihindari untuk menghasilkan sinyal dalam fluktuasi yang disebabkan oleh berita ekonomi besar.

Prinsip Strategi

  1. Hitung RSI 6 hari, cari titik ekstrim di atas 90 (Overbought) dan di bawah 10 (Overbought)

  2. Ketika RSI overbought, dalam 6 K-line menarik kembali ke 5 hari EMA (minus line) untuk melakukan over entry

  3. Ketika RSI oversold, tarik kembali ke EMA 5 hari di 6 garis K untuk melakukan head-off

  4. Strategi keluar adalah bergerak berhenti, posisi panjang dengan titik tertinggi dari 12 garis K terakhir sebagai tujuan keluar pertama, kemudian diperbarui menjadi titik tertinggi 12 garis K baru ketika garis K baru muncul, untuk mencapai keluar bergulir ≠ kosong sebaliknya, berhenti untuk bergulir 12 garis K titik terendah.

  5. Stop loss distance adalah X kali ATR harga masuk, dapat disesuaikan.

Analisis Keunggulan

Strategi ini menggabungkan RSI Extreme sebagai sinyal momentum dan retracement entry, untuk menangkap potensi reversal dalam tren, dan memiliki tingkat kemenangan yang tinggi.

Mekanisme stop-loss bergerak diaktifkan, yang dapat mengunci sebagian keuntungan berdasarkan pergerakan harga aktual, mengurangi penarikan.

Stop loss ATR dapat mengontrol kerugian tunggal secara efektif.

Stabilitas yang lebih kuat, dapat digunakan untuk berbagai pasar dan kombinasi parameter, mudah disalin ke hard disk.

Analisis risiko

Jika nilai ATR terlalu besar, hal ini dapat menyebabkan stop loss terlalu jauh, dan kerugian tunggal meningkat.

Jika terjadi penarikan ██, mekanisme penarikan bergerak akan mengurangi ruang untung.

Jika Anda menarik kembali jarak lebih dari 6 garis K, Anda akan kehilangan waktu masuk.

Jika terjadi peristiwa ekonomi besar, perdagangan dapat mengalami slippage atau false breakout.

Arah optimasi

Dapat diuji untuk mempersingkat jumlah akar masuk, misalnya dari 6 hingga 4 garis K, untuk meningkatkan tingkat keberhasilan masuk.

Peningkatan ATR dapat diuji untuk mengontrol lebih lanjut stop loss.

Untuk menghindari kerugian yang ditimbulkan oleh punggung yang tidak teratur, indikator energi kuantitatif dapat digabungkan.

Anda bisa masuk ke babak berikutnya setelah melewati babak 60 menit, dan Anda bisa menyaring beberapa suara.

Meringkaskan

Secara keseluruhan, strategi retracement dinamis adalah strategi penangkapan garis pendek yang sangat praktis. Ini menggabungkan beberapa aspek seperti tren, pembalikan, dan stop loss, yang memungkinkan operasi yang mudah dan memiliki beberapa alpha.

Kode Sumber Strategi
/*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)