Strategi ini didasarkan pada prinsip mata uang yang bergerak sederhana, membuat keputusan pembelian dan penjualan melalui persilangan garis rata-rata 7 hari dan garis rata-rata 14 hari. Sinyal beli dikirim ketika garis rata-rata 7 hari menerobos garis rata-rata 14 hari dari bawah; Sinyal jual dikirim ketika garis rata-rata 7 hari dari atas ke bawah. Strategi ini memiliki fungsi stop loss, stop loss dan tracking stop loss untuk mengunci keuntungan dan mengendalikan risiko.
Logika perdagangan inti dari strategi ini didasarkan pada prinsip silang antara 7 hari rata-rata dan 14 hari rata-rata. Tren jangka pendek dari harga reaksi rata-rata 7 hari, tren jangka menengah dari harga reaksi rata-rata 14 hari.
Secara khusus, strategi ini menggunakan indikator SMA untuk menghitung rata-rata bergerak sederhana pada hari ke-7 dan ke-14. Setelah setiap garis K terbentuk, bandingkan hubungan ukuran antara garis ke-7 dan garis ke-14 saat ini. Jika garis ke-7 melewati garis ke-14, maka akan ada sinyal plus untuk masuk posisi panjang; Jika garis ke-7 melewati garis ke-14 di bawahnya, maka akan ada sinyal kosong untuk masuk posisi pendek.
Selain itu, strategi juga mengatur stop loss, stop-loss dan tracking stop loss untuk mengunci keuntungan dan mengendalikan risiko. Parameter spesifik dapat dioptimalkan berdasarkan hasil pengukuran ulang.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Untuk mengatasi risiko di atas, langkah-langkah berikut dapat dipertimbangkan:
Strategi ini dapat dioptimalkan dari beberapa arah:
Strategi ini secara keseluruhan sangat cocok untuk belajar pemula, prinsipnya sederhana, mudah dipahami dan diterapkan. Selain itu, juga memiliki adaptasi pasar yang baik, ruang yang lebih besar untuk menyesuaikan dan mengoptimalkan parameter, dan diharapkan untuk mendapatkan keuntungan yang stabil. Layak digunakan oleh pemula Quantitative Trading untuk memulai dan belajar.
/*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)