この戦略は,イチモク・クラウド・チャートと様々な補助指標を組み合わせてトレンドを追跡する.主にイチモク・クラウドを使用してトレンド方向とMACD,CMF,TSIなどの指標を決定し,シグナル品質を改善するためにフィルタリングする.これは複数の要因の包括的な判断に基づいた強力なトレンド戦略である.
この戦略は,主にイチモク雲の変換を利用してトレンド方向を判断する.テンカンセンが雲の上を横切ると長になり,テンカンセンが下を横切ると短くなる.一方,チコスパン,MACDヒストグラム,CMF,TSIを使用して多層フィルタリングを行い,信号の品質を確保する.
具体的には,長信号は,次のとき起動します.
ショートシグナルは上記条件が逆転すると発生する.このような包括的な基準によって,ほとんどの誤ったシグナルをフィルタリングし,市場の主要なトレンドを把握することができます.
この戦略の最大の利点は,複数の指標を組み合わせることで,誤った信号をフィルターし,強い傾向を捉えることです.
このような判断によって 戦略は 中長期の熱いセクターを効果的に特定し,トレンド取引から利益を得ることができます.
この戦略の主なリスクは以下のとおりです.
解決策:
主な最適化方向:
より良いパラメータ組み合わせを見つけるためにより多くのバックテストを通じてパラメータ最適化
リスク管理にストップ・ロスのメカニズムを追加する
利益をロックするために,ストップ損失を追加します
より良いフィルター組み合わせを見つけるためにより多くの指標をテスト
本物の脱出を区別するルールを追加します
この戦略は,イチモククラウドと複数の補助指標を効果的に組み合わせます.パラメータ最適化,ストップ損失メカニズム,指標選択のさらなる改善により,より高い安定した収益性のために安定性と信号品質が向上できます.この戦略は強力な実用的な価値を持っています.
/*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)