Strategi Dagangan Peralihan Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-10-16 15:50:35
Tag:

img

Ringkasan

Strategi perdagangan pembalikan purata bergerak berganda menghasilkan isyarat perdagangan dengan mengira purata bergerak mudah dari dua tempoh yang berbeza - jangka pendek dan jangka panjang. Ia menjadi panjang apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, dan menjadi pendek apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang. Strategi ini tergolong dalam kategori strategi trend berikut.

Logika Strategi

Strategi ini menetapkan dua purata bergerak mudah dengan panjang tempoh yang berbeza melalui parameter input, dengan MA jangka pendek yang dirujuk sebagai garis pantas, dan MA jangka panjang yang dirujuk sebagai garis perlahan. Garis pantas bertindak balas lebih cepat terhadap perubahan harga dan menangkap trend jangka pendek, sementara garis perlahan bertindak balas lebih perlahan terhadap perubahan harga dan menapis bunyi pasaran jangka pendek, menangkap trend utama. Apabila garis pantas melintasi di atas garis perlahan, ia menunjukkan bahawa trend menaik semakin kuat dan kedudukan panjang diambil. Apabila garis pantas melintasi di bawah garis perlahan, ia menunjukkan bahawa trend menurun semakin kuat dan kedudukan pendek diambil.

Secara khusus, strategi ini mengira kedua-dua MAs menggunakan fungsi sma(), menetapkan hasilnya kepada xSMA (garis perlahan) dan garisan pantas. MAs dikira berdasarkan harga penutupan. Apabila harga penutupan melintasi di atas xSMA, kedudukan panjang diambil. Apabila harga penutupan melintasi di bawah xSMA, kedudukan pendek diambil. Strategi ini juga menetapkan had julat masa perdagangan, sehingga isyarat perdagangan hanya dihasilkan dalam julat masa yang ditentukan.

Titik mengambil keuntungan dan stop loss ditetapkan untuk setiap perdagangan, dan keuntungan diambil atau stop loss diaktifkan dengan segera apabila harga mencapai tahap mengambil keuntungan atau stop loss. Sementara itu, strategi merangka hubungan harga vs MA pada bar menggunakan fungsi barcolor - bar berwarna hijau semasa kedudukan panjang, merah semasa kedudukan pendek, dan biru apabila rata.

Analisis Kelebihan

  • Menggunakan sistem MA berganda dapat dengan berkesan mengesan trend dan mengelakkan ditipu oleh bunyi pasaran jangka pendek
  • Menggabungkan MA pantas dan perlahan boleh meningkatkan kualiti isyarat perdagangan
  • Mengendalikan risiko mengambil keuntungan dan titik hentian kerugian untuk setiap perdagangan
  • Mengehadkan julat masa dagangan mengelakkan perubahan besar di sekitar peristiwa utama
  • Merangka isyarat perdagangan pada bar mewujudkan bantuan visual dan meningkatkan intuisi

Analisis Risiko

  • Sistem MA berganda cenderung menghasilkan lebih banyak isyarat palsu, meningkatkan kekerapan perdagangan dan kos
  • Parameter MA perlu ditetapkan dengan munasabah, jika tidak, kesan penyelarasan menderita atau terlalu banyak peluang yang hilang
  • Sistem MA mempunyai kelewatan dan mungkin terlepas titik perubahan trend
  • Pendapatan tetap mengambil keuntungan / berhenti kerugian mungkin terlalu tumpul dan tidak dapat diselaraskan secara dinamik
  • Mengehadkan julat masa dagangan boleh kehilangan peluang dalam tempoh lain

Risiko boleh dikurangkan dengan menyesuaikan parameter MA, mengoptimumkan mengambil keuntungan / strategi stop loss, menghilangkan batasan masa atau menetapkan tempoh masa perdagangan yang lebih munasabah.

Arahan pengoptimuman

  • Uji gabungan tempoh MA yang berbeza untuk mencari parameter optimum
  • Pertimbangkan stop loss / keuntungan yang dinamik, contohnya berdasarkan ATR
  • Menggabungkan penunjuk lain seperti MACD, KD dll sebagai isyarat penapis
  • Mengoptimumkan julat masa perdagangan untuk menangkap lebih banyak peluang
  • Gabungkan dengan strategi breakout, mencari isyarat breakout di sekitar MAs
  • Membina mekanisme keluar dinamik, secara aktif berhenti keluar apabila harga memasuki julat

Ringkasan

Strategi perdagangan pembalikan purata bergerak berganda secara keseluruhan adalah strategi trend berikut yang mudah dan praktikal. Ia mengambil kesempatan penuh daripada kesan pelemahan MA untuk mengenal pasti arah trend, dan menggunakan MA cepat / perlahan untuk menjana isyarat perdagangan. Strategi ini mudah dilaksanakan dengan logik yang jelas, sesuai untuk dimengerti oleh pemula. Walau bagaimanapun, ia boleh menjana isyarat palsu yang berlebihan dan masalah kelewatan. Penambahbaikan boleh dibuat melalui pengoptimuman parameter, menambah penunjuk tambahan dan lain-lain untuk menjadikan strategi lebih mantap. Jika digunakan dengan betul, strategi ini dapat memberikan keuntungan yang stabil dan bernilai pengujian dan pengoptimuman yang komprehensif.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
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
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

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)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
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)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
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(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)

Lebih lanjut