
Strategi ini, yang disebut strategi perdagangan kuantitatif berdasarkan harga dan SMA yang bersilang, menghasilkan sinyal perdagangan terutama dengan menghitung SMA dari berbagai siklus dan melacak harga dan persilangan SMA. Ketika harga dari bawah ke atas menembus SMA, menghasilkan sinyal beli; Ketika harga dari atas ke bawah menembus SMA, menghasilkan sinyal jual.
Logika inti dari strategi ini adalah untuk melacak persilangan harga dengan SMA 21 hari. Strategi ini juga menghitung SMA 50 hari dan SMA 200 hari, yang membantu menentukan tren yang lebih besar.
Secara khusus, strategi ini meminta untuk mendapatkan harga penutupan saham dalam kisaran tanggal yang ditentukan, dan kemudian menghitung SMA yang berbeda berdasarkan siklus SMA input. Jika harga naik dari bawah menembus SMA 21 hari, maka akan diatur sinyal beli; Jika harga turun dari atas menembus SMA 21 hari, maka akan diatur sinyal jual.
Strategi ini melacak posisi saat ini sambil menghitung SMA dan menilai crossover. Ketika sinyal beli dipicu, strategi akan masuk ke posisi; Ketika sinyal jual dipicu, strategi akan meratakan posisi. Dengan cara ini, menyelesaikan perdagangan otomatis berdasarkan sistem silang SMA.
Keuntungan terbesar dari strategi ini adalah sederhana, mudah digunakan, mudah dipahami dan diterapkan. SMA adalah indikator analisis teknis yang umum digunakan, dan SMA crossover adalah salah satu sinyal perdagangan yang umum. Strategi berbasis crossover indikator ini dapat dengan mudah diterapkan pada berbagai saham dan rentang waktu, cocok untuk perdagangan otomatis.
Keuntungan lain adalah bahwa strategi dapat dioptimalkan dengan menyesuaikan parameter SMA. Misalnya, kombinasi siklus SMA yang berbeda dapat diuji untuk mencari parameter terbaik yang sesuai dengan hukum fluktuasi saham tertentu. Selain itu, strategi juga dapat dikonfirmasi dan dioptimalkan dengan menambahkan indikator lain.
Risiko terbesar dari strategi ini adalah bahwa strategi indikator akan menghasilkan lebih banyak sinyal yang salah. Misalnya, selama periode konstan, harga mungkin sering melewati SMA di bawah tanah, yang menyebabkan sinyal perdagangan yang tidak perlu.
Solusi yang umum meliputi pengaturan stop loss, penyesuaian parameter, atau penambahan kondisi filter. Misalnya, Anda dapat mengatur rasio kerugian maksimum untuk membatasi risiko; Anda juga dapat menyesuaikan siklus SMA, memilih kombinasi parameter yang lebih stabil; atau menambahkan konfirmasi dari indikator lain untuk memfilter sebagian sinyal.
Strategi ini dapat dioptimalkan melalui beberapa arah:
Uji dan pilih kombinasi parameter SMA terbaik. Anda dapat memantau panjang SMA yang berbeda untuk mencari periode yang paling sesuai.
Tambahkan indikator lain seperti konfirmasi filter sinyal, seperti RSI, MACD, dll. Ini dapat menyaring beberapa sinyal yang salah.
Tambahkan Stop Loss Logic. Atur Maximum Toleransi Loss atau Pindahkan Stop Loss untuk Mengontrol Risiko.
Optimalkan waktu masuk. Anda dapat mempertimbangkan untuk masuk di dekat titik terobosan yang penting, daripada secara ketat mengikuti SMA crossover.
Tes strategi gabungan. Dapat dipertimbangkan untuk digunakan bersama dengan jenis strategi lain, seperti trend tracking, kombinasi.
Strategi ini memungkinkan perdagangan otomatis melalui pengalihan indikator SMA yang sederhana. Kelebihannya adalah sederhana dan mudah dipahami; Kekurangannya adalah sinyal yang sering dan mudah ditiru. Kita dapat meningkatkan efektivitas strategi dengan cara mengoptimalkan parameter, menambahkan filter, menghentikan kerugian, dll.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true)
// Define start and end year inputs
start_year = input.int(2022, title="Start Year")
end_year = input.int(2022, title="End Year")
// Define start and end month inputs
start_month = input.int(1, title="Start Month", minval=1, maxval=12)
end_month = input.int(12, title="End Month", minval=1, maxval=12)
// Define SMA length inputs
sma_length = input.int(21, title="SMA Length")
sma_length_50 = input.int(50, title="50 SMA Length")
sma_length_200 = input.int(200, title="200 SMA Length")
// Filter data within the specified date range
filter_condition = true
filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on)
// Define SMAs using the input lengths
sma = ta.sma(filtered_close, sma_length)
sma_50 = ta.sma(filtered_close, sma_length_50)
sma_200 = ta.sma(filtered_close, sma_length_200)
// Initialize position
var bool in_position = false
// Condition for a price cross above SMA within the date range
cross_above = filter_condition and ta.crossover(filtered_close, sma)
// Condition for a price cross below SMA within the date range
cross_below = filter_condition and ta.crossunder(filtered_close, sma)
// Buy condition
if cross_above
in_position := true
// Sell condition
if cross_below
in_position := false
// Strategy entry and exit
if cross_above
strategy.entry("Buy", strategy.long)
if cross_below
strategy.close("Buy")
// Plot the SMAs on the chart
plot(sma, color=color.blue, title="21 SMA")
plot(sma_50, color=color.red, title="50 SMA")
plot(sma_200, color=color.orange, title="200 SMA")
// Plot the Buy and Sell signals with "tiny" size
plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal")
plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")