この戦略は,移動平均値,相対強度指数,およびコモディティチャネル指数を統合し,比較的完全なトレンドトラッキングと指標組み合わせ戦略を形成する.その基本的なアイデアは,トレンド指標がトレンド形成を確認した後,より正確なエントリを実施することです.
中間価格を計算するには hl2 を使います.
主な傾向を判断するために14期間のCCI指標を計算します.CCIが0を超えると上昇傾向です.0未満の場合下落傾向です.
14 期間のRSI指標の速い線と 50 期間のRSI指標のスローラインを計算する. 速い線がスローラインを越えたとき,購入信号が生成される. 速い線がスローラインを下回ったとき,販売信号が生成される.
実際の取引シグナルは,CCIインジケーターがRSIインジケーターのシグナル方向と一致する場合にのみ生成されます.つまり,CCIが0を超え,RSIがスローラインを超えたときのみ購入し,CCIが0未満で,RSIがスローラインを下回るとのみ販売します.
偽のブレイクアウトを避けるため,小規模なトレンドを判断するのに役立つため,価格を14期間の移動平均値Hl2と比較します.価格が14期間の移動平均値Hl2を超え,RSIインジケーターが上昇するとのみ購入信号が生成されます.価格が14期間の移動平均値Hl2を下回るとのみ販売信号が生成されます.
この戦略はトレンド判断と逆転信号を統合し,トレンド開始後も間に合うようにし,逆転信号指標を使用して出口点を決定し,それによってより良い収益を得ます.
コモディティチャネルインデックスは主要なトレンド方向を正確に決定し,取引方向の誤った選択を避ける.
相対強度指数の高速と遅い線交差は信頼性の高い有効信号として機能し,移動平均値の遅延問題を回避し,価格逆転を間に合うように捉えることができます.
価格を中間線と比較すると 誤った信号を引き起こす 誤ったブレイクをさらにフィルタリングできます
全体的にこの戦略は安定性があり,強いトレンドでうまく機能しています.
この戦略は,取引品種に敏感であり,特定の品種のためのパラメータ最適化を要求する.すべての品種に盲目的に適用すると,不安定なパフォーマンスにつながる可能性があります.
14 期間の移動平均値や 50 期間の移動平均値などのパラメータ設定は,異なる市場に応じて調整する必要がある.不適切なパラメータ設定もパフォーマンスが低下する可能性があります.
主要なトレンド方向を決定するために CCI にのみ頼ることは,まだ十分に完璧ではありません.
逆転信号指標の組み合わせは比較的大きいため,ある程度の過剰最適化につながる可能性があります.これは厳格にテストする必要があります.
傾向判断をより正確にするために,主要な傾向を判断するための DMI,ADX など,より多くの指標を追加することを検討してください.
ストップ・ロスの論理を増強する.例えば,逆転信号が表示された後,価格が一定の幅で再びコールバックした場合,ストップ・ロスの出口は損失を削減することを考慮することができる.
パラメータを最適化して,特定の取引品種により適するようにします.例えば,スローラインのサイクルのパラメータを増加させ,または中間価格計算方法を調整します.
パラメータ最適化組み合わせを構築し,異なる品種に最適なパラメータを選択し,戦略の適用性を大幅に改善することができます.
運動量が十分でないとき,誤った信号を避けるため,運動量指標を追加する.
この戦略の全体的な枠組みは完全であり,理論的には優れたパフォーマンスを得ることができるトレンド判断と逆転指標を統合している.しかし,実際の応用では,過剰なフィットメントのリスクを軽減するために,まだ取引品種のためのパラメータとモデル最適化が必要です.厳格な統計テストを通過した場合,推奨に値する安定した戦略になる可能性があります.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h 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/ // © SuchitRaju //@version=4 strategy("MA RSI CCI") price_up = if(close > open and close > sma(hl2,14)) 1 else 0 price_down = if(open > close and close < sma(hl2,14)) 1 else 0 // cci_indicator = cci(hl2, 14) // plot(cci_indicator, color=color.blue) rsi_slow = sma(rsi(close, 14), 50) // plot(rsi_slow, color=color.red) rsi_fast = rsi(close, 14) // plot(rsi_fast, color=color.green) isCrossover = if(rsi_fast > rsi_slow and cci_indicator > 0) 1 else 0 // plotshape(isCrossover, style = shape.arrowup, color = color.green, size = size.huge) isCrossunder = if(rsi_fast < rsi_slow and cci_indicator < 0) 1 else 0 // plotshape(isCrossunder, style = shape.arrowup, color = color.red, size = size.huge) // start = timestamp("GMT-5", 2016,9,1,0,0) // end = timestamp("GMT-5", 2017,9,1,0,0) // strategy.entry("Long", strategy.long, 1, when = isCrossover and price_up) // strategy.entry("Short", strategy.short, 1, when = isCrossunder and price_down) // strategy.close("Long", when = isCrossunder and price_down) // strategy.close("Short", when = isCrossover and price_up) strategy.entry("Long", strategy.long, 1, when = isCrossover) strategy.entry("Short", strategy.short, 1, when = isCrossunder) strategy.close("Long", when = isCrossunder) strategy.close("Short", when = isCrossover)