Strategi Rata-rata Bergerak Ganda 360° adalah strategi perdagangan kuantitatif yang menggabungkan rata-rata bergerak ganda dan penentuan kekuatan tren. Dengan menghitung rata-rata bergerak selama periode yang berbeda, ia menentukan tren harga; sementara itu, dengan mengumpulkan sudut tangen, ia menilai kekuatan tren dan mencapai entri dan keluar yang lebih akurat.
Logika inti dari Dual Moving Average Strategy 360° adalah:
Secara khusus, strategi mendefinisikan rata-rata bergerak 1 menit mentah dan rata-rata bergerak yang disaring Kalman. Filter Kalman menghilangkan beberapa kebisingan dari rata-rata bergerak untuk membuatnya lebih halus. Sudut tangen antara dua rata-rata bergerak mencerminkan perubahan tren harga.
Strategi ini memilih 30 menit sebagai periode perhitungan untuk menjumlahkan semua sudut tangen positif dan negatif dalam periode itu. Ketika jumlahnya melebihi 360 derajat, itu menandakan tren yang sangat kuat dan mengeluarkan sinyal panjang; sebaliknya, ketika jumlahnya di bawah -360 derajat, itu menunjukkan pembalikan tren dan mengeluarkan sinyal pendek.
Keuntungan utama dari strategi rata-rata bergerak ganda 360 ° adalah:
Strategi Dual Moving Average 360° juga membawa beberapa risiko:
Untuk mengurangi risiko di atas, langkah-langkah seperti memperpendek periode rata-rata bergerak, mengoptimalkan kombinasi parameter, menambahkan mekanisme stop-loss dapat diadopsi.
Strategi Dual Moving Average 360° dapat dioptimalkan lebih lanjut dengan:
Dual Moving Average Strategy 360° menggunakan penyaringan rata-rata bergerak dan penilaian tren sudut tangen kuantitatif untuk mencapai strategi perdagangan kuantitatif yang relatif kuat. Dibandingkan dengan indikator teknis tunggal, strategi ini merupakan pertimbangan yang lebih komprehensif dan memiliki kepraktisan yang lebih kuat.
/*backtest start: 2024-01-25 00:00:00 end: 2024-01-30 08:00:00 period: 5m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@library=math strategy("策略360°(测试)", overlay=true) // 定义1分钟均线 ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数 //plot(ma1, color=color.yellow, title="原始均线") // 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码 kalman(x, g) => kf = 0.0 dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数 smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数 velo = 0.0 velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数 kf := smooth + velo kf // 定义卡尔曼滤波后的均线 ma2 = kalman(ma1, 0.01) plot(ma2, color=color.blue, title="卡尔曼滤波后的均线") // 定义切线角 angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数 // 定义累加的切线角 cum_angle = 0.0 cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数 // 定义30分钟周期 period = 30 // 您可以根据您的需要修改这个参数 // 定义周期内的切线角总和 sum_angle = 0.0 sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加 // 定义买入和卖出条件 buy = sum_angle > 360// 在这里使用了 math.radians() 函数 sell = sum_angle < -360 // 执行买入和卖出操作 strategy.entry("Long", strategy.long, when=buy) strategy.close("Short", when=buy) strategy.entry("Short", strategy.short, when=sell) strategy.close("Long", when=sell) // 绘制曲线图 plot(sum_angle, color=color.green, title="周期内的切线角总和") plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角