この策略は,アラン・ハルによって提出されたハル移動平均指標に基づいています.これはトレンド追跡策略の1つである.この指標は,移動平均の遅延効果を効果的に軽減し,価格の変化により敏感に反応します.この策略は,ハル移動平均を使用してトレンドの方向を判断し,追加のフィルタリング条件と組み合わせて取引信号を発信します.
短期周期と長期周期の2組のハル移動平均を計算する.短期周期は特定の取引方向を判断し,長期周期は大きなトレンド方向を判断する.
短周期のHull MA上での穿越時,トレンドの転換が起こる判断. 大トレンド方向のフィルタリングノイズ取引と組み合わせる.
Hull MAの条件を突破して,突破を成功させるために価格を上昇させる.
価格変動率の条件を追加し,望ましくない突破を回避する.
ストップ・ローズとストップ・コンディションを設定し,リスクをコントロールする.
この戦略は,通常の移動平均と比較して以下の利点があります.
Hull MAは価格の変化に迅速に反応し,トレンドの転換を間に合うように捉える.
二重ハルMA構造は,大小2つの時間次元における傾向を判断することができる.
価格の突破と変動率条件は,偽の突破を有効にフィルタリングできます.
ダイナミックストップ・ストップ・ストップは,利益をロックし,リスクをコントロールする.
この戦略には以下のリスクもあります.
パラメータを正しく設定しない場合,価格トレンドの逆転を逃す可能性があります.
大潮の判断の誤りは逆の取引につながるかもしれない.
ストップ・ロスの設定を過大に広げると,大きな損失を招く可能性があります.
取引の頻度が高くなり,取引コストや滑り場のリスクが増加する.
ウェブのコンテンツを活用して,
ハルMAサイクルを最適化し,感度と滑らかさをバランスする.
EntryとExitのパラメータを最適化して,最適な値を見つけます.
異なる品種のパラメータの強さをテストし,戦略の適応性を向上させる.
結合量能の指標として,偏差から生じるリスクを回避する.
戦略の安定性を高める条件を追加する.
この戦略全体として,Hull MAの迅速な対応を活用して,トレンドのタイムリーな追跡を実現し,リスクを制御した前提で,強力な収益性を有する.しかし,パラメータの最適化に注意し,避け難いいくつかのシステミックなリスクを防ぎます.
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1
if (shortCondition)
strategy.entry("Short",strategy.short)