
Strategi ini adalah strategi kuantitatif yang didasarkan pada moving average. Strategi ini menghasilkan sinyal perdagangan dengan menghitung moving average sederhana dari periode yang berbeda dan membandingkannya dengan cross-over. Secara khusus, sinyal beli dihasilkan ketika moving average jangka pendek melewati moving average jangka panjang; sinyal jual dihasilkan ketika moving average jangka pendek melewati moving average jangka panjang.
Logika inti dari strategi ini didasarkan pada efek kuantitatif, yaitu kesinambungan tren harga saham. Rata-rata bergerak dapat secara efektif mencerminkan tren perubahan harga saham. Ketika rata-rata bergerak jangka pendek melewati rata-rata bergerak jangka panjang, harga saham mulai memasuki tren naik; Sebaliknya, ketika rata-rata bergerak jangka pendek melewati rata-rata bergerak jangka panjang, harga saham mulai memasuki tren menurun.
Secara khusus, strategi ini mendefinisikan rata-rata bergerak sederhana 13 hari dan rata-rata bergerak sederhana 34 hari. Setelah menghitung dua rata-rata bergerak di setiap hari, perbandingan besar-besaran perbandingan. Jika garis 13 melintasi garis 34, sinyal beli dihasilkan, yang berarti harga saham memasuki tren naik, dan posisi multihead harus dibuat.
Keuntungan terbesar dari strategi ini adalah mudah dipahami dan mudah diterapkan. Moving average adalah salah satu indikator teknis yang paling dasar dan paling umum digunakan. Prinsipnya sederhana, mudah dipahami dan diterapkan.
Selain itu, pengaturan parameter strategi ini fleksibel, dapat disesuaikan sesuai dengan berbagai varietas dan kondisi pasar. Misalnya, parameter periodik dari moving average dapat diubah, sehingga dapat menyesuaikan sensitivitas strategi. Ini memberikan ruang untuk optimasi dan penyesuaian strategi.
Risiko terbesar dari strategi ini adalah kemungkinan munculnya lebih banyak sinyal salah dan diletakkan di pasar yang bergoyang. Ketika harga bergoyang besar, rata-rata bergerak dapat menghasilkan persilangan yang sering terjadi, yang menyebabkan munculnya sinyal salah. Saat ini perlu menyesuaikan parameter siklus rata-rata bergerak untuk menyaring beberapa kebisingan.
Selain itu, ketika terjadi pergeseran besar, titik-titik stop loss dari strategi dapat ditembus, menyebabkan kerugian yang lebih besar. Ini memerlukan optimalisasi strategi stop loss dan pelepasan stop loss yang tepat.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Mengoptimalkan parameter periodik dari moving average untuk menemukan kombinasi optimal dari parameter dalam varietas dan kondisi pasar yang berbeda
Menambahkan filter untuk indikator teknis lainnya, seperti MACD, KD, dan lain-lain, untuk menghindari kesalahan sinyal dalam situasi getaran
Optimalkan dan sesuaikan strategi stop loss secara dinamis, sambil menjamin stop loss, hindari stop loss yang terlalu dekat dengan probabilitas terobosan yang lebih tinggi
Meningkatkan mekanisme manajemen posisi, seperti jumlah tetap yang dimasukkan, proporsi posisi, dan lain-lain, untuk mengendalikan risiko transaksi tunggal
Strategi ini adalah strategi lintas rata-rata bergerak yang sangat klasik, menghasilkan sinyal beli dan jual dengan menghitung dan membandingkan hubungan rata-rata bergerak jangka pendek dan jangka panjang. Keuntungan dari strategi ini adalah sederhana dan mudah dimengerti, parameternya fleksibel, dan cocok untuk dipelajari oleh pemula; Kelemahannya adalah sinyalnya mungkin tidak cukup stabil, dan mudah ditarik di pasar yang bergoyang.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// TODO: update strategy name
strategy("{STRATEGY NAME}", overlay=true)
// === TA LOGIC ===
//
//
// TODO: PUT YOUR TA LOGIC HERE
LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34))
SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21))
// === INPUT BACKTEST DATE RANGE ===
enableShorts = input(false, title="Enable short entries?")
FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2018, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// === STRATEGY BUY / SELL ENTRIES ===
// TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal
// long and short entries
buy() => window() and LONG_SIGNAL_BOOLEAN
sell() => window() and SHORT_SIGNAL_BOOLEAN
if buy()
strategy.entry("Long", strategy.long, comment="Long")
if sell()
if (enableShorts)
strategy.entry("Short", strategy.short, comment="Short")
else
strategy.close("Long")
// === BACKTESTING: EXIT strategy ===
sl_inp = input(10, title='Stop Loss %', type=float)/100
tp_inp = input(30, title='Take Profit %', type=float)/100
stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)