これは,イチモク指標に基づいた定量的なトレンドフォロー戦略です.これは,主に市場動向を追跡するために特定の条件下で長と短ポジションを構築し,リスクを制御するための特定のストップロスのメカニズムと組み合わせます.
この戦略の核心は,特定のパラメータ設定によるイチモク指標に基づいて取引信号を構築することである. イチモク指標は,変換線,ベースライン,リードスパンA,遅れスパンBという4つの線で構成される. 変換線は一般的にテンカンセン,ベースラインはキジュンセンとして知られる. この戦略は,テンカンセンとキジュンセンのために異なるパラメータを設定し,ゴールデンクロスとデッドクロス取引信号を生成する. さらに,エントリを誘発するための補助条件としてクラウドブレイクも組み込む.
具体的には,この戦略は主に以下の取引規則に従っている.
価格がテンカンセンを突破して雲を離れるときに
価格がテンカンセンを下回るとロングポジションを閉じる
価格がキジュンセンを下回り 雲に突入するとショート
価格がテンカンセン以上になるとショートポジションを閉じる.
このような長期・短期取引原理によって,戦略は市場の動向を効果的に把握することができます.一方,クラウドブレイクを組み込むことは,誤った信号を一定程度フィルターします.
他の一般的な移動平均取引戦略と比較して,この戦略には以下の利点があります.
イチモクによるより正確なトレンド判断. イチモクは複数の移動平均から構成され,トレンド認識と単一のMAからのノイズをフィルタリングするためにより信頼性がある.
複数の線でフィルター効果が良くなる.雲の突破からの追加のフィルターは偽信号を避ける.
制御可能なリスク ストップ・ロストラインを設定することで,タイムリーストップ・ロストとリスク制御が可能になります
引き下げが少ない.他のトレンド戦略に比べて引き下げ損失が少ない.
柔軟なパラメータ調整.パラメータは,異なる市場状況に適応するように調整できます.
この戦略には依然としていくつかのリスクがあります.
範囲限定の市場での不良業績 浮動損失につながるウィプソーが発生する可能性があります
逆転の認識が不十分.短期的な傾向逆転を認識できず,機会を逃したり,突然の逆転を経験する可能性があります.
経験的なパラメータ調整に依存する.異なるパラメータは,豊富な歴史的経験を必要とするパフォーマンスに大きく影響する.
次の側面は,上記のリスクに対処するために最適化することができます:
変動指標を追加して,トレンドではない市場を検出し,戦略を一時停止します.
移動平均のクロスオーバーのような 逆転信号を追加します
機械学習を利用して パーマータを自動で最適化します
市場変動に基づいて ダイナミックなストップ・ロスを設定します
一般的に,この戦略は,トレンドの動きを把握するイチモクの強みを活用する.適切なパラメータ調整と最適化により,より高い強度を達成し,ライブ取引に考慮すべき効率的な戦略として機能することができます.
/*backtest start: 2022-12-13 00:00:00 end: 2023-12-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="RENKO ICHIMOKU STRATEGY", shorttitle="RENKO ICHIMOKU STRATEGY", overlay=true) ro = open rc = close tenkanSenPeriods = input(10, minval=1, title="Tenkan-sen"), kijunSenPeriods = input(30, minval=1, title="Kijun-sen") SenkouSpanBPeriods = input(60, minval=1, title="Senkou Span B"), displacement = input(30, minval=1, title="Chikou Span (Displacement)") donchian(len) => avg(lowest(len), highest(len)) tenkanSen = donchian(tenkanSenPeriods) kijunSen = donchian(kijunSenPeriods) SenkouSpanA = avg(tenkanSen, kijunSen) SenkouSpanB = donchian(SenkouSpanBPeriods) plot(tenkanSen, color=#0496ff, linewidth=2, title="Tenkan-sen") // plot(kijunSen, color=#991515, title="Kijun-sen") // plot(close, offset = -displacement, color=#459915, title="Chikou Span") p1 = plot(SenkouSpanA, offset = displacement, color=green, title="Senkou Span A") p2 = plot(SenkouSpanB, offset = displacement, color=red, title="Senkou Span B") fill(p1, p2, color = SenkouSpanA > SenkouSpanB ? green : red) // Entry/Exit Signals tk_cross_bull = tenkanSen > kijunSen tk_cross_bear = tenkanSen < kijunSen price_below_tenkan = open < tenkanSen and close < tenkanSen price_above_tenkan = open > tenkanSen and close > tenkanSen price_below_kinjun = close < kijunSen price_above_kinjun = close > kijunSen tekan_above_kinjun = tenkanSen > kijunSen tekan_below_kinjun = tenkanSen < kijunSen ss_high = max(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1]) ss_low = min(SenkouSpanA[displacement-1], SenkouSpanB[displacement-1]) price_inside_kumo = close > ss_high and close < ss_low price_below_kumo = rc[1] < ro[1] and rc[0] < ro[0] and rc[1] < ss_low price_above_kumo = rc[1] > ro[1] and rc[0] > ro[0] and rc[1] > ss_high cs_cross_bull = mom(close, displacement-1) > 0 cs_cross_bear = mom(close, displacement-1) < 0 bullish = cs_cross_bull and not price_inside_kumo bearish = cs_cross_bear and not price_inside_kumo strategy.entry("Long", strategy.long, when=price_above_kumo and price_above_tenkan ) strategy.close("Long", when=price_below_tenkan ) strategy.entry("Short", strategy.short, when=price_below_kumo and price_below_tenkan ) strategy.close("Short", when=price_above_tenkan ) // longCondition = crossover(sma(close, 14), sma(close, 28)) // if (longCondition) // strategy.entry("My Long Entry Id", strategy.long) // shortCondition = crossunder(sma(close, 14), sma(close, 28)) // if (shortCondition) // strategy.entry("My Short Entry Id", strategy.short)