修正ハル移動平均と一目均衡表に基づく定量的取引戦略

HMA IKHS WMA
作成日: 2024-04-28 13:39:00 最終変更日: 2024-04-28 13:39:00
コピー: 11 クリック数: 564
1
フォロー
1617
フォロワー

修正ハル移動平均と一目均衡表に基づく定量的取引戦略

概要

この戦略は,修正されたハル移動平均 ((HMA) と一目平衡 ((Ichimoku Kinko Hyo) の2つの技術指標を組み合わせて,市場の中長期のトレンドを捉えることを目的としている.戦略の主な考え方は,HMAと一目平衡の基準線 ((Kijun Sen) の交差信号を活用し,同時に一目平衡の雲 ((Kumo) をフィルター条件として組み合わせて,市場のトレンド方向を判断し,取引を行うことである.

戦略原則

  1. 修正ハル移動平均 ((HMA) を計算する
    • WMA ((加重移動平均) を計算し,二重平滑処理を行い,修正されたHMAが得られる
  2. 一見平衡の指標を計算する
    • ターニングライン ((Tenkan Sen),基線 ((Kijun Sen),先行上線 ((Senkou Span A) と先行下線 ((Senkou Span B) を計算する
  3. 取引信号を生成する
    • HMA上での基準線を横切って,閉盘価格が雲層の上にあるとき,多行シグナルが生成される
    • HMAの下の基準線を横切って,閉盘価格が雲の下にあるとき,空調信号が生成される
  4. 取引を実行する
    • プラスまたはマイナスシグナルによる取引操作
  5. 取引を終了する
    • HMAが逆の方向で基準線を横切ると,現在のポジションから脱出する

戦略的優位性

  1. HMAと一目瞭然のバランスを組み合わせた2つの効果的なトレンド追跡指標により,市場動向をよりよく捉えることができます.
  2. フィルタリング条件として一見均衡の雲を利用することで,偽信号を効果的に削減し,取引の勝率を向上させることができます.
  3. 修正されたHMAは,従来の移動平均と比較してより迅速な応答速度とより低い遅延を有し,市場の変化をタイムリーに反映します.
  4. 戦略の論理が明確で,理解し,実行しやすく,様々な市場と時間周期に適用される

戦略リスク

  1. この戦略は,市場の揺れやトレンドが不明なときに,偽のシグナルを多く生み出し,頻繁な取引と資金の損失を引き起こす可能性があります.
  2. 戦略のパラメータ設定は取引結果に大きく影響し,異なるパラメータの組み合わせは異なるパフォーマンスを引き起こす可能性があります.
  3. この戦略は,市場における突発的な出来事や不合理な行動を考慮していないため,極端な市場条件下ではより大きなリスクに直面する可能性があります.

戦略最適化の方向性

  1. 信号の信頼性と安定性を高めるために,他の技術指標または市場情緒指標を導入する
  2. 戦略パラメータの最適化,例えば,機械学習や遺伝的アルゴリズムなどの方法による最適なパラメータの組み合わせを探す
  3. ストップ・ストップやポジション管理などのリスク管理モジュールを追加して,戦略のリスクの開口を制御することを検討する.
  4. 異なる市場と時間周期の特徴に応じて,戦略をターゲットに調整し,最適化

要約する

この戦略は,修正されたハル移動平均と一目的な均衡を組み合わせて,比較的安定したトレンド追跡取引システムを構築している.戦略の論理は明確で,実行しやすいが,また一定の利点がある.しかし,戦略のパフォーマンスは,市場条件とパラメータ設定の影響を受け,さらなる最適化と改善が必要である.実際のアプリケーションでは,特定の市場特性とリスクの好みを組み合わせて,戦略は,より良い取引結果を得るために適切な調整と管理を行うべきである.

ストラテジーソースコード
/*backtest
start: 2024-04-20 00:00:00
end: 2024-04-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA_X + Ichimoku Kinko Hyo Strategy", shorttitle="HMX+IKHS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)

// Hull Moving Average Parameters
keh = input(12, title="Double HullMA")
n2ma = 2 * wma(close, round(keh/2)) - wma(close, keh)
sqn = round(sqrt(keh))
hullMA = wma(n2ma, sqn)

// Ichimoku Kinko Hyo Parameters
tenkanSenPeriods = input(9, title="Tenkan Sen Periods")
kijunSenPeriods = input(26, title="Kijun Sen Periods")
senkouSpanBPeriods = input(52, title="Senkou Span B Periods")
displacement = input(26, title="Displacement")

// Ichimoku Calculations
highestHigh = highest(high, max(tenkanSenPeriods, kijunSenPeriods))
lowestLow = lowest(low, max(tenkanSenPeriods, kijunSenPeriods))
tenkanSen = (highest(high, tenkanSenPeriods) + lowest(low, tenkanSenPeriods)) / 2
kijunSen = (highestHigh + lowestLow) / 2
senkouSpanA = ((tenkanSen + kijunSen) / 2)
senkouSpanB = (highest(high, senkouSpanBPeriods) + lowest(low, senkouSpanBPeriods)) / 2

// Plot Ichimoku
p1 = plot(tenkanSen, color=color.blue, title="Tenkan Sen")
p2 = plot(kijunSen, color=color.red, title="Kijun Sen")
p3 = plot(senkouSpanA, color=color.green, title="Senkou Span A", offset=displacement)
p4 = plot(senkouSpanB, color=color.orange, title="Senkou Span B", offset=displacement)
fill(p3, p4, color=color.gray, title="Kumo Shadow")

// Trading Logic
longCondition = crossover(hullMA, kijunSen) and close > senkouSpanA[displacement] and close > senkouSpanB[displacement]
shortCondition = crossunder(hullMA, kijunSen) and close < senkouSpanA[displacement] and close < senkouSpanB[displacement]

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Logic - Exit if HullMA crosses KijunSen in the opposite direction
exitLongCondition = crossunder(hullMA, kijunSen)
exitShortCondition = crossover(hullMA, kijunSen)

if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")