
Strategi penarikan balik purata bergerak adalah strategi perdagangan kuantitatif yang mengesan persilangan harga saham dengan purata bergerak, menilai sama ada ada peluang penarikan balik berlaku, dan jika ada, melakukan operasi terbalik. Strategi ini menggunakan penarikan balik Fibonacci, menetapkan titik masuk dan titik berhenti untuk menangkap penarikan balik harga jangka pendek.
Strategi ini adalah berdasarkan dua rata-rata bergerak: EMA 14 hari dan SMA 56 hari. Apabila EMA 14 hari membuat isyarat beli ketika ia melintasi SMA 56 hari dari bawah. Selepas itu, kod akan kembali ke hari ke-20 untuk mencari titik rendah sebagai sokongan, kemudian menggabungkan harga dekat yang melintasi titik untuk memetakan garis tarik Fibonacci, dengan 1.272x garis tarik sebagai entrance, 0.618x garis tarik sebagai exit.
Strategi ini terdiri daripada beberapa langkah utama:
Ini adalah proses utama dan prinsip kerja strategi tersebut. Strategi ini dapat menangkap peluang untuk mendapatkan keuntungan apabila harga berbalik dalam jangka pendek.
Strategi ini mempunyai beberapa kelebihan:
Secara keseluruhannya, strategi ini sangat sesuai untuk perdagangan berbalik-balik garis pendek, untuk menangkap peluang seperti ini apabila terdapat penyesuaian tertentu dalam pasaran. Pelaksanaan strategi ini juga lebih mudah dan langsung.
Walaupun ia mempunyai kelebihan tersendiri, terdapat beberapa risiko yang perlu diperhatikan:
Untuk risiko yang disebutkan di atas, kita boleh menetapkan masa berhenti yang lebih pendek, mengawal kerugian tunggal dengan ketat; dan mengoptimumkan julat julat untuk menarik balik, menetapkan keuntungan sasaran yang munasabah, dan dengan itu mengelakkan sebahagian daripada risiko.
Terdapat banyak ruang untuk pengoptimuman dalam strategi ini, terutamanya dari segi berikut:
Uji parameter yang berbeza, seperti panjang kitaran purata bergerak, hari mundur, dan kelipatan garis mundur, untuk mencari parameter yang optimum;
Menambah mekanisme penangguhan kerugian, yang boleh menggunakan penangguhan ganda atau penangguhan bergerak, untuk mengawal risiko dengan lebih baik;
Berkongsi dengan penunjuk FILTER yang lain, mengelakkan perdagangan dalam keadaan pasaran yang tidak sesuai;
Mengoptimumkan pengurusan dana, menetapkan saiz kedudukan yang munasabah dan ambang risiko.
Dengan menguji dan mengoptimumkan parameter, strategi ini dapat diperbaiki lagi, dan hasilnya adalah prestasi dagangan yang lebih stabil.
Strategi bergerak rata-rata tarik balik adalah strategi perdagangan garis pendek yang sangat praktikal. Ia dapat menangkap peluang pembalikan harga dalam jangka pendek, berdagang melalui titik masuk dan titik henti yang ditetapkan sebelumnya.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MAC Pullback", overlay=true)
// Setting up timeperiod for testing
startPeriodYear = input(2014, "Backtest Start Year")
startPeriodMonth = input(1, "Backtest Start Month")
startPeriodDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(startPeriodYear, startPeriodMonth, startPeriodDay, 0, 0)
stopPeriodYear = input(2035, "Backtest Stop Year")
stopPeriodMonth = input(12, "Backtest Stop Month")
stopPeriodDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(stopPeriodYear, stopPeriodMonth, stopPeriodDay, 0, 0)
// Moving Averages
ema14 = ema(close, 14)
ema28 = ema(close, 28)
sma56 = sma(close, 56)
// Plot
plot(ema14, title="ema14", linewidth=2, color=green)
plot(ema28, title="ema28", linewidth=2, color=red)
plot(sma56, title="sma56", linewidth=3, color=blue)
// Strategy
goLong = cross(ema14, sma56) and ema14 > ema28
goShort = cross(ema14, sma56) and ema14 < ema28
// Locate Swing Lows
leftBars = input(20)
rightBars=input(20)
swinglow = pivotlow(close, leftBars, rightBars)
plot(swinglow, style=cross, linewidth=8, color=#00FF00, offset=-rightBars)
if goLong == true and time >= testPeriodStart and time <= testPeriodStop
// We try to make sure that we're catching the first Pullback after the crossover
if ema14[12] < sma56[12]
pivotpoint = lowest(40)[0] //lowest value of the month as our swing low
// We calculate a Fib 1.272 extension (from the previous swing low to
// the crossover long entry's open) and use this as our entry target to short the Pullback
extensiontarget = ((close[1] - pivotpoint) * 1.27) + pivotpoint
shorttarget = ((close[1] - pivotpoint) * 0.618) + pivotpoint
strategy.order("Pullback", strategy.short, 5.0, limit=extensiontarget)
// I would like to use a trailing stop but for know we just hope to get
// filled if the pullback reaches all the way down to the 0.618.
// We also place a tight stop loss since we trying to short an uptrend
strategy.exit("Pullback Exit", "Pullback", limit=shorttarget, loss=400)