Strategi ini menggabungkan trend berikut dengan mekanisme keluar berasaskan masa. Konsep terasnya adalah untuk menangkap trend pasaran dengan memantau hubungan harga dengan purata bergerak 60 hari sambil menggabungkan mekanisme pembubaran paksa akhir tahun untuk kawalan risiko. Posisi panjang dimasukkan apabila harga penutupan melanggar di atas MA 60 hari dengan kemiringan positif, dan semua kedudukan ditutup pada hari perdagangan terakhir setiap tahun.
Strategi ini berdasarkan beberapa elemen teras: 1. Penentuan Trend: Menggunakan Purata Bergerak Sederhana (SMA) 60 hari sebagai penunjuk trend jangka sederhana, dengan pengiraan cerun 14 hari untuk mengesahkan arah trend. 2. Isyarat Masuk: Isyarat beli dihasilkan apabila harga memecahkan di atas MA 60 hari dengan cerun positif, yang menunjukkan potensi kenaikan. Mekanisme Keluar: Melaksanakan keluar berasaskan masa tetap, menutup semua kedudukan pada hari perdagangan terakhir setiap tahun untuk mengelakkan risiko kedudukan lintas tahun. 4. Pengurusan Masa Dagangan: Merangkumi kawalan julat tarikh dan pengesahan hari dagangan untuk memastikan operasi hanya berlaku pada hari dagangan yang sah.
Strategi ini mewujudkan sistem perdagangan yang agak kukuh dengan menggabungkan trend berikut dengan pengurusan masa. Logik yang mudah dan jelas menjadikannya mudah difahami dan dilaksanakan, menawarkan utiliti praktikal yang baik. Dengan pengoptimuman parameter yang sesuai dan langkah-langkah kawalan risiko tambahan, strategi menunjukkan potensi untuk menjana pulangan yang stabil dalam keadaan perdagangan sebenar.
/*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")