Strategi Perdagangan Kuantitatif Berdasarkan Price Crossover dengan SMA

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

img

Gambaran umum

Strategi ini disebut Quantitative Trading Strategy Based on Price Crossover with SMA. Ini terutama menghasilkan sinyal perdagangan dengan menghitung SMA dari periode yang berbeda dan melacak crossover harga dengan SMA. Ketika harga melanggar SMA ke atas, itu memicu sinyal beli. Ketika harga melanggar SMA ke bawah, itu memicu sinyal jual.

Logika Strategi

Logika inti dari strategi ini adalah untuk melacak penyeberangan harga dengan rata-rata bergerak sederhana (SMA) 21 hari. Sementara itu, juga menghitung SMA 50 hari dan SMA 200 hari untuk menentukan tren umum.

Secara khusus, strategi meminta harga dekat dalam kisaran tanggal tertentu, dan menghitung SMA yang berbeda berdasarkan periode input. Jika harga melanggar SMA 21 hari ke atas, itu menetapkan sinyal beli. Jika harga melanggar SMA 21 hari ke bawah, itu menetapkan sinyal jual.

Di samping menghitung SMA dan menentukan crossover, strategi ini juga melacak posisi saat ini. Ini memasuki posisi ketika memicu sinyal beli, dan meratakan posisi ketika memicu sinyal jual. Dengan cara ini, ia mewujudkan sistem perdagangan otomatis berdasarkan crossover SMA.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah sederhana dan mudah dipahami dan diimplementasikan. SMA adalah indikator teknis yang umum digunakan dan crossover SMA adalah salah satu sinyal perdagangan yang paling umum.

Keuntungan lain adalah bahwa strategi ini dapat dioptimalkan dengan menyesuaikan parameter SMA. Misalnya, kita dapat menguji kombinasi periode SMA yang berbeda untuk menemukan yang optimal untuk saham tertentu. Juga, strategi dapat ditingkatkan dengan menambahkan indikator lain untuk konfirmasi dan optimalisasi.

Risiko dan Solusi

Risiko terbesar dari strategi ini adalah bahwa strategi berbasis indikator cenderung menghasilkan sinyal palsu yang berlebihan.

Solusi umum termasuk pengaturan stop loss, pengaturan parameter, atau menambahkan kondisi filter. misalnya, kita dapat mengatur rasio kerugian maksimum untuk membatasi risiko, menyesuaikan periode SMA untuk menemukan parameter yang lebih stabil, atau menggunakan indikator lain untuk menyaring beberapa sinyal perdagangan.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Uji dan pilih kombinasi parameter SMA yang optimal. Uji ulang panjang SMA yang berbeda untuk menemukan periode terbaik.

  2. Tambahkan indikator lain untuk konfirmasi sinyal filter, seperti RSI, MACD dll. Ini membantu menyaring sinyal palsu.

  3. Masukkan logika stop loss. Atur kerugian maksimal yang dapat ditoleransi atau stop trailing untuk mengontrol risiko dengan lebih baik.

  4. Pertimbangkan untuk masuk di sekitar breakout utama daripada mengikuti crossover SMA.

  5. Uji strategi komposit. Gabungkan dengan jenis strategi lain seperti mengikuti tren.

Kesimpulan

Strategi ini merealisasikan perdagangan otomatis dengan sinyal crossover SMA sederhana. Keuntungannya mudah dipahami dan diimplementasikan. Kelemahannya adalah sinyal yang berlebihan dan rentan terhadap whipsaws. Kita dapat memperbaikinya dengan menyesuaikan parameter, menambahkan filter, stop loss dll. Strategi ini memberi kita kerangka dasar. Kita dapat memperkaya dengan memasukkan 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 banyak