Strategi Perdagangan Breakout Saluran Rata-rata yang Bergerak

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

img

Gambaran umum

Strategi ini didasarkan pada prinsip salib emas dan salib kematian dari rata-rata bergerak sederhana, membuat keputusan beli dan jual berdasarkan penyeberangan rata-rata bergerak 7 hari dan 14 hari. Ini menghasilkan sinyal beli ketika MA 7 hari melintasi di atas MA 14 hari dari bawah, dan sinyal jual ketika MA 7 hari melintasi di bawah MA 14 hari dari atas. Strategi ini juga menampilkan fungsi stop loss, take profit, dan trailing stop untuk mengunci keuntungan dan mengendalikan risiko.

Logika Strategi

Logika perdagangan inti dari strategi ini didasarkan pada prinsip crossover dari rata-rata bergerak 7 hari dan 14 hari. MA 7 hari mencerminkan tren harga jangka pendek, sementara MA 14 hari mencerminkan tren jangka menengah. Ketika MA jangka pendek melintasi di atas MA jangka menengah dari bawah, itu menandakan bahwa tren jangka pendek semakin kuat, menjadikannya waktu yang baik untuk pergi panjang. Sebaliknya, ketika MA jangka pendek melintasi di bawah MA jangka menengah dari atas, itu menandakan bahwa tren jangka pendek melemah, jadi seseorang harus menutup posisi atau pergi pendek.

Secara khusus, strategi ini menghitung rata-rata bergerak sederhana 7 hari dan 14 hari menggunakan indikator SMA. Setelah setiap candlestick terbentuk, itu membandingkan nilai saat ini dari garis 7 hari dan garis 14 hari. Jika garis 7 hari melintasi di atas garis 14 hari, sinyal panjang dihasilkan untuk pergi panjang. Jika garis 7 hari melintasi di bawah garis 14 hari, sinyal pendek dihasilkan untuk pergi pendek.

Selain itu, strategi juga menetapkan fungsi stop loss, take profit, dan trailing stop untuk mengunci keuntungan dan mengendalikan risiko. Parameter dapat dioptimalkan berdasarkan hasil backtest.

Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Aturan sederhana dan jelas, mudah dimengerti dan diterapkan, cocok untuk pemula untuk belajar.
  2. Prinsip crossover rata-rata bergerak telah diuji dan efektif, dengan tingkat kemenangan yang relatif tinggi.
  3. Dilengkapi dengan stop loss, take profit dan trailing stop untuk mengontrol risiko secara efektif.
  4. Beberapa parameter, nyaman untuk pengujian dan optimasi.

Risiko dan Tindakan Balap

Ada juga beberapa risiko dengan strategi ini:

  1. Rata-rata bergerak mungkin terlambat mencerminkan perubahan tren, berpotensi menyebabkan kerugian besar ketika tren berbalik.
  2. Sinyal silang yang sering terjadi di pasar yang berbeda menghasilkan lebih banyak sinyal palsu, yang melemahkan efektivitas strategi.

Untuk mengatasi risiko-risiko ini, langkah-langkah penanggulangan berikut dapat dipertimbangkan:

  1. Tambahkan indikator lain seperti MACD dan KDJ untuk menyaring sinyal silang dan menghindari sinyal yang salah pada titik balik tren.
  2. Luaskan stop loss range, kurangi periode holding untuk mengurangi dampak single loss.
  3. Mengoptimalkan parameter rata-rata bergerak berdasarkan kondisi pasar yang bervariasi, menggunakan periode yang lebih lama untuk pasar yang bervariasi.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Uji kombinasi dan parameter MA yang berbeda untuk menemukan pengaturan yang optimal.
  2. Tambahkan indikator lain untuk penyaringan sinyal untuk meningkatkan efektivitas strategi.
  3. Mengoptimalkan stop loss, mengambil parameter keuntungan untuk mengurangi drawdown dan meningkatkan rasio keuntungan.
  4. Parameter penyesuaian yang bagus berdasarkan produk dan sesi perdagangan yang berbeda.

Kesimpulan

Pada akhirnya, strategi ini sangat cocok untuk pemula untuk belajar. Logika sederhana dan mudah dipahami dan diimplementasikan. Ini juga memiliki daya adaptasi pasar yang relatif baik, dengan ruang yang cukup untuk penyesuaian parameter dan optimalisasi 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 banyak