
この戦略は,ホールの移動平均とカルマン波を組み合わせて,価格の傾向を識別し,追跡し,トレンドフォロー戦略に属します.これは,異なる2つの周期のホールの移動平均を使用して取引信号を構築し,カルマン波と連携して,信号の質と戦略の安定性を向上させるためのスムーズな処理を行います.
戦略は24周期のホール移動平均のhmaと24周期のトリプルホール移動平均のhma3を使用して取引信号を構築する.
上のハマがハマ3を着用すると,買取シグナルが生成され,下のハマがハマ3を着用すると,売出シグナルが生成される.
策略 カルマンフィルターをデフォルトでオフにし,カルマンフィルターをオンにすると,ハマとハマ3をカルマンフィルター処理して,過剰なノイズをフィルターして信号品質を向上させる.
カルマン波は予測と校正のステップによって信号中のランダムなノイズを排除する.毎回の測定と前回の予測の間の差は,次の測定値をより正確に予測するために校正項として使用する.繰り返し予測と校正することで,ノイズの影響を徐々に軽減し,信号をより滑らかにする.
この戦略はカルマン波を用いて移動平均策の安定性を高め,ランダムな波動の影響を排除し,継続的なトレンドを追跡する.
単一の移動平均と比較して,二重移動平均システムは継続的なトレンドをよりよく識別します.
ホールの移動平均は,近期価格に重みを与え,価格変化をより敏感に捉えることができる.
カルマンフィルターは,信号中のランダムなノイズを効率的にフィルターし,偽信号を軽減し,信号品質を向上させる.
戦略のパラメータは調整可能で,周期長とカルマン波の上昇は,市場に応じて調整され,異なる状況に適応することができる.
戦略は,周期を越えた技術を使って信号を構築し,より持続的なトレンドを識別し,乱雑な波動に騙されないようにする.
信号とトレンドの状態を直感的に表示するビジュアルインタフェースで操作が簡単です.
移動平均戦略は,トレンドの転換点に誤信号を発生し,その転換点を間に合うように捉えることができない.
移動平均は遅滞しており,価格の急速な反転の機会を逃している可能性があります.
激しい波動の状況には適用されません.震動の転覆段階では使用を避けるべきです.
カルマンフィルターのパラメータ設定は,戦略のパフォーマンスに影響し,過剰な増益は有効な信号をフィルターする可能性があります.
長周期設定は反応が鈍い,短周期設定は騒音の影響を受けやすく,市場に応じてパラメータを調整する必要がある.
多空保有時間は固定ではなく,無保有段階が存在し,資金利用効率を低下させる.
順応的な移動平均の動的最適化パラメータを使用して,波動率に応じて周期長さを調整することができます.
波動率指数で市場状況を判断し,波動する市場で取引を避け,トレンドが明確であるときにのみ取引する.
損失拡大を防止し,リスク管理能力を高めるために,ストップ・ロスの戦略を設定できます.
カルマンフィルターパラメータを最適化し,追跡感度とノイズフィルタリングのレベルをバランスさせる.
他の指標と組み合わせて信号の有効性を確認する.例えば,量能指標,ブリン帯判断トレンドの持続性など.
機械学習などの訓練パラメータを使用することで,戦略をより頑丈で自律的に調整できます.
この戦略は,ダブルホール移動平均とカルマン波によるトレンド追跡により,持続するトレンドを効果的に識別し,信号の質を向上させることができる.しかし,パラメータ最適化,市場適応性調整,リスク管理を注意して安定した収益を得ることができる.機械学習と定量分析は,戦略のパフォーマンスをさらに向上させることができる.継続的な最適化により,安定した効率的なトレンド追跡取引戦略を作成することができる.
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)
src = input(hl2, "Price Data")
length = input(24, "Lookback")
showcross = input(true, "Show cross over/under")
gain = input(10000, "Gain")
k = input(true, "Use Kahlman")
hma(_src, _length) =>
wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
hma3(_src, _length) =>
p = length/2
wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)
kahlman(x, g) =>
kf = 0.0
dk = x - nz(kf[1], x)
smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
velo = 0.0
velo := nz(velo[1],0) + ((g/10000)*dk)
kf := smooth+velo
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]
p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)
longCondition = crossup
if (longCondition)
strategy.entry("LE", strategy.long)
shortCondition = crossdn
if (shortCondition)
strategy.entry("SE", strategy.short)