
Strategi 360 ° adalah strategi perdagangan kuantitatif yang menggabungkan garis rata-rata ganda dan kekuatan trend. Strategi ini menilai trend harga dengan mengira garis rata-rata untuk tempoh yang berbeza; dan menggabungkan penjumlahan sudut garis pemotong untuk menentukan kekuatan trend, mewujudkan pilihan masa pembelian dan penjualan yang lebih tepat.
Logik utama 360° adalah:
Khususnya, strategi ini menentukan garis purata asal 1 minit dan garis purata selepas melalui filter Kalman. The filter Kalman boleh menghilangkan sebahagian daripada bunyi di dalam garis purata, menjadikannya lebih halus. Kemudian mengira sudut garis dua garis purata, sudut yang mencerminkan perubahan trend harga.
Strategi memilih 30 minit sebagai kitaran pengiraan, real summed semua sudut garisan negatif positif dalam kitaran tersebut. Apabila sudut garisan dan lebih dari 360 darjah, menunjukkan trend yang sangat kuat, mengeluarkan banyak isyarat; sebaliknya apabila sudut garisan dan kurang dari 360 darjah, menunjukkan trend berbalik, mengeluarkan isyarat kosong.
Kelebihan utama strategi 360° adalah:
Strategi 360° ini mempunyai beberapa risiko:
Untuk mengurangkan risiko di atas, anda boleh memendekkan kitaran garis rata-rata, mengoptimumkan kombinasi parameter, meningkatkan mekanisme hentikan kerugian dan sebagainya.
Strategi 360° mempunyai ruang untuk pengoptimuman yang lebih lanjut:
Strategi dua hala 360 ° menggunakan penapisan hala dan sudut sudut yang komprehensif, mewujudkan strategi perdagangan kuantitatif yang lebih mantap. Berbanding dengan satu petunjuk teknikal, strategi ini membentuk pertimbangan yang lebih menyeluruh dan mempunyai 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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角