イチモク・クラウドとMACDモメンタム・ライディングは,イチモク・クラウド指標とMACDモメンタム指標を組み合わせたトレンドフォロー戦略である.この戦略は,イチモク・クラウドを使用してトレンド方向とサポート/レジスタンスレベル,およびMACD指標を使用してモメンタム逆転を検知し,トレンド中にタイミングで市場に参入する.一方,この戦略は,利益をロックし,引き下げを減らすためにトライリングストップ損失を採用する.
イチモク・クラウドはターニングライン (テンカン・セン),ベースライン (キジョン・セン),リード・スパンA (センコ・スパンA),リード・スパンB (センコ・スパンB),確認ライン (チコ・スパン) を構成する.戦略は,トレンド方向とサポート/レジスタンスを決定するために以下の信号を使用する.
移動平均収束分差 (MACD) は,動力指標である.この戦略では,MACDの高速線がスローラインを越えると購入信号であり,高速線がスローラインを下回ると販売信号である.
ターニングラインがベースラインを超えると,確認ラインが26バー前の閉盤価格を超えると,閉盤価格がクラウドの上部バンドを超えて,MACDの高速ラインはスローラインよりも上昇傾向のクロスオーバーがあり,ロングになります.
価格が3%上昇すると,ストップ・ロスは現在の価格の97%に移動し,利益を固定し,上向きの動きを追います.引き下げが3%を超えると,ストップ・ロスは損失です.
ターニングラインがベースラインを下回り,確認ラインが26バー前の閉盤価格を下回り,閉盤価格がクラウドの下部バンドを下回り,MACDの高速線がスローライン下回りし,ショートになります.
価格が3%下落すると,ストップロスは現在の価格の103%に移動し,利益を固定し,下落の動きを追いかける.上昇が3%を超えると,ストップロスは損失です.
この戦略は,トレンドの特定とエントリータイミングを組み合わせ,トレンド市場では良い収益を達成することができます.
イチモク・クラウドは,トレンドの方向性を明確に識別できます. 戦略は,トレンドに反する取引を避けるために,クラウドの方向に並べてのみ入力されます.
MACDは短期的なインパクト逆転を検出するのに効果的です.クラウドと組み合わせると入力精度を向上させます.
トレイリングストップロスは,トレンド中に戦略を継続することを可能にします.適切なポジションサイズ化により,取引ごとに制御されたリスクが確保されます.
この戦略には リスクもあります
雲は比較的長い回顧期間の必要があり,短期的には不正確な信号を与える可能性があります.
MACDは価格と共に振動し,偽信号を生成する可能性があります.信号を確認するにはより多くのフィルターが必要です.
トレイリングストップ・ロスはトレンド市場にのみ適している.ストップ・ロスの割合はそれに応じて調整する必要がある.そうでなければ,ウィップソウはトレンド市場中に頻繁に停止する可能性があります.
戦略自体ではリスク管理を行わない.損失を制御するために,ユーザーは外部リスク管理技術を実装する必要があります.
イチモク・クラウドとMACDモメント・ライディング戦略は,次の方法で最適化できます:
パラメータ調整 - ターニングライン,ベースラインのバックバック期間を調整し,より明確な信号のためにMACDパラメータを最適化します.
フィルタリングを追加します - RSI,ボリンジャーバンドなどの他の指標を使用して 悪い信号をフィルターし 偽信号を減らす
リスクの優先順位と市場変動を基準とする基本ストップ損失の割合
ポジションサイズを組み込む - 総引き上げを制御するために,取引毎の最大損失を制限する.
契約の自動選択と再バランス - より多くの市場への適応性を拡大する
イチモク・クラウドとMACDモメント・ライディング戦略は,トレンドとタイミングの両方を考慮し,パラメータが適切に調整され,リスク制御が実施された場合,良い収益を達成することができます.これは,トレンドフォロー戦略としていくつかのプログラミングスキルを持つ投資家に適しており,技術指標と戦略開発を学ぶための量子トレーディング初心者の参考になります.
/*backtest start: 2022-11-21 00:00:00 end: 2023-11-03 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Ichimoku Cloud with MACD and Trailing Stop Loss', overlay=true, initial_capital=1000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30, commission_type=strategy.commission.percent, commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 6, 1, 0, 0) // Inputs ts_bars = input.int(9, minval=1, title='Tenkan-Sen Bars') ks_bars = input.int(26, minval=1, title='Kijun-Sen Bars') ssb_bars = input.int(52, minval=1, title='Senkou-Span B Bars') cs_offset = input.int(26, minval=1, title='Chikou-Span Offset') ss_offset = input.int(26, minval=1, title='Senkou-Span Offset') long_entry = input(true, title='Long Entry') short_entry = input(true, title='Short Entry') middle(len) => math.avg(ta.lowest(len), ta.highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = math.avg(tenkan, kijun) senkouB = middle(ssb_bars) // Plot Ichimoku Kinko Hyo plot(tenkan, color=color.new(#0496ff, 0), title='Tenkan-Sen') plot(kijun, color=color.new(#991515, 0), title='Kijun-Sen') plot(close, offset=-cs_offset + 1, color=color.new(#459915, 0), title='Chikou-Span') sa = plot(senkouA, offset=ss_offset - 1, color=color.new(color.green, 0), title='Senkou-Span A') sb = plot(senkouB, offset=ss_offset - 1, color=color.new(color.red, 0), title='Senkou-Span B') fill(sa, sb, color=senkouA > senkouB ? color.green : color.red, title='Cloud color', transp=90) ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) // MACD [macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = ta.mom(close, cs_offset - 1) > 0 cs_cross_bear = ta.mom(close, cs_offset - 1) < 0 price_above_kumo = close > ss_high price_below_kumo = close < ss_low bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and ta.crossover(macd, macd_signal) bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and ta.crossunder(macd, macd_signal) // Configure trail stop level with input options longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod) strategy.exit('Exit', stop = longStopPrice, limit = shortStopPrice) //strategy.close('Long', when=bearish and not short_entry) //strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod) //strategy.close('Short', when=bullish and not long_entry)