Strategi Dagangan Kuantitatif Berdasarkan Price Crossover dengan SMA

Penulis:ChaoZhang, Tarikh: 2024-02-22 17:34:09
Tag:

img

Ringkasan

Strategi ini dinamakan Quantitative Trading Strategy Based on Price Crossover with SMA. Ia terutamanya menjana isyarat dagangan dengan mengira SMA dari tempoh yang berbeza dan mengesan silang harga dengan SMA. Apabila harga memecahkan SMA ke atas, ia mencetuskan isyarat beli. Apabila harga memecahkan SMA ke bawah, ia mencetuskan isyarat jual.

Logika Strategi

Logik teras strategi ini adalah untuk mengesan persilangan harga dengan purata bergerak mudah 21 hari (SMA). Sementara itu, ia juga mengira SMA 50 hari dan SMA 200 hari untuk menentukan trend umum.

Secara khusus, strategi meminta harga dekat dalam julat tarikh yang diberikan, dan mengira SMA yang berbeza berdasarkan tempoh input. Jika harga melanggar SMA 21 hari ke atas, ia menetapkan isyarat beli. Jika harga melanggar SMA 21 hari ke bawah, ia menetapkan isyarat jual.

Bersama dengan mengira SMA dan menentukan crossover, strategi ini juga mengesan kedudukan semasa. Ia memasuki kedudukan apabila mencetuskan isyarat beli, dan meratakan kedudukan apabila mencetuskan isyarat jual. Dengan cara ini, ia merealisasikan sistem perdagangan automatik berdasarkan crossover SMA.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah mudah dan mudah difahami dan dilaksanakan. SMA adalah penunjuk teknikal yang biasa digunakan dan crossover SMA adalah salah satu isyarat perdagangan yang paling biasa.

Satu lagi kelebihan adalah bahawa strategi ini boleh dioptimumkan dengan menyesuaikan parameter SMA. Sebagai contoh, kita boleh menguji kombinasi yang berbeza dari tempoh SMA untuk mencari yang optimum untuk stok tertentu. Juga, strategi boleh ditingkatkan dengan menambahkan penunjuk lain untuk pengesahan dan pengoptimuman.

Risiko dan Penyelesaian

Risiko terbesar strategi ini adalah bahawa strategi berasaskan penunjuk cenderung menghasilkan isyarat palsu yang berlebihan.

Penyelesaian biasa termasuk menetapkan stop loss, menyesuaikan parameter, atau menambah keadaan penapis. Sebagai contoh, kita boleh menetapkan nisbah kerugian maksimum untuk mengehadkan risiko, menyesuaikan tempoh SMA untuk mencari parameter yang lebih stabil, atau menggunakan penunjuk lain untuk menapis beberapa isyarat perdagangan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Uji dan pilih kombinasi parameter SMA yang optimum. Uji semula panjang SMA yang berbeza untuk mencari tempoh terbaik.

  2. Tambah penunjuk lain untuk penapisanSinyal pengesahan, seperti RSI, MACD dll. Ini membantu menapis isyarat palsu.

  3. Masukkan logik stop loss. Tetapkan kerugian maksimum yang boleh diterima atau berhenti untuk mengawal risiko dengan lebih baik.

  4. Mengoptimumkan masa kemasukan. Pertimbangkan untuk masuk di sekitar pecah utama dan bukannya mengikuti penyambungan SMA.

  5. Uji strategi komposit. Gabungkan dengan jenis strategi lain seperti trend berikut.

Kesimpulan

Strategi ini merealisasikan perdagangan automatik dengan isyarat silang SMA yang mudah. Kelebihan mudah difahami dan dilaksanakan. Kelemahannya adalah isyarat yang berlebihan dan terdedah kepada whipsaws. Kita boleh memperbaikinya dengan menyesuaikan parameter, menambah penapis, menghentikan kerugian dan lain-lain. Strategi ini memberi kita rangka kerja asas. Kita boleh memperkaya dengan menggabungkan lebih banyak komponen.


/*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")


Lebih lanjut