一目均衡表トレンドフォロー戦略


作成日: 2023-12-20 15:08:22 最終変更日: 2023-12-20 15:08:22
コピー: 0 クリック数: 635
1
フォロー
1621
フォロワー

一目均衡表トレンドフォロー戦略

概要

この戦略は,イチモクテクニカル指標に基づく定量的なトレンド追跡戦略であり,主に特定の均線差を介して特定の条件下で多空券を構築し,市場トレンドを追跡し,一定のストップメカニズムと組み合わせてリスクを制御する.

戦略原則

この戦略の核心は,特定のパラメータの設定に基づいて取引信号を構築するイチモク指数である.イチモク指数は,変換線,基準線,前沿線,および後退線の4つの線で構成され,変換線は,アンテナ,基準線は,地線と呼ばれる.この戦略は,アンテナと地線の異なるパラメータを設定することによって金叉死叉取引信号を形成する.さらに,この戦略は,入場信号を発信するための補助条件として雲帯の突破を組み合わせる.

具体的には,この戦略は以下の取引ルールに基づいています.

  1. 価格が天井を突破し 雲の帯から抜け出すときにもっと多くのことをします

  2. 価格が天井を横切った時,安価で,安価で

  3. 価格が地平線を下回り 雲帯に入ると空き地になります

  4. 価格が天線を横切ったとき空き仓.

このような多空取引ルールによって,市場のトレンド状況を効果的に捉えることができる.同時に,クローズ帯の突破をフィルタリング条件として加え,誤った買い取りを一定程度に回避することができる.

戦略的優位分析

他の一般的な均線取引戦略と比較して,この戦略には以下の利点があります.

  1. イチモク指数は,複数の平均線で構成され,総合的な判断傾向はより信頼性が高く,単一の平均線が生じる騒音を避けます.

  2. 多数の均線組合せにより,取引のフィルタリング効果がより良くなる。破雲帯を追加の条件として,誤信号を回避することができる。

  3. リスクは制御できる. 止損アンテナを設定することで,早期に止損し,リスクを効果的に制御することができる.

  4. 撤回は小さい.他のトレンド戦略と比較して,長期の逆市操作が少なく,撤回損失を最大限に減らす.

  5. パラメータ調整の柔軟性 市場動向に応じて平均線パラメータを調整することで,異なる動向に柔軟に適応することができる.

リスクと最適化分析

この戦略にはリスクがあります.

  1. 振動的な動きが悪い. 長期にわたる振動的な整理市場があるとき,この戦略は,小規模な反復取引が浮動損失を引き起こす可能性が高い.

  2. トレンド反転の認識が不十分である。イチモク指標は短期間のトレンド反転の判断能力が弱く,反転の機会を逃すか,突然の反転のリスクを冒す可能性がある。

  3. パラメータ設定は経験に依存する.異なるパラメータ設定は,戦略のパフォーマンスに大きな影響を及ぼし,豊富な歴史の経験に依存して調整する必要があります.

この戦略は,上記のリスクに対して,以下のような点で最適化できます.

  1. 波動性指標などの変動状況を判断し,無効取引を避けるための戦略状態を設定する.

  2. 移動平均の反転クロス組み合わせ判断を添加するなど,トレンド反転信号モジュールを追加する.

  3. 機械学習などの方法を使用して,パラメータを自動的に最適化し,人工経験への依存を減らす.

  4. ダイナミック・ストップ・ラインを設定する.市場の変動に応じてリアルタイムでストップ・損失幅を調整し,リスクを低減する.

要約する

全体的に見ると,この戦略は,イチモク指標の優位性を活用し,トレンドの状況をとらえることに強い優位性を示しています.適切なパラメータ設定と最適化調整により,戦略の安定性をさらに高め,実物への投資を考慮すべき高効率な戦略にすることができます.

ストラテジーソースコード
/*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)