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


作成日: 2023-11-24 14:38:47 最終変更日: 2023-11-24 14:38:47
コピー: 0 クリック数: 653
1
フォロー
1617
フォロワー

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

概要

一目平衡戦略は,イチモク・キンコ・ヒョ指数を用いたトレンド追跡戦略である.この戦略は,複数の指数でトレンドの方向性を識別し,牛市で多行,熊市で空行して,資金の長期的上昇を実現する.

戦略原則

この戦略は主にイチモク・キンコ・ヒョ指数に基づいている.この指数は,転向線 (((Tenkan-Sen),基準線 (((Kijun-Sen),前沿線 (((Senkou-Span A),先行線 ((((Senkou-Span B) と遅延線 (((((Chikou-Span) を構成している.価格が雲図の上にある時は多頭傾向であり,価格が雲図の下にある時は空頭傾向である.

この戦略の取引シグナルは以下の条件の組み合わせから得られます.

  1. ターニングラインで基準線を横断する多頭信号
  2. ベースラインを空頭信号として下回線に回転
  3. 遅延線が多頭確認として上を横切る
  4. 遅延線を下に空頭として通過確認
  5. RSIが50を超えると多頭指数になります.
  6. RSIが50を下回ると空頭になります.
  7. 価格が多角化している.
  8. 雲の下の空飛ぶトレンド

上記の多頭条件が同時に満たされると多入場する.上記の空頭条件が同時に満たされると空頭入場する.

優位分析

この戦略は,トレンド追跡とオーバーバイオーバーセール指標を組み合わせて,トレンドの方向を効果的に識別することができます.主な利点は以下の通りです.

  1. Ichimoku Kinko Hyo指数は,短期市場の騒音に惑わされないように,中長期のトレンドを識別します.
  2. RSIと組み合わせると,過剰買いと過剰売りを判断し,反転の機会を逃さないようにします.
  3. 株価の変動条件を考慮して,変動率が高くなる時にのみ取引を行い,無効取引を避ける.
  4. 厳格な入場・出場手順で,リスクを最大限に避ける.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. Ichimoku Kinko Hyoの指標が遅れているため,入場時間が遅れている可能性があります.
  2. 多条件組合せ取引シグナルの発生頻度は低いため,取引回数が不足する可能性があります.
  3. 資金管理とポジション管理を考慮していない場合,過剰取引のリスクがある可能性があります.

対応方法:

  1. イチモク・キンコ・ヒョのパラメータを適切に短縮して,指標の感度を増やします.
  2. 取引の頻度を増やし,入場条件の厳しさを軽減する.
  3. 資金管理とポジション管理モジュールに追加し,単一取引の資金比率とポジションを制御します.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. KDJ,MACDなどの他の指標を替えたり組み合わせたりして,信号源を豊かにする.
  2. イチモク・キンコ・ヒョのパラメータを最適化して,指標の感度を向上させる.
  3. 利益とリスクのコントロールを目的としたストップ・ロスの策略を導入する.
  4. ポジション管理モジュールを追加し,資金規模に応じてポジションを動的に調整する.
  5. 期貨セットの期付担保モジュールを追加し,多頭セットの期付担保リスクを管理する.

要約する

一目平衡戦略は,全体として,信頼性の高い,堅牢なトレンド追跡戦略である.これは,トレンド取引における重要な問題を解決している.トレンド認識の正確さと,トレードの発生頻度の間のバランスを保つ.パラメータの調整とモジュール拡張による最適化の余地が残っている.これは,長期的に使用できる戦略の1つです.

ストラテジーソースコード
/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-20 08:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Ichimoku Kinko Hyo: ETH 3h Strategy by tobuno", overlay=true)

//Inputs
ts_bars = input(22, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(60, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
vollength = input(defval=2, title="VolLength")
voltarget = input(defval=0.2, type=float, step=0.1, title="Volatility Target")
Difference = abs((close - open)/((close + open)/2) * 100)
MovingAverage = sma(Difference, vollength)
highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(close)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

// Plot Ichimoku Kinko Hyo
plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=green, title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=red, title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? green : red, title="Cloud color")

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)