Strategi Perdagangan Penembusan Saluran Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2024-01-29 14:31:25
Tag:

img

Ringkasan

Strategi ini berdasarkan prinsip salib emas dan salib kematian purata bergerak mudah, membuat keputusan membeli dan menjual berdasarkan persilangan purata bergerak 7 hari dan 14 hari. Ia menghasilkan isyarat beli apabila MA 7 hari melintasi di atas MA 14 hari dari bawah, dan isyarat jual apabila MA 7 hari melintasi di bawah MA 14 hari dari atas. Strategi ini juga mempunyai fungsi stop loss, mengambil keuntungan, dan trailing stop untuk mengunci keuntungan dan mengawal risiko.

Logika Strategi

Logik perdagangan teras strategi ini adalah berdasarkan prinsip silang purata bergerak 7 hari dan 14 hari. MA 7 hari mencerminkan trend harga jangka pendek, sementara MA 14 hari mencerminkan trend jangka sederhana. Apabila MA jangka pendek melintasi di atas MA jangka sederhana dari bawah, ia menandakan bahawa trend jangka pendek semakin kuat, menjadikannya masa yang baik untuk pergi panjang. Sebaliknya, apabila MA jangka pendek melintasi di bawah MA jangka sederhana dari atas, ia menandakan bahawa trend jangka pendek melemah, jadi seseorang harus menutup kedudukan atau pergi pendek.

Secara khusus, strategi ini mengira purata bergerak mudah 7 hari dan 14 hari menggunakan penunjuk SMA. Selepas setiap candlestick terbentuk, ia membandingkan nilai semasa garisan 7 hari dan garisan 14 hari. Jika garisan 7 hari melintasi di atas garisan 14 hari, isyarat panjang dihasilkan untuk pergi panjang. Jika garisan 7 hari melintasi di bawah garisan 14 hari, isyarat pendek dihasilkan untuk pergi pendek.

Di samping itu, strategi ini juga menetapkan fungsi stop loss, take profit, dan trailing stop untuk mengunci keuntungan dan mengawal risiko. Parameter boleh dioptimumkan berdasarkan hasil backtest.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Peraturan yang mudah dan jelas, mudah difahami dan dilaksanakan, sesuai untuk pemula belajar.
  2. Prinsip crossover purata bergerak telah diuji dan berkesan, dengan kadar kemenangan yang agak tinggi.
  3. Dilengkapi dengan Stop Loss, mengambil keuntungan dan trailing stop untuk mengawal risiko dengan berkesan.
  4. Beberapa parameter, mudah untuk ujian dan pengoptimuman.

Risiko dan Tindakan Balas

Terdapat juga beberapa risiko dengan strategi ini:

  1. Purata bergerak mungkin terlambat mencerminkan perubahan trend, berpotensi menyebabkan kerugian besar apabila trend berbalik.
  2. Isyarat silang yang kerap semasa pasaran yang berbeza menghasilkan lebih banyak isyarat palsu, yang melemahkan keberkesanan strategi.

Untuk menangani risiko ini, langkah-langkah balas berikut boleh dipertimbangkan:

  1. Tambah penunjuk lain seperti MACD dan KDJ untuk menapis isyarat silang dan mengelakkan isyarat yang salah pada titik perubahan trend.
  2. Memperluas julat stop loss, memendekkan tempoh tahan untuk mengurangkan kesan kehilangan tunggal.
  3. Mengoptimumkan parameter purata bergerak berdasarkan keadaan pasaran yang berbeza, menggunakan tempoh yang lebih lama untuk pasaran yang berbeza.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji kombinasi dan parameter MA yang berbeza untuk mencari persediaan yang optimum.
  2. Tambah penunjuk lain untuk penapisan isyarat untuk meningkatkan keberkesanan strategi.
  3. Mengoptimumkan stop loss, mengambil parameter keuntungan untuk mengurangkan drawdown dan meningkatkan nisbah keuntungan.
  4. Parameter penyempurnaan berdasarkan produk dan sesi dagangan yang berbeza.

Kesimpulan

Kesimpulannya, strategi ini sangat sesuai untuk pemula untuk belajar. Logiknya mudah dan mudah difahami dan dilaksanakan. Ia juga mempunyai daya adaptasi pasaran yang agak baik, dengan ruang yang cukup untuk penyesuaian parameter dan pengoptimuman untuk mencapai keuntungan yang stabil.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)






Lebih lanjut