
Strategi ini, yang dinamakan strategi perdagangan kuantitatif berdasarkan harga dan silang SMA, menghasilkan isyarat perdagangan dengan mengira SMA pada kitaran yang berbeza, dan mengesan harga dan silang SMA. Ia menghasilkan isyarat beli apabila harga menembusi SMA dari bawah ke atas; ia menghasilkan isyarat jual apabila harga menembusi SMA dari atas ke bawah.
Logik teras strategi ini adalah untuk mengesan persilangan harga dengan purata bergerak mudah 21 hari (SMA). Pada masa yang sama, strategi ini juga mengira SMA 50 hari dan SMA 200 hari, yang membantu menentukan trend yang lebih besar.
Secara khusus, strategi ini meminta untuk mendapatkan harga penutupan saham dalam julat tarikh yang ditetapkan, dan kemudian mengira SMA yang berbeza berdasarkan kitaran SMA input. Jika harga dari bawah ke atas menembusi SMA 21 hari, isyarat beli akan ditetapkan; jika harga dari atas ke bawah menembusi SMA 21 hari, isyarat jual akan ditetapkan.
Semasa mengira SMA dan menilai persilangan, strategi akan mengesan kedudukan semasa. Apabila isyarat membeli dicetuskan, strategi akan masuk ke kedudukan; apabila isyarat menjual, strategi akan meratakan kedudukan. Dengan cara ini, perdagangan automatik yang berdasarkan sistem persilangan SMA diselesaikan.
Kelebihan terbesar strategi ini adalah kesederhanaan, mudah difahami dan dilaksanakan. SMA adalah indikator analisis teknikal yang biasa digunakan, dan penyambungan SMA adalah salah satu isyarat perdagangan yang biasa. Strategi berdasarkan penyambungan indikator ini boleh digunakan dengan mudah untuk saham dan jangka masa yang berbeza, sesuai untuk perdagangan automatik.
Kelebihan lain ialah strategi ini dapat dioptimumkan dengan menyesuaikan parameter SMA. Sebagai contoh, anda boleh menguji kombinasi kitaran SMA yang berbeza untuk mencari parameter terbaik yang sesuai dengan undang-undang turun naik saham tertentu. Selain itu, strategi ini juga dapat disahkan dan dioptimumkan dengan menambahkan indikator lain.
Risiko terbesar dalam strategi ini adalah bahawa strategi jenis penunjuk akan menghasilkan lebih banyak isyarat yang salah. Sebagai contoh, pada masa yang bergolak, harga mungkin sering melintasi SMA di bawah tanah, menyebabkan isyarat perdagangan yang tidak perlu.
Penyelesaian yang biasa termasuk menetapkan stop loss, menyesuaikan parameter, atau menambah syarat penapisan. Sebagai contoh, anda boleh menetapkan nisbah kerugian maksimum untuk mengehadkan risiko; anda juga boleh menyesuaikan kitaran SMA, memilih kombinasi parameter yang lebih stabil; atau menambah pengesahan indikator lain untuk menapis sebahagian daripada isyarat.
Strategi ini boleh dioptimumkan dengan cara berikut:
Uji dan pilih kombinasi parameter SMA terbaik. Anda boleh mengkaji semula panjang SMA yang berbeza untuk mencari kitaran yang paling sesuai.
Tambah pengesahan isyarat penapis lain, seperti RSI, MACD dan sebagainya. Ini boleh menapis beberapa isyarat yang salah.
Tambah logik stop loss. Tetapkan kerugian maksimum yang boleh diterima atau bergerak stop loss untuk mengawal risiko.
Optimumkan masa kemasukan. Anda boleh mempertimbangkan kemasukan berhampiran titik penembusan yang penting, dan bukannya secara ketat mengikuti persimpangan SMA.
Uji strategi komposit. Ia boleh dipertimbangkan untuk digunakan bersama dengan jenis strategi lain, seperti trend tracking, kombinasi.
Strategi ini membolehkan perdagangan automatik melalui penyambungan indikator SMA yang mudah. Kelebihannya adalah mudah dan mudah difahami; Kelebihannya adalah isyarat yang kerap dan mudah ditiru. Kita boleh meningkatkan kesan strategi dengan cara mengoptimumkan parameter, menambah penapis, menghentikan kerugian, dan sebagainya.
/*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")