この戦略は"流動性駆動トレンド戦略"と呼ばれる. 異なる時間枠で価格トレンド方向を特定し,対応する長期または短期的な決定を下すことを目的としている. この戦略は,トレンドを決定するために二重移動平均システムを採用し,複数の時間枠における相対強度指数 (RSI) 値の違いを使用して,トレンド変化に間に合うように対応する.
この戦略のコアロジックは,移動平均系が全体的なトレンド方向を判断するCHOP指標に基づいています.特に,この戦略は,より高い時間枠で高速線 (長さ=20) とスローライン (長さ=50) のRSI値を計算し,両RSI線間の差を計算します.高速線RSIがスローラインRSIを超えると,上向きの傾向を示し,長い信号を誘発します.逆に,高速線RSIがスローラインRSIを下向きの傾向を示し,短い信号を生成します.価格上昇によって引き起こされる変動するRSI差は上昇し,傾向の変化点を敏感に識別することができます.
この戦略はまた,複数のタイムフレームメカニズムも導入している.より高いタイムフレーム (例えば毎日) のRSI差を計算し,全体的なトレンド方向を決定し,より低いタイムフレーム (例えば5分) のトレンド判断に基づいて実際の購入および販売オーダーを実行する.複数のタイムフレームの組み合わせは,高タイムフレームのトレンド決定と低タイムフレームの実行の柔軟性の両方を考慮する.
解決策:
この戦略は,トレンドの潜在的なターニングポイントを敏感に捉えるために,RSIのダイバージェンスを活用する.マルチタイムフレームアプリケーションは,特定の取引実行を柔軟に保ちながら,全体的なトレンドを判断することを保証する.他のトレンドフォロー戦略と比較して,この戦略はより直接的で,パラメータ調整で直感的で,最適化が容易である.結論として,この戦略は,さらなる探索と適用に値する効率的で実践的なトレンドトレーディングシステムを形成する.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true) isTimeFrame(timeFrame) => timeFrame == timeframe.period ? true : false Htf() => isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D" TrendIndication() => trendFastLength = 20 trendSlowLength = 50 upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on) rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf)) upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on) rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf)) rsiDiff = rsiFastHtf - rsiSlowHtf crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na if (TrendIndication() == true) strategy.entry("Long", strategy.long) if (TrendIndication() == false) strategy.entry("Short", strategy.short)