HullMAパーセンテージバンドに基づく定量取引戦略


作成日: 2024-03-01 12:16:45 最終変更日: 2024-03-01 12:16:45
コピー: 1 クリック数: 680
1
フォロー
1617
フォロワー

HullMAパーセンテージバンドに基づく定量取引戦略

概要

この戦略は,ハル移動平均とその上下比率帯を計算することによって,突破買いと止損売りの定量取引を実現する.戦略の優位性は,パラメータの調整,実現の簡素性,ストッパー厳格性などである.しかし,追高殺跌,頻繁取引などのリスクも存在する.止損戦略を最適化し,ショートライン操作などを追加することで,よりよい効果を得ることができる.

戦略原則

  1. Hull 移動平均 hullma について

  2. フルマのパーセントに基づいて上線 xL1,xL3と下線 xL2,xL4を図を描く.

  3. 閉盘価格の上から下を走るときは,多めに;閉盘価格下から下を走るときは,平仓する.

優位分析

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

  1. HullMA指数は価格変化に敏感で,トレンドを効果的に追跡することができる.

  2. パーセンテージ帯の設定の自由度が高いので,調整することで異なる品種に適応できます.

  3. 誤信号を効率的にフィルタリングする双線戦略.

  4. ストップ・ロスの戦略はリスクを効果的にコントロールします.

リスク分析

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

  1. 追放の可能性がある.

  2. 商品の購入や販売を頻繁に行うことで,滑点の損失が発生します.

  3. パラメータの設定を間違えた場合,取引が頻繁になる可能性があります.

  4. 停止位置の設定は,繰り返しテストして最適化する必要があります.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. ハルMA長さのパラメータを最適化して,異なる品種に適応する.

  2. パーセンテージ帯のパラメータを最適化し,誤った取引を減らす.

  3. ショートラインの操作戦略を追加し,リコールを利用してより多くの利益を得ます.

  4. ストップ・ローズ戦略を最適化して,その効果を保証する.

  5. 異なる品種のパラメータの健性をテストする.

要約する

この戦略は,HullMA指数とそのパーセント帯によって,比較的シンプルで直感的な突破取引戦略を構築している.戦略の優劣は明確であり,パラメータ調整と機能最適化によって拡張され,非常に実用的な量化戦略になることができる.

ストラテジーソースコード
/*backtest
start: 2023-03-01 00:00:00
end: 2024-02-29 00:00:00
period: 5d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("hullma percentage lines", overlay=true)



length = input(9, minval=1)
src = input(close, title="Source")
hullma = wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(hullma)



Uband1 = input(3, minval=1, step = .5)
Lband1 = input(3, minval=1, step = .5)
Uband2 = input(6, minval=1, step = .5)
Lband2 = input(6, minval=1, step = .5)


v1 = Uband1+100
v2 = 100 - Lband1
v3 = Uband2+100
v4 = 100 - Lband2


xL1 = (hullma / 100) * v1
xL2 = (hullma / 100) * v2 
xL3 = (hullma / 100) * v3
xL4 = (hullma / 100) * v4 


plot(xL1, color=yellow, title="H1")
plot(xL2, color=yellow, title="L1")
plot(xL3, color=yellow, title="H2")
plot(xL4, color=yellow, title="L2")




longCondition1 =  crossover(close, xL4) 
if (longCondition1)  
    strategy.entry("l1", strategy.long)

longCondition2 =  crossover(close, xL2) 
if (longCondition2)  
    strategy.entry("l1", strategy.long)


shortCondition1 = crossover(close, xL1)
if (shortCondition1) 
    strategy.close("l1", strategy.long)
    
shortCondition2 = crossover(close, xL2)
if (shortCondition2) 
    strategy.close("l1", strategy.long)
    
shortCondition3 = crossover(close, xL3)
if (shortCondition3) 
    strategy.close("l1", strategy.long)