Strategi ini menggabungkan tren mengikuti dengan mekanisme keluar berbasis waktu. Konsep inti adalah untuk menangkap tren pasar dengan memantau hubungan harga dengan rata-rata bergerak 60 hari sambil menggabungkan mekanisme likuidasi paksa akhir tahun untuk pengendalian risiko. Posisi panjang dimasukkan ketika harga penutupan melanggar di atas MA 60 hari dengan kemiringan positif, dan semua posisi ditutup pada hari perdagangan terakhir setiap tahun.
Strategi ini didasarkan pada beberapa elemen inti: 1. Penentuan Tren: Menggunakan Rata-rata Bergerak Sederhana (SMA) 60 hari sebagai indikator tren jangka menengah, dengan perhitungan kemiringan 14 hari untuk mengkonfirmasi arah tren. 2. Sinyal Masuk: Sinyal beli dihasilkan ketika harga menembus di atas MA 60 hari dengan kemiringan positif, menunjukkan potensi tren naik. 3. Mekanisme Keluar: Mengimplementasikan keluar berbasis waktu tetap, menutup semua posisi pada hari perdagangan terakhir setiap tahun untuk menghindari risiko posisi lintas tahun. 4. Manajemen Waktu Perdagangan: Menggabungkan kontrol rentang tanggal dan validasi hari perdagangan untuk memastikan operasi hanya terjadi pada hari perdagangan yang valid.
Strategi ini menciptakan sistem perdagangan yang relatif kuat dengan menggabungkan trend berikut dengan manajemen waktu. Logika yang sederhana dan jelas membuatnya mudah dimengerti dan diimplementasikan, menawarkan utilitas praktis yang baik. Dengan optimasi parameter yang tepat dan langkah-langkah kontrol risiko tambahan, strategi menunjukkan potensi untuk menghasilkan pengembalian yang stabil dalam kondisi perdagangan nyata.
/*backtest start: 2025-01-09 00:00:00 end: 2025-01-16 00:00:00 period: 3m basePeriod: 3m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("Buy above 60-day MA, Sell at year-end", overlay=true, pyramiding=1) // Define inputs for start and end dates startDate = input(defval=timestamp("2010-01-01"), title="Start Date") endDate = input(defval=timestamp("2024-12-31"), title="End Date") // Define 60-day moving average length = input.int(defval=60, title="MA Length", minval=1) ma = ta.sma(close, length) slope = ta.sma(ma, 14) - ta.sma(ma, 14)[1] // Check if current bar is within the specified date range withinDateRange = true // Function to check if a day is a trading day (Monday to Friday) isTradingDay(day) => true // Check if current bar is the last trading day of the year // Check if current bar is the last trading day of the year isLastTradingDayOfYear = false yearNow = year(time) if (month == 12 and dayofmonth == 31) isLastTradingDayOfYear := isTradingDay(time) else if (month == 12 and dayofmonth == 30) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) else if (month == 12 and dayofmonth == 29) isLastTradingDayOfYear := isTradingDay(time) and not isTradingDay(time + 86400000) and not isTradingDay(time + 86400000 * 2) // Plot moving average plot(ma, color=color.blue, linewidth=2) // Buy when closing price crosses above 60-day MA and up trend if (withinDateRange and ta.crossover(close, ma) and slope > 0) strategy.entry("Buy", strategy.long) // Sell all positions at the last trading day of the year if (isLastTradingDayOfYear) strategy.close_all(comment="Sell at year-end") // Plot buy and sell signals //plotshape(series=ta.crossover(close, ma), location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") //plotshape(series=isLastTradingDayOfYear, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")