流動性に基づくトレンド戦略 - 流動トレンド指針に基づく量取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月21日 10:19:52
タグ:

img

概要

この戦略は"流動性駆動トレンド戦略"と呼ばれる. 異なる時間枠で価格トレンド方向を特定し,対応する長期または短期的な決定を下すことを目的としている. この戦略は,トレンドを決定するために二重移動平均システムを採用し,複数の時間枠における相対強度指数 (RSI) 値の違いを使用して,トレンド変化に間に合うように対応する.

戦略の論理

この戦略のコアロジックは,移動平均系が全体的なトレンド方向を判断するCHOP指標に基づいています.特に,この戦略は,より高い時間枠で高速線 (長さ=20) とスローライン (長さ=50) のRSI値を計算し,両RSI線間の差を計算します.高速線RSIがスローラインRSIを超えると,上向きの傾向を示し,長い信号を誘発します.逆に,高速線RSIがスローラインRSIを下向きの傾向を示し,短い信号を生成します.価格上昇によって引き起こされる変動するRSI差は上昇し,傾向の変化点を敏感に識別することができます.

この戦略はまた,複数のタイムフレームメカニズムも導入している.より高いタイムフレーム (例えば毎日) のRSI差を計算し,全体的なトレンド方向を決定し,より低いタイムフレーム (例えば5分) のトレンド判断に基づいて実際の購入および販売オーダーを実行する.複数のタイムフレームの組み合わせは,高タイムフレームのトレンド決定と低タイムフレームの実行の柔軟性の両方を考慮する.

戦略 の 利点

  • RSI ダイバージェンスを使用して,潜在的なトレンド逆転を事前に敏感に把握する
  • 複数のタイムフレームの概念を適用して,高TFの傾向を決定し,低TFのオーダーを実行する
  • RSI は,市場流動性と参加率を示す価格と量の変化を反映する.
  • シンプルなパラメータ設定,理解し,説明し,調整しやすい

リスク と 解決策

  • 偽の脱出は2つのMAシステムで起こり得る
  • 失敗した脱出は不必要な損失を引き起こす

解決策:

  1. 誤ったブレイクの可能性を減らすために MA パラメータを調整する
  2. 不必要な入力を避けるためにフィルターを追加します.

オプティマイゼーションの方向性

  • カルマンフィルターアルゴリズムを使用して RSI パラメータを最適化
  • 判断を助ける MACD と他の指標を追加する
  • 取引量の変化に基づいて動的出口ポジションを設定する

結論

この戦略は,トレンドの潜在的なターニングポイントを敏感に捉えるために,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)

もっと