Strategi perdagangan pembalikan rata-rata bergerak ganda

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

img

Gambaran umum

Strategi perdagangan reversal moving average ganda menghasilkan sinyal perdagangan dengan menghitung moving average sederhana dari dua periode yang berbeda - jangka pendek dan jangka panjang. Ini menjadi panjang ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang, dan menjadi pendek ketika rata-rata bergerak jangka pendek melintasi di bawah rata-rata bergerak jangka panjang.

Logika Strategi

Strategi ini menetapkan dua rata-rata bergerak sederhana dengan panjang periode yang berbeda melalui parameter input, dengan MA jangka pendek yang disebut sebagai garis cepat, dan MA jangka panjang yang disebut sebagai garis lambat. Garis cepat bereaksi lebih cepat terhadap perubahan harga dan menangkap tren jangka pendek, sementara garis lambat bereaksi lebih lambat terhadap perubahan harga dan menyaring kebisingan pasar jangka pendek, menangkap tren utama. Ketika garis cepat melintasi di atas garis lambat, itu menunjukkan bahwa tren naik menguat dan posisi panjang diambil. Ketika garis cepat melintasi di bawah garis lambat, itu menunjukkan bahwa tren menurun menguat dan posisi pendek diambil.

Secara khusus, strategi menghitung dua MAs menggunakan fungsi sma (), menetapkan hasilnya ke xSMA (line lambat) dan line cepat. MAs dihitung berdasarkan harga penutupan. Ketika harga penutupan melintasi di atas xSMA, posisi panjang diambil. Ketika harga penutupan melintasi di bawah xSMA, posisi pendek diambil. Strategi juga menetapkan batas rentang waktu perdagangan, sehingga sinyal perdagangan hanya dihasilkan dalam rentang waktu yang ditentukan.

Take profit dan stop loss point ditetapkan untuk setiap perdagangan, dan profit diambil atau stop loss dipicu segera ketika harga mencapai level take profit atau stop loss. sementara itu, strategi memetakan hubungan harga vs MA pada bar menggunakan fungsi barcolor - bar berwarna hijau selama posisi panjang, merah selama posisi pendek, dan biru ketika datar.

Analisis Keuntungan

  • Menggunakan sistem MA ganda dapat secara efektif melacak tren dan menghindari tertipu oleh kebisingan pasar jangka pendek
  • Menggabungkan MAs cepat dan lambat dapat meningkatkan kualitas sinyal perdagangan
  • Mengontrol risiko titik mengambil keuntungan dan stop loss untuk setiap perdagangan
  • Membatasi rentang waktu perdagangan menghindari perubahan besar di sekitar peristiwa besar
  • Memprotes sinyal perdagangan pada batang menciptakan bantuan visual dan meningkatkan intuisi

Analisis Risiko

  • Sistem MA ganda cenderung menghasilkan lebih banyak sinyal palsu, meningkatkan frekuensi perdagangan dan biaya
  • Parameter MA harus ditetapkan secara wajar, jika tidak efek smoothing akan terganggu atau terlalu banyak kesempatan yang hilang
  • Sistem MA memiliki keterlambatan dan mungkin melewatkan titik balik tren
  • Fixed take profit/stop loss mungkin terlalu tumpul dan tidak dapat disesuaikan secara dinamis
  • Membatasi rentang waktu perdagangan dapat kehilangan peluang di periode lain

Risiko dapat dikurangi dengan menyesuaikan parameter MA, mengoptimalkan strategi take profit/stop loss, menghapus keterbatasan waktu atau menetapkan periode waktu perdagangan yang lebih wajar.

Arahan Optimasi

  • Uji kombinasi periode MA yang berbeda untuk menemukan parameter optimal
  • Pertimbangkan stop loss/profit trailing dinamis, misalnya berdasarkan ATR
  • Masukkan indikator lain seperti MACD, KD dll sebagai sinyal filter
  • Mengoptimalkan jangka waktu perdagangan untuk menangkap lebih banyak peluang
  • Gabungkan dengan strategi breakout, mencari sinyal breakout di sekitar MAs
  • Membangun mekanisme keluar dinamis, secara aktif berhenti keluar ketika harga memasuki kisaran

Ringkasan

Strategi perdagangan pembalikan rata-rata bergerak ganda secara keseluruhan adalah strategi trend berikut yang sederhana dan praktis. Ini memanfaatkan sepenuhnya efek pelembab MAs untuk mengidentifikasi arah tren, dan menggunakan MAs cepat / lambat untuk menghasilkan sinyal perdagangan. Strategi ini mudah diterapkan dengan logika yang jelas, cocok untuk dimengerti pemula. Namun, ini dapat menghasilkan sinyal palsu yang berlebihan dan masalah lag. Perbaikan dapat dilakukan melalui optimasi parameter, menambahkan indikator bantu dll untuk membuat strategi lebih kuat. Jika digunakan dengan benar, strategi ini dapat memberikan keuntungan yang stabil dan layak pengujian dan optimasi 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 banyak