一目均衡表に基づく定量的取引戦略


作成日: 2024-01-12 14:20:43 最終変更日: 2024-01-12 14:20:43
コピー: 0 クリック数: 680
1
フォロー
1617
フォロワー

一目均衡表に基づく定量的取引戦略

概要

この戦略は,イチモク雲図指標をベースに,数値取引システムを設計し,主に良好なトレンドを持つ資産に使用する.この戦略は,安定した利益を達成するために,停止損失,停止損失,ストップ損失などの機能を統合している.

戦略原則

Ichimoku雲図は,変換線,基準線,前線1,前線2,雲図で構成されている.この戦略の取引シグナルは,価格と雲図の関係から得られる.具体的には,価格が前線1を上から通過すると買取シグナルが生成され,価格が前線1を下から通過すると売り出せシグナルが生成される.さらに,前線2は,判断の補助指標としても用いられる.

この戦略はまた,ATR指数に基づくストップ・ロストとストップオフを設定している.ATR指数は,市場の変動の程度を効果的に捉える.ストップ・ロストはATRの2倍,ストップ・ロストはATRの4倍である.これは,単一の損失を効果的に制御し,利益の一部をロックすることができます.

最後に,この戦略はトラッキング・ストップ・メカニズムを採用している.具体的には,多発の場合はATRの2倍を後退として使用し,利潤をロックするためにストップ・ラインをリアルタイムで調整する.空調の場合はATRの2倍を後退として使用し,利潤をロックするためにストップ・ラインをリアルタイムで調整する.

戦略的優位分析

  1. イチモク雲の指標を基に,トレンドを効果的に捉える
  2. ATRと組み合わせたストップ・ストップで,リスクをコントロールできます.
  3. ストップ・ロスを追跡することで,利潤を確実に確保できます.
  4. 戦略の論理はシンプルで明快で,理解し,検証しやすい.
  5. パラメトリゼーション,異なる市場に応じてパラメータを調整

リスク分析

  1. Ichimoku Cloud MapはParamer設定に敏感であり,不適切な設定は取引機会を逃したり,誤った信号を生成したりする.
  2. ストップトラッキング 設定が大きすぎると,ストップが早すぎる可能性があります.
  3. 強い株はATR指数で示されたストップラインを突破したり,ストップラインを追跡したりする可能性があります.
  4. 取引コストは収益性にも影響を及ぼします

リスクに対する対処法:

  1. イチモク雲図のパラメータを最適化して,最も適切な設定を見つける
  2. 合理的な追跡ストップを評価し,過大でも過小でもありません.
  3. 強い株に対する 適正な減損範囲を緩めることができる
  4. 低手数料のブローカーを選ぶ

戦略最適化の方向性

  1. 他の技術指標と組み合わせたシグナルフィルタリングにより,誤った取引を減らす
  2. 歴史データ/回測に基づいてパラメータを最適化
  3. 異なる品種のパラメータ設定は,それぞれ最適化できます
  4. 動的に調整できるストップ・ローズ幅
  5. アルゴリズムと組み合わせた特性を設計し,より信頼性の高い取引シグナルを構築

要約する

この戦略は,全体として安定したトレンド追跡戦略である. イチモク雲図指標に基づいてトレンドの方向を判断する. ATR指標を利用してストップ・ロスを設定する. トラッキングストップ・ロスを採用して利益をロックする. 優点は,論理が簡潔で,分かりやすいこと. 単筆の損失をコントロールできる. 効率的にトレンドを追跡できる. しかし,いくつかのパラメータ設定と,敏感なストップ・ロスが突破されるリスクもある.

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

//@version=5
strategy("Ichimoku Cloud Strategy with SL, TP, and Trailing Stop", overlay=true)

conversionPeriods = input(9, "Conversion Line Length")
basePeriods = input(26, "Base Line Length")
laggingSpan2Periods = input(52, "Leading Span B Length")
displacement = input(26, "Lagging Span")
atrLength = input(14, title="ATR Length")

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

// Plot the Ichimoku Cloud components
plot(conversionLine, color=color.blue, title="Conversion Line")
plot(baseLine, color=color.red, title="Base Line")
plot(leadLine1, color=color.green, title="Leading Span A")
plot(leadLine2, color=color.orange, title="Leading Span B")
plot(leadLine1 > leadLine2 ? leadLine1 : leadLine2, color=color.green, title="Kumo Cloud Upper Line")
plot(leadLine1 < leadLine2 ? leadLine1 : leadLine2, color=color.red, title="Kumo Cloud Lower Line")

// ATR for stop loss and take profit
atrValue = ta.atr(atrLength)
stopLoss = atrValue * 2
takeProfit = atrValue * 4

// Strategy entry and exit conditions
longCondition = ta.crossover(close, leadLine1) and close > leadLine2
shortCondition = ta.crossunder(close, leadLine1) and close < leadLine2

// Plot buy and sell signals
plotshape(series=longCondition ? leadLine1 : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition ? leadLine1 : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Execute strategy orders with stop loss and take profit
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition) // Close buy position when sell condition is met
strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition) // Close sell position when buy condition is met

// Trailing stop
strategy.cancel("Trailing Stop")
var float trailingStopPrice = na
if (longCondition)
    trailingStopPrice := math.max(trailingStopPrice, close - atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Buy", trail_offset=atrValue * 2, trail_price=trailingStopPrice)
else if (shortCondition)
    trailingStopPrice := math.min(trailingStopPrice, close + atrValue * 2)
    strategy.exit("Trailing Stop", from_entry="Sell", trail_offset=atrValue * 2, trail_price=trailingStopPrice)