Strategi perdagangan penyesuaian terobosan adalah strategi perdagangan garis pendek. Strategi ini menggabungkan beberapa petunjuk untuk menilai trend besar, trend pertengahan dan trend jangka pendek, dan untuk mengikuti trend melalui isyarat pengesahan trend yang sama dan saling melengkapi.
Strategi ini adalah berdasarkan kepada harga mutlak kekuatan dan MACD untuk mencapai penyesuaian semula perdagangan. Pertama, mengira harga 9 kitaran, 21 kitaran dan 50 kitaran EMA, untuk menentukan arah trend besar; kemudian mengira harga mutlak kekuatan, yang mencerminkan kekuatan penyesuaian jangka pendek; akhirnya mengira MACD untuk menentukan arah trend jangka pendek. Beli apabila trend besar meningkat dan terdapat penyesuaian jangka pendek; jual apabila trend besar menurun dan terdapat rebound jangka pendek.
Khususnya, tren besar untuk naik mesti memenuhi EMA 9 hari yang lebih tinggi daripada EMA 21 hari, EMA 21 hari lebih tinggi daripada EMA 50 hari. Kriteria penilaian penyesuaian jangka pendek adalah perbezaan indikator kekuatan mutlak kurang dari 0, MACDDIFF kurang dari 0. Tren besar untuk turun mesti memenuhi EMA 9 hari lebih rendah daripada EMA 21 hari, EMA 21 hari lebih rendah daripada EMA 50 hari. Kriteria penilaian rebound jangka pendek adalah perbezaan indikator kekuatan mutlak lebih tinggi daripada 0, MACDDIFF lebih tinggi daripada 0.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Untuk menghadapi risiko di atas, boleh dilakukan dengan mengoptimumkan parameter, menilai indikator kitaran yang berbeza; menyesuaikan peraturan pegangan, mengawal kerugian tunggal; menggabungkan lebih banyak isyarat penapisan indikator, meningkatkan ketepatan dan lain-lain.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Secara keseluruhannya, strategi perdagangan penyesuaian penyesuaian secara keseluruhan adalah strategi perdagangan garis pendek yang lebih stabil. Ia menggabungkan penghakiman tren besar dan pendek, mengelakkan perdagangan yang salah dalam keadaan gegaran.
/*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)