Strategi ini disebut
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.
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 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.
Strategi dapat dioptimalkan dalam aspek berikut:
Uji dan pilih kombinasi parameter SMA yang optimal. Uji ulang panjang SMA yang berbeda untuk menemukan periode terbaik.
Tambahkan indikator lain untuk konfirmasi sinyal filter, seperti RSI, MACD dll. Ini membantu menyaring sinyal palsu.
Masukkan logika stop loss. Atur kerugian maksimal yang dapat ditoleransi atau stop trailing untuk mengontrol risiko dengan lebih baik.
Pertimbangkan untuk masuk di sekitar breakout utama daripada mengikuti crossover SMA.
Uji strategi komposit. Gabungkan dengan jenis strategi lain seperti mengikuti tren.
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")