イチモク・クラウド・チャートに基づくトレンド戦略最適化

作者: リン・ハーンチャオチャン開催日:2024年1月19日 14:45:21
タグ:

img

概要

この戦略は,イチモク・クラウド・チャートと様々な補助指標を組み合わせてトレンドを追跡する.主にイチモク・クラウドを使用してトレンド方向とMACD,CMF,TSIなどの指標を決定し,シグナル品質を改善するためにフィルタリングする.これは複数の要因の包括的な判断に基づいた強力なトレンド戦略である.

原則

この戦略は,主にイチモク雲の変換を利用してトレンド方向を判断する.テンカンセンが雲の上を横切ると長になり,テンカンセンが下を横切ると短くなる.一方,チコスパン,MACDヒストグラム,CMF,TSIを使用して多層フィルタリングを行い,信号の品質を確保する.

具体的には,長信号は,次のとき起動します.

  1. テンカンセンが雲の上を横切る
  2. 雲が広がって テンカン・センがキジョン・センの上にいる
  3. チコウ・スパンは0点以上だ
  4. 閉店価格は雲の上です
  5. MACDヒストグラムは0以上
  6. CMFは0.1より大きい
  7. TSIは0以上

ショートシグナルは上記条件が逆転すると発生する.このような包括的な基準によって,ほとんどの誤ったシグナルをフィルタリングし,市場の主要なトレンドを把握することができます.

利点

この戦略の最大の利点は,複数の指標を組み合わせることで,誤った信号をフィルターし,強い傾向を捉えることです.

  1. イチモク雲は主要なトレンド方向を決定します
  2. 補助指標は信号をさらにフィルタリングし,リスクを軽減します
  3. より信頼性の高い信号のための複数のタイムフレームを包括的に考慮します
  4. 厳格なルールで高品質のセットアップのみを取引し,不安定な市場を避ける
  5. トレンドフォローメカニズムでトレンド利益を最大化

このような判断によって 戦略は 中長期の熱いセクターを効果的に特定し,トレンド取引から利益を得ることができます.

リスク

この戦略の主なリスクは以下のとおりです.

  1. 誤った信号を引き起こす誤ったブレイクリスク
  2. すべての利益を失う傾向の逆転リスク
  3. 取引頻度が比較的低いため,見逃した機会

解決策:

  1. 貿易頻度を増やすため フィルタリング基準を適切に緩和する
  2. ストップ損失条件を追加して損失サイズを制限する.
  3. 信号の精度を向上させるパラメータを最適化

強化

主な最適化方向:

  1. より良いパラメータ組み合わせを見つけるためにより多くのバックテストを通じてパラメータ最適化

  2. リスク管理にストップ・ロスのメカニズムを追加する

  3. 利益をロックするために,ストップ損失を追加します

  4. より良いフィルター組み合わせを見つけるためにより多くの指標をテスト

  5. 本物の脱出を区別するルールを追加します

結論

この戦略は,イチモククラウドと複数の補助指標を効果的に組み合わせます.パラメータ最適化,ストップ損失メカニズム,指標選択のさらなる改善により,より高い安定した収益性のために安定性と信号品質が向上できます.この戦略は強力な実用的な価値を持っています.


/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-13 14:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)



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

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)


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
fast_length = input(title="Fast Length", type=input.integer, defval=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal


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


//CMF
lengthA = input(8, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)


//TSI
long = input(title="Long Length", type=input.integer, defval=8)
short = input(title="Short Length", type=input.integer, defval=8)
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)



bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0  and mf < -0.1 and tsi_value < 0



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

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

もっと