
Breakout retracement trading strategy adalah strategi trading short line yang terdiri dari beberapa indikator untuk menilai tren besar, tren menengah, dan tren jangka pendek, dan untuk melakukan perdagangan dengan sinyal konfirmasi yang disesuaikan dan saling melengkapi indikator.
Strategi ini terutama didasarkan pada indikator kekuatan mutlak harga dan indikator MACD untuk mencapai perdagangan penyesuaian yang mendobrak. Pertama, menghitung harga 9 siklus, 21 siklus dan 50 siklus EMA, untuk menentukan arah tren besar; kemudian menghitung indikator kekuatan mutlak harga, yang mencerminkan kekuatan penyesuaian jangka pendek; akhirnya menghitung indikator MACD untuk menentukan arah tren jangka pendek.
Secara khusus, tren besar varietas untuk naik harus memenuhi 9 hari EMA lebih tinggi dari 21 hari EMA, 21 hari EMA lebih tinggi dari 50 hari EMA. Kriteria penilaian penyesuaian jangka pendek adalah defisit indikator kekuatan mutlak kurang dari 0, MACDDIFF kurang dari 0. Tren besar varietas untuk turun harus memenuhi 9 hari EMA kurang dari 21 hari EMA, 21 hari EMA kurang dari 50 hari EMA. Kriteria penilaian bouncing jangka pendek adalah defisit indikator kekuatan mutlak lebih tinggi dari 0, MACDDIFF lebih tinggi dari 0.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Untuk menghadapi risiko di atas, dapat dilakukan perbaikan dengan mengoptimalkan parameter, menilai indikator siklus yang berbeda; menyesuaikan aturan memegang posisi, mengendalikan kerugian tunggal; menggabungkan sinyal penyaringan indikator lebih banyak, meningkatkan akurasi dan lain-lain.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Secara keseluruhan, breakout retracement trading strategy adalah strategi trading short line yang lebih stabil. Strategi ini menggabungkan penilaian tren besar, menengah, dan pendek untuk menghindari kesalahan perdagangan dalam situasi yang bergolak. Penggunaan kombinasi indikator juga meningkatkan akurasi penilaian.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Divergence Scalper [30MIN]", overlay=true , commission_value=0.04 )
message_long_entry = input("long entry message")
message_long_exit = input("long exit message")
message_short_entry = input("short entry message")
message_short_exit = input("short exit message")
//3x ema
out9 = ta.ema(close,9)
out21 = ta.ema(close,21)
out50 = ta.ema(close,50)
//abs
absolute_str_formula( ) =>
top=0.0
bottom=0.0
if(close>close[1])
top:= nz(top[1])+(close/close[1])
else
top:=nz(top[1])
if(close<=close[1])
bottom:= nz(bottom[1])+(close[1]/close)
else
bottom:=nz(bottom[1])
if (top+bottom/2>=0)
1-1/(1+(top/2)/(bottom/2))
abs_partial=absolute_str_formula()
abs_final = abs_partial - ta.sma(abs_partial,50)
//macd
fast_length = input(title="Fast Length", defval=23)
slow_length = input(title="Slow Length", defval=11)
src = input(title="Source", defval=open)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 6)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="SMA", options=["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
long= abs_final > 0 and hist <0 and out9<out21 and out21<out50
short = abs_final <0 and hist >0 and out9>out21 and out21>out50
long_exit = abs_final <0 and hist >0 and out9>out21 and out21>out50
short_exit = abs_final > 0 and hist <0 and out9<out21 and out21<out50
strategy.entry("long", strategy.long, when = long and barstate.isconfirmed, alert_message = message_long_entry)
strategy.entry("short", strategy.short, when = short and barstate.isconfirmed, alert_message = message_short_entry)
strategy.close("long", when = long_exit and barstate.isconfirmed, alert_message = message_long_exit)
strategy.close("short", when = short_exit and barstate.isconfirmed, alert_message = message_short_exit)