イチモク・クラウドと移動平均値に基づく定量的な取引戦略

作者: リン・ハーンチャオチャン開催日:2024年2月20日17時12分35秒
タグ:

img

概要

この戦略は, Ichimoku Cloud インディケーターと移動平均インディケーターを組み合わせ,単純な定量的な取引戦略を実装する. 変換線がベースラインの上,閉じる価格が変換線上にあるときに購入信号を生成する. 変換線がベースライン下,閉じる価格が変換ライン下にあるときに販売信号を生成する. この戦略は,仮想通貨などの高変動性資産の短期取引に適している.

戦略の論理

イチモク・クラウドには,変換線,ベースライン,遅れのスパンという3つの線が含まれています. 変換線は短期間の平均価格,ベースラインは長期間の平均価格を表します. 遅れのスパンは通常変換とベースラインの平均値です. 短期間の平均が長期間の平均値よりも高くなった場合,上昇傾向を示します.

イチモク・クラウドには,リーディング・スペンAとリーディング・スペンBという2つのリードラインも含まれています.それらは,異なる期間の価格変動の平均範囲を表しています.リーディング・スペンAがリーディング・スペンBよりも高い場合,短期的には波動性と上昇勢力の拡大を示します.

この戦略は,全体的なトレンド方向を決定するために変換線と,勢いを測定するためのリードラインを使用します.トレンド,勢い,閉値に基づいて取引信号を生成します. 上向きの傾向と拡大する変動があるとき,長くなり,下向きの傾向と収縮する変動があるとき,短くなります.

利点

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

  1. 信頼性の高いシグナルを与えるために指標の組み合わせを使用します
  2. 偽信号を避けるため 固い突破口でしか侵入しない
  3. 高利益の可能性のある短期間の変動資産取引に適しています
  4. シンプルな論理で 簡単に理解し 修正できます
  5. より多くの指標を持つ多要素モデルに簡単に拡張できます

リスク

この戦略の主なリスクは,

  1. ミストラードリスク ストップ・ロスを設定して 取引毎の損失を制御する必要があります
  2. 価格逆転リスク.信号が発信された後に価格が逆転する可能性があります.このリスクを軽減するために保持条件を緩める可能性があります.
  3. パラメータ最適化リスクです 結果はパラメータに敏感です
  4. 過剰なリスク. 歴史的に非常にうまく機能するかもしれませんが,実際の取引では失敗します. パラメータの組み合わせを制限する必要があります.

増進 の 機会

この戦略を強化するいくつかの方法:

  1. より良いパラメータを見つけるために KDJ,BOLL,MACDなどのより多くの指標の組み合わせをテストします.
  2. ストップ・ロスの移動やx×atrのようなストップ・ロスのメカニズムを組み込む.
  3. 容量や変動等で入力フィルターを最適化します
  4. 持有期間を短縮したり 利益の引き上げ目標を上げたりすることで 持有規則を厳しくする.
  5. ニューラルネットワークを使って最適なパラメータの組み合わせを見つけるために 機械学習を導入します

結論

簡単に言うと,これは Ichimoku Cloud と移動平均を組み合わせてトレードシグナルのトレンドと勢いを決定する非常に単純な定量的な取引戦略です.それは良い利益の可能性を持つ短期間の変動性資産取引に適しています. もちろん,戦略は完璧ではありません.これはより堅牢なものにするためにエントリールール,ストップ損失,パラメータ選択などを通じて改善の余地があります.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Cloud + ema 50 Strategy", overlay=true)

len = input.int(50, minval=1, title="Length")
src = input(close, title="Source")
out = ta.ema(src, len)

conversionPeriods = input.int(9, minval=1, title="Conversion Line Length")
basePeriods = input.int(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length")
displacement = input.int(1, minval=1, title="Lagging Span")

donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = math.avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement - 1, color=#A5D6A7,
     title="Leading Span A")
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
     title="Leading Span B")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90))

plot(out, title="EMA", color=color.white)

// Condition for Buy Signal
buy_signal = close > out and leadLine1 > leadLine2

// Condition for Sell Signal
sell_signal = close < out and leadLine2 > leadLine1

// Strategy entry and exit conditions
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Exit long position if candle closes below EMA 50
if (strategy.opentrades > 0)
    if (close < out)
        strategy.close("Buy")

// Exit short position if candle closes above EMA 50
if (strategy.opentrades < 0)
    if (close > out)
        strategy.close("Sell")


もっと