この策略は日線ichimoku雲図指標に基づいて簡単なトレンド追跡取引を実現する. 策略は,変換線,基準線,先行線1と先行線2を計算し,現在の閉盘価格の位置と組み合わせて,買入と出場のシグナルを生成する. 閉盘価格が雲図の上部であるとき,上昇傾向にあると判断して,買入シグナルを生成する. 閉盘価格が雲図下部であるとき,下降傾向にあると判断して,売りシグナルを生成する.
この戦略は,イチモク雲図の5つの指標線を計算する次の公式に基づいています.
変換線:過去9日の最高値と最低値の平均値
基準線:過去26日間の最高値と最低値の平均値
先行線1:変換線と基準線の平均値
先行線2:過去52日の最高値と最低値の平均値
付図線: 26日遅れの閉店価格
閉盘価格が雲図より高いときは,上昇傾向にあると考えられ,買入シグナルを生じます.閉盘価格が雲図より低いときは,下降傾向にあると考えられ,売出シグナルを生じます.
具体的には,戦略は以下のステップで実行されます.
変換線,基準線,先行線1,先行線2を計算する
閉店価格の付図線を描画し,26日後延期
閉店価格がクラウドグラフ ((先行線1と先行線2) よりも高いかどうかを判断し,もしそうなら,買い信号を生成する
閉店価格が雲図より低いかどうかを判断する (先行線1と先行線2),もしそうなら,セールシグナルを生む
買入と売却のシグナルが生成される時に,戦略的に入場します.
この戦略の利点は以下の通りです.
クラウドグラフ指標を使用すると,トレンドを効果的に識別し,トレンドの方向に応じてシグナルを生成し,揺れ動いている市場での無駄な入場を避ける
計算パラメータは最適化され,日線取引に適した
先行線1と先行線2のグループ協働を判断基準として使用し,いくつかの衝撃振動による偽信号をフィルタリングすることができる
付図線の遅延設計と組み合わせることで,雲図の上部に突破した直後の回調のリスクを減らす
戦略の論理はシンプルで明快で,理解し,実行しやすい.
他の指標を組み合わせることなく,トレンドトラッキングの完全な取引システムを実現します.
この戦略にはいくつかのリスクがあります.
特定の市場の状況では,クラウドマップが機能しなくなり,誤ったシグナルが生じる可能性があります.
クラウドグラフのパラメータが市場環境の変化に適合しない場合,システムの効果を弱める
添付図の固定遅延設定では,いくつかの機会が逃れている可能性があります.
2つの先行線を組み合わせても,効果によるリスクは完全に回避できません.
タイムラグがあるため,迅速な反転を捕捉することができません.
市場における長期的傾向と短期的調整の区別がつかないことにより,損失を招く可能性があります.
この戦略は以下の点で最適化できます.
変換線,基準線などのパラメータを最適化して,異なる市場環境に適合させる
トレンド判定指標を高め,トレンドの方向と強さを確認する
ストップ・ロズとストップ・ストップ戦略を設定し,単一損失と利益を制御する.
クラウドマップを突破する時に入場する.
市場段階によって異なるパラメータの組み合わせ
機械学習アルゴリズムを追加し,パラメータを自動的に最適化
固定遅延を動的遅延に変更することを検討
全体的に見ると,このichimoku雲図戦略は,単純なトレンド判断ルールによって基本的なトレンド追跡取引を実現する.いくつかの改善の余地があるが,その核心思想は明確で信頼性が高く,パラメータは十分に最適化されており,量化取引の基本戦略として使用できる.雲図パラメータをさらに最適化し,フィルタリング指標と風力制御モジュールを追加することで,この戦略は,非常に実用的な量化取引システムになる可能性がある.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-07 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Ichimoku Cloud", shorttitle="Ichimoku", overlay=true, commission_type=strategy.commission.percent,commission_value=0.075, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=0, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1 = plot(leadLine1, offset = displacement, color=color.green,
title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=color.red,
title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red)
buy = close > leadLine1[26] and close > leadLine2[26]
sell = close < leadLine1[26] and close < leadLine2[26]
strategy.entry("Buy", strategy.long, when = buy)
strategy.entry("Sell", strategy.short, when = sell)