
この戦略の核心は,カルマン波技術を使用して価格平均線を平滑に処理し,平滑後の平均線の切角を計算することで,切角が指定された周期内で一定値を超えると取引信号を生成する.この戦略は,中長線トレンドを追跡し,カルマン波技術によって騒音の影響を軽減し,より明確で信頼できるトレンド信号を得ることを目指しています.
この戦略の核心的な論理は,以下のステップで構成されています.
1分間の価格の単純移動平均 ((SMA) を原平均線として計算する.
元の均等線にカルマンフィルタを行い,平らな均等線を出力する.
滑らかな均等線の切角を計算する.
参数周期を定義し,統計周期内の切線角の合計;
周期内切線角の合計が360度を超えると買入シグナルが生成され,-360度未満になると出売シグナルが生成される.
このような設計により,価格が上下トレンドに突入すると均線の切角が徐々に蓄積され,蓄積が一定程度に達すると取引信号が生み出され,中長線トレンドを効果的に追跡することができる.
カーマン波は,現在状態を予測すると同時に,プロセスノイズと測定ノイズの値を予測し,これらのノイズの値を元状態の予測を校正して,より正確で信頼性の高い状態の推定を得るために使用する.
この戦略では,価格のSMAは状態の測定として見られ,市場騒音の影響を受け,カルマンフィルターは,価格の実際の傾向を遡って推定し,騒音の影響を大幅に軽減し,その後の平均線操作をより信頼できるものにして,より安定で正確な取引信号を生成する.
単純な移動平均などの指標策略と比較して,この策略の最大の利点は,カルマンフィルターを利用して騒音の影響を減らすことであり,取引信号をより明確で信頼性のあるものにすることにある.具体的利点は,主に以下のいくつかの側面に表れている.
偽信号の減少 カーマンフィルターは,自主的にノイズを推定し,消去することで,大量にランダムな波動によって引き起こされる偽信号を効果的にフィルターし,生成された取引信号をより信頼性のあるものにする.
より良い追跡効果.平滑した後の均線形はより流暢で,価格の中間長線トレンドをよりよく反映し,より優れたトレンド追跡効果を実現する.
調整可能なパラメータ設定の柔軟性 調整可能なパラメータには,平均線長,カルマン波のパラメータと統計周期が含まれ,異なる市場環境に柔軟に適応できます
リスクはコントロールできます. この戦略は,短期的な変動ではなく,中長期の傾向に焦点を当て,リスクと報酬のバランスをよく得ています.
実行が簡単,拡張が容易である.この戦略の核心アルゴリズムは簡潔で,実装・テストが容易であり,機械学習アルゴリズムの自動最適化パラメータなど,拡張の余地も提供している.
この戦略には以下の主要なリスクがあります.
トレンド反転リスク ≪この戦略はトレンド追跡に焦点を当てており,急激なトレンド反転が起こった場合,大きな損失が生じます。統計周期を適切に短縮することで単一の損失を減らすことができます。
パラメータ最適化のリスク。不適切なパラメータ設定は取引頻度や信号遅延を引き起こす可能性があるため,十分なテスト最適化が必要。機械学習アルゴリズムと組み合わせた自動最適化が可能。
過剰最適化のリスク. 過去データでの過剰最適化は,パラメータの誤りにもつながり,サンプル外での有効性を制御する必要がある.
実行の複雑性が増加するリスク.カルマン波と切線角アルゴリズムの導入は,コードの複雑さを増加させ,正しく実行することを確認する必要があります.
上記のリスク要因を考慮して,この戦略の最適化方向は以下の通りです.
ストップとポジション管理を導入する.適切なストップは,単一の損失のリスクを効果的に制御する.ダイナミックなポジション管理は,市場状況に応じてポジションカバーのリスクを調整することもできる.
自動パラメータ最適化。 機械学習の最適化アルゴリズムにより,パラメータの自動最適化を実現し,過最適化のリスクを回避できる。
他の指標を統合する 策略にいくつかの他の指標を統合して,戦略の安定性を高めるために指標のポートフォリオを形成することができる.
効率の評価を向上させる. より多くのリスク調整指標を導入し,戦略の効率性と安定性を評価し,より全面的かつ正確な結論を導き出す.
複数の品種を拡張する. 効果が良好であれば,より多くの品種に拡張し,中長期にわたってより豊富なサンプルを蓄積し,また,品種間パラメータの最適化を容易にすることができる.
この戦略は,全体として,よりシンプルで実用的なトレンド追跡戦略である.従来の移動平均戦略と比較して,カルマン波アルゴリズムの導入は,その最大の革新点であり,戦略がより明確で信頼できる取引信号を生成することを可能にする.次のステップをさらに最適化することで,この戦略は,さらに優れた効果を期待できる.全体として,この戦略は,量化取引戦略に新しい思考価値を提供しており,さらなる研究と適用に値する.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
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="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角