双方向ホール移動平均取引戦略


作成日: 2023-12-11 11:30:15 最終変更日: 2023-12-11 11:30:15
コピー: 0 クリック数: 826
1
フォロー
1621
フォロワー

双方向ホール移動平均取引戦略

概要

双方向ホールの移動平均取引戦略は,双方向ホールの移動平均を取引信号として利用する量的な取引戦略である.この戦略は,伝統的な技術分析で単一の移動平均を使用する方法を模倣し,双方向ホールの移動平均を使用し,突破点で買いと売却する.

戦略原則

双方向ハル移動平均の取引戦略の核心は,双方向ハル移動平均である.双方向ハル移動平均は,異なる価格平均を表す三つの線,中軌,上軌,下軌で構成されている.計算式は次のとおりである.

中盤:Mode (modeSwitch, src, len) HULLのトラックバック[0] 下のトラック:HULL[2]

ここでのMode関数は,Hull移動平均の異なる変数を選択できます. HMA,EHMA,THMAを含む.srcは価格源を表し,lenは周期長を表します.

この戦略は,双方向ホールの移動平均の中間軌道を基準として,価格と中間軌道の関係を判断し,取引シグナルを作成する.

  • 価格が上昇すると,もっと行動しましょう.
  • 価格が中盤を突破した時に平仓

すなわち,現在のK線の閉盘値が中軌値より大きい場合,次のK線開盘時に多額の取引を行う.現在のK線の閉盘値が中軌値より小さい場合,次のK線開盘時に平仓を行う.

優位分析

双方向ホールの移動平均取引戦略には以下の利点があります.

  1. 単一の均等線ではなく,双方向の帯状領域を使用すると,より良いサポートと抵抗効果があり,トレンドを追跡するのに有利である.

  2. 一般的な移動平均と比較して,Hull移動平均は,価格の変化に対してより迅速に反応できるため,遅延性が低い.

  3. 伝統的な技術分析の方法を利用し,理解しやすく,取引を自動化するのに適しています.

  4. 策略論理はシンプルで明快で,容易に実装され,高周波アルゴリズム取引に適しています.

  5. カスタマイズ可能なハル移動平均型とパラメータは,異なる品種と取引時間枠に最適化できます.

リスク分析

ハール移動平均の双方向取引には多くの利点がありますが,注意すべきリスクもあります.

  1. 価格が揺動する時には,より多くのストップが発生する可能性があります. 適切なパラメータを調整して,部分的なノイズ取引をフィルターすることができます.

  2. この戦略は主にトレンドフォローに基づいているが,価格横軸の時に効果が悪い.他の指標やメカニズムを組み合わせてトレンドを判断することができる.

  3. Hull移動平均自体は,特に短期的には後退性がある.パラメータ最適化と組合せ指数は部分的に解決できる.

  4. 取引シグナルが頻繁で,過度取引が容易である.ポジション管理と取引頻度を適切に制御する.

最適化の方向

双方向ホール移動平均の取引戦略には,以下のいくつかの主要な最適化方向があります.

  1. ハル移動平均のタイプとパラメータを最適化し,異なる取引品種に適合する中軌道の感性を調整する.

  2. トレーリングストップまたはインクリメンタルストップを導入し,単一損失を効果的に制御する.

  3. 他の指標と組み合わせて,トレンドの方向と強さを判断し,被套を避ける.例えばMACD,KDなど.

  4. 取引回数や収益率に基づく戦略のアクティベーション条件を追加する. 閉店回数を制御し,平仓を減らす.

  5. 複数の時間枠を組み合わせます. 高い時間枠を利用してトレンドの方向を決定し,騒音に誤導されないようにします.

  6. 入場論理の最適化.入場確実性を高めるために,candle形状に基づいて入場論理の最適化.

要約する

双方向ホールの移動平均取引戦略は,全体として,トレンド指数型の移動平均を利用して取引信号を構築する量的な戦略である.従来の移動平均と比較して,より迅速に反応し,より優れた追跡効果がある.この戦略の論理はシンプルで明確で,容易に実装され,自動化取引に適している.もちろん,いくつかのノイズリスクとトレンドフォローの欠陥もあります.パラメータ最適化,ストップダスト機構,および他の指標の組み合わせなどの手段を使用して,この戦略の実際の表彰を強化することができます.

ストラテジーソースコード
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na
      
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


if HULL[0] > HULL[2] and testPeriod()
    strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
    strategy.close("long")