Strategi pelacakan pembalikan rata-rata bergerak ganda

Penulis:ChaoZhang, Tanggal: 2023-12-07 17:40:12
Tag:

img

Ide utama dari strategi ini adalah menggunakan salib emas dan salib mati dari moving average sebagai sinyal perdagangan, dikombinasikan dengan price breakout dari moving average ganda untuk membuat entri dan stop. Ini menghasilkan sinyal beli ketika moving average jangka pendek melintasi di atas moving average jangka panjang; sinyal jual dihasilkan ketika moving average jangka pendek melintasi di bawah moving average jangka panjang. Dengan demikian strategi ini memiliki karakteristik trend berikut dan reversi rata-rata.

Prinsip-prinsip operasional yang terperinci adalah sebagai berikut:

  1. Menghitung rata-rata bergerak sederhana jangka pendek (SMA) dan rata-rata bergerak sederhana jangka panjang.

  2. Membandingkan apakah harga di atas atau di bawah rata-rata bergerak. Harga di atas rata-rata bergerak menunjukkan posisi panjang, sementara harga di bawah menunjukkan posisi pendek.

  3. Pergi panjang ketika SMA pendek melintasi SMA panjang; pergi pendek ketika SMA pendek melintasi SMA panjang.

  4. Berganti antara posisi panjang dan pendek.

Keuntungan utama dari strategi ini adalah:

  1. Strategi rata-rata bergerak ganda menggabungkan kedua trend berikut dan rata-rata reversi, yang mengambil keuntungan dari melacak tren pasar dan menangkap peluang pembalikan.

  2. Salib emas dan salib mati dari rata-rata bergerak memiliki beberapa daya tahan, yang membantu menyaring penyusutan palsu.

  3. Berdasarkan teori rata-rata bergerak, menguntungkan untuk mengunci keuntungan selama pasar tren dan rentang.

Risiko utama dari strategi ini adalah:

  1. Strategi rata-rata bergerak ganda sensitif terhadap parameter. pengaturan parameter yang tidak tepat dapat mengakibatkan overtrading atau kehilangan peluang.

  2. Penarikan yang gagal dapat menyebabkan kerugian.

  3. Pembalikan tren tidak dijamin akan berhasil. Tren awal dapat berlanjut sehingga mengakibatkan kerugian.

Arah utama optimasi:

  1. Uji dan optimalkan parameter rata-rata bergerak untuk menemukan kombinasi parameter terbaik.

  2. Tambahkan indikator penentuan tren untuk membedakan antara tren dan pasar yang berkisar.

  3. Mengimplementasikan stop loss yang efektif untuk mengendalikan risiko, seperti trailing stop loss, stop order loss dll.

  4. Gabungkan dengan indikator lain untuk meningkatkan ketahanan strategi.

Sebagai kesimpulan, sebagai strategi pelacakan pembalikan rata-rata bergerak ganda, ia mempertimbangkan pelacakan tren dan perdagangan pembalikan. Dengan optimasi parameter dan pengendalian risiko yang tepat, ia dapat mencapai hasil yang baik. Namun, setiap strategi menghadapi risiko seperti kesalahan arah, kegagalan stop loss dll. Pengujian dan optimasi berkelanjutan diperlukan untuk beradaptasi dengan perubahan pasar.


/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 10m
basePeriod: 1m
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig = iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos))
if (possig == 1)
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
if (possig == 0)
    strategy.close_all()
nColor = BarColors ? possig == -1 ? color.red : possig == 1 ? color.green : color.blue : na 
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Lebih banyak