この戦略は,HMA (Hull Moving Average) 指標とKラインの技術分析を使用して,価格の動向判断と突破操作を実現します.
HMA指標は,2005年にAlan Hullによって,敏感かつ平滑な移動平均値を作成するために作成されました.その計算方法は:
(1) 半サイクルのダブルスローティング平均DMAを計算する
(2) 全サイクル平均SMAを計算する
(3) DMAとSMAの差を計算する
(4) HMA を得るために,DIFF の SQRT (周期) サイクル平均線を計算します.
この戦略は,HMA指標の上下突破をシグナルとして利用し,Kラインのエンティティ部分の突破と組み合わせて,買い売りシグナルを生成する.同時に,利益を保護するためにリアルタイムで利益と損失状況を監視するためのストップロスの原則を設定し,利益を取ります.
HMA指標の"収束"特性は,誤った信号を避けるために移動平均のスムーズさを維持しながら,価格変動に非常に敏感である.
信号の信頼性を向上させ 信号が閉じ込められないようにします
ダイナミックストップ・ロストと利益保護はリスクと収益を最適化します
完全に自動化された取引は 操作を簡素化します
激しい市場変動では,ストップロスの確率が高くなります.
高い取引頻度は,手数料のコストを増加させる.
間違ったパラメータ設定は 誤った信号を生む可能性があります
ストップ・ロスの条件を最適化し 利得条件を設定し 合理的なリトラクションを設定します
取引頻度を調整して 佣金効果を減らす
最適パラメータを決定するために HMA サイクルと突破条件をテストし最適化します.
逆トレンド取引を避けるためにトレンド判断指標を組み込む.
データソースの切り替えの自動判断を拡大し,より多くの市場環境に適応する.
自動パラメータ最適化を実現するために 機械学習アルゴリズムを増やします
サーバーに展開して 24時間ライブ取引の検証を
HMAモメントブレイクアウト戦略は,ハル移動平均のユニークな利点を利用し,市場の勢いを正確に把握する.ダブルブレイクアウトフィルタリングメカニズムは信号品質を改善し,ダイナミックストップ・プロフィートとストップ・ロスは収益を保護する.この戦略は使いやすくて効果的で,宣伝に値する非常に実践的な定量的な取引ツールです.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //SeaSide420 strategy("Hull Moving Average and Daily Candle Crossover", shorttitle="Hull&D", 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) // settings---------------------- q=input(title="HullMA",defval=5) SL = input(defval=-10000.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=500.00, title="Target Point in $", type=float, step=1) price=input(ohlc4,title="Price data") ot=1 p=price[1] // Daily candle crossover--------- dt = 0.0010 Daily=(p-p[1])/p[1] //-------------------------------- // Hull MA's---------------------- n2ma=2*wma(p,round(q/2)) nma=wma(p,q) diff=n2ma-nma sqn=round(sqrt(q)) n2ma1=2*wma(p[1],round(q/2)) nma1=wma(p[1], q) diff1=n2ma1-nma1 sqn1=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) //--------------------------------- // Plotting------------------------ z1e=n1>n2?green:black z2e=n1>n2?black:red z3e=n1>n2?green:red n1e=plot(n1, title="HMA1", color=z1e, linewidth=2, offset=2) n2e=plot(n2, title="HMA2", color=z2e, linewidth=2, offset=2) fill(n1e, n2e, color=z3e, transp=80) // Order controls------------------- closelong = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] and strategy.opentrades<ot and Daily>dt and close>n1 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] and strategy.opentrades<ot and Daily<dt and close<n1 if (shortCondition) strategy.entry("Short",strategy.short)