ハル移動平均オシレーター取引戦略


作成日: 2023-10-07 15:24:31 最終変更日: 2023-10-07 15:24:31
コピー: 0 クリック数: 1028
1
フォロー
1617
フォロワー

概要

この戦略は,ハル移動平均指数に基づくショートライン取引戦略である. この戦略は,ハル移動平均の金叉死叉を活用して,買入シグナルを形成し,トレンドフォロー戦略に属している.

戦略原則

この戦略は主にハル移動平均指数に基づいている.ハル移動平均は2つの移動平均で構成されている.まずは価格の中間移動平均nmaを計算し,周期はhullperiodである.それから価格の急速移動平均n2maを計算し,周期はnmaの半分である.n2maの上を通るときに買入信号を発し,nma下を通るときに売り信号を発する.

策略は,偽信号の一部をフィルターするために,ハル線 ((Hull_Line) も導入した.ハル線は,nmaとn2maの間の差値の計算による線形回帰の結果である.価格がハル線から離れる場合,策略は,買付信号をスキップする.

具体的には,戦略は以下の通りです.

  1. nma,周期hullperiodを計算する

  2. n2maを計算し,周期はnma周期の半分である

  3. n2maとnmaの差を計算する

  4. diffをsqrt ((hullperiod) とする周期の移動平均で,Hull線Hull_Lineが得られる

  5. 価格がハルラインを横切ったときに買取信号を発信します.

  6. 価格がハルラインを下回ったときにセールシグナルを発信する

  7. 価格がハルラインから離れている場合は,信号をスキップします.

  8. 特定の比率のポジションで入場し,オフのストップ方式でストップ

優位分析

この戦略の利点は以下の通りです.

  1. Hullの移動平均は,トレンドを素早く捉え,

  2. 偽信号をフィルターするハル線を用いて信号の質を向上させる

  3. 撤収と損失の比率は良好で,短線操作に適しています.

  4. パラメータの調整が柔軟で,異なる市場環境に対応できる

  5. 逆転止損により,リスクを制御する.

  6. 季節性と組み合わせて,特定の期間のシステムリスクを回避する

リスク分析

この戦略にはいくつかのリスクがあります.

  1. トレンドトラッキングは24時間取引にはなりません.

  2. 市場が逆転すると,大きな損失が生じる.

  3. 移動平均は遅れており,ターニングポイントを把握できていません.

  4. 短線取引が多く,取引費用が高くなる

  5. パラメータ設定が不適切で,震動市場の収益が低下する可能性があります.

上記のリスクに対して,以下のような対策を講じます.

  1. マチンゲルストップ戦略による単一損失の管理

  2. パラメータを最適化し,異なる市場環境のパラメータの強さをテストする

  3. 傾向を判断する指標と組み合わせて,逆転の追尾を避ける

  4. 持仓時間を増やし,取引頻度を減らす

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 動量指標を組み合わせて,トレンドの起点を特定し,より良い配列の入場

  2. 傾向の方向と強さを判断する機械学習モデルを追加

  3. 適応パラメータ設定を使用して,リアルタイム市場に応じてパラメータを調整する

  4. 複数の時間周期を配置するHullシステム,異なる周期を配置する異なるポジション

  5. 取引量エネルギー指標と組み合わせて,不足する偽の突破を回避する

  6. 波動率に基づくポジション管理モジュールを追加し,波動率に応じてポジションを動的に調整します.

要約する

ハル移動平均振動取引戦略は,全体として非常に実用的なショートライン追跡戦略である.ハル移動平均システムを使用してトレンドの方向を判断し,順位を達成する目的である.単一の移動平均システムと比較して,より高い信号品質とパラメーターの柔軟性がある.この戦略の優点は,トレンドの転換を迅速に捉え,利回りが低いことにある.この戦略の劣点は,トレンドの逆転に対応できないことにある.

ストラテジーソースコード
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//                               Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
    Hull_retracted = Hull_Line - 2
else
    Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
    strategy.close("BUY", when=window())
if price > c2
    strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
    strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
    strategy.entry("SELL", strategy.short, when=window())  //        /L'-, 
//                               ,'-.      `   ````                 /  L '-, 
//     .                    _,--dMMMM\        `   ` ` '`..         /       '-, 
//     :             _,--,  )MMMMMMMMM),.      `     ,<>          /_      '-,' 
//     ;     ___,--. \MM(    `-'   )M//MM\          ,',.;      .-'* ;     .' 
//     |     \MMMMMM) \MM\       ,dM//MMM/     ___ < ,; `.      )`--'    / 
//     |      \MM()M   MMM)__   /MM(/MP'  ___, \  \ `  `. `.   /__,    ,' 
//     |       MMMM/   MMMMMM( /MMMMP'__, \     | /      `. `-,_\     / 
//     |       MM     /MMM---' `--'_ \     |-'  |/         `./ .\----.___ 
//     |      /MM'   `--' __,-  \""   |-'  |_,               `.__) . .F. )-. 
//     |     `--'       \   \    |-'  |_,     _,-/            J . . . J-'-. `-., 
//     |         __  \`. |   |   |         \    / _           |. . . . \   `-.  F 
//     |   ___  /  \  | `|   '      __  \   |  /-'            F . . . . \     '` 
//     |   \  \ \  /  |        __  /  \  |  |,-'        __,- J . . . . . \ 
//     |    | /  |/     __,-  \  ) \  /  |_,-     __,--'     |. .__.----,' 
//     |    |/    ___     \    |'.  |/      __,--'           `.-;;;;;;;;;\ 
//     |     ___  \  \     |   |  `   __,--'                  /;;;;;;;;;;;;. 
//     |     \  \  |-'\    '    __,--'                       /;;;;;;;;;;;;;;\ 
// \   |      | /  |      __,--'                             `--;;/     \;-'\ 
//  \  |      |/    __,--'                                   /  /         \  \ 
//   \ |      __,--'                                        /  /           \  \ 
//    \|__,--'                                          _,-;M-K,           ,;-;\ 
//                                                     <;;;;;;;;           '-;;;; 
//                                                                                  :D