戦略をフォローするハルフ移動平均傾向

作者: リン・ハーンチャオチャン開催日:2023年9月19日 16時40分
タグ:

概要

この戦略は,トレンドフォロー戦略に属する,アラン・ハルによって発明されたハル移動平均指標に基づいています.ハルMAは,移動平均値の遅れを軽減し,価格変化により迅速に対応できます.この戦略は,トレンド方向を決定するためにハルMAを使用し,取引信号を生成するための追加のフィルターを使用します.

戦略原則

  1. 短期間および長期間のハルMAsを計算します. 特定の貿易方向のための短い期間,全体的な傾向のための長い期間.

  2. 短期間Hull MAsが交差すると,トレンド逆転を決定します.長期間トレンド方向でフィルターします.

  3. ハルMMA条件を通じた価格ブレイクを追加して,成功したブレイクを確保します.

  4. 価格変動率フィルターを追加して,望ましくないブレイクアウトを回避する.

  5. ストップ・ロスを設定し リスクをコントロールするために 利益を取ります

利点分析

単純な移動平均値と比較して,この戦略の利点は以下の通りである.

  1. Hull MAは価格変動に迅速に対応し, 傾向転換を迅速に把握できる.

  2. ダブル・ハルMMA構造は,長期と短期間のトレンドを決定することができます.

  3. 価格ブレイクと変動率フィルターは,偽ブレイクを避けるのに役立ちます.

  4. ダイナミックストップ・ロストと 利益の引き継ぎ 利益のロックとリスクの制御

リスク分析

この戦略のリスク:

  1. パラメータの設定が正しくない場合 価格トレンドの転換が見逃される可能性があります

  2. 誤った全体的なトレンド判断は,逆トレンド取引を引き起こす可能性があります.

  3. ストップロスの設定が幅が大きすぎると大きな損失が生じます.

  4. 取引が頻繁すぎると 取引コストとリスクが増加します

オプティマイゼーションの方向性

効率化には以下の要素が挙げられます.

  1. 感度とスムーズさをバランスさせるため Hull MA 期間を最適化する.

  2. 入口と出口パラメータを最適化して 最適値を見つけます

  3. 適応性を向上させるため,異なる機器でパラメータの強さをテストする.

  4. 差異リスクを回避するために,ボリュームを組み込む.

  5. 安定性を高める条件を追加します

概要

全体的に見ると,この戦略は,トレンドをタイムリーにフォローするハル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)

もっと