この戦略は,CT TTM Squeeze指標を使用して価格動向を特定し,リスクを制御するためにトレーリングストップを適用します.この戦略は"CT TTM Squeezeに基づくトレンドフォロー戦略"と名付けられています.
この戦略は,価格動向を決定するためにCT TTM Squeeze指標を使用しています.具体的には,以下の変数が戦略で定義されています.
oscが0を超えると,緑色で表示され,長表示され,oscが0を下回ると,赤色で表示され,短表示される.
OSCが正であれば,ロングで,OSCがマイナスであれば,ショートで
この戦略は,オシレーターOSCを使用してトレンド方向を決定し,diffを使用して長/短モメンタムを測定する.OSCが0を超えると,上向きのトレンドをシグナル化し,したがってロングになります.OSCが0を下回ると,下向きのトレンドをシグナル化し,したがってショートになります.
この戦略には以下の利点があります.
CT TTM Squeeze を使ってトレンドを特定する確率は比較的高い.CT TTM Squeeze は,価格トレンドを効果的に特定できる移動平均値,ボリンガー帯,ケルトナーチャネルを包括的に考慮する.
オスイレーターを使用して,ロング/ショート信号を決定すると,トレンドではないゾーンでは偽信号が回避される.オスイレーターは,小規模な価格変動が取引信号に与える影響を効果的にフィルタリングすることができます.
トレーリングストップは,各取引の損失を制限することによってリスクを制御するために使用されます. 戦略は,入場後にタイムリーにストップ・ロスを設定し,利益をロックし,過度の損失を避けることができます.
この戦略にはパラメータが少なく,最適化が容易である.長さパラメータだけで,最適なパラメータ組み合わせを見つけるための迅速なテストを容易にする.
グラティング機能は,信号を明確に表示する.異なる色が使用され,長/短信号と強さを区別し,視覚的にトレンド判断を提示する.
この戦略には次のリスクもあります
CT TTM Squeezeは,特定の市場条件で誤った信号を生成し,取引損失につながる可能性があります.価格が激動したとき,誤った長/短信号を生成することができます.
オシレーターの差異は,間違った取引信号を引き起こす可能性があります.価格が逆転したが,オシレーターが回っていない場合,シグナルが間違っている可能性があります.
過度に攻撃的な遅延停止は不必要な損失を引き起こす可能性がある.正常な変動は遅延停止を誘発し,停止レベルがあまりにも近く設定された場合,強制退出を引き起こす可能性があります.
この戦略は,範囲限定市場ではなく,傾向が強い製品にのみ適しています.主にトレンドを取引しているため,不安定な統合市場では業績が悪いです.
過剰な最適化は曲線フィッティングにつながる可能性がある.パラメータ最適化では過剰なフィッティングを避けるように注意する必要があります.
戦略は以下の側面で最適化できます.
シグナル精度のために複数の指標を組み合わせます.MACD,KDJなどの他の指標は,エントリー信号を最適化するために追加できます.
よりスマートなストップのためにストップ損失最適化モジュールを追加します.適応ストップ,制限ストップなどのトレーリングストップメソッドをテストできます.
固定分数,ケリー式等をテストすることによってマネーマネジメントを最適化します これは,取引リスクを保証しながら資本の使用効率を向上させることができます.
適応性を向上させるために特定の製品のパラメータを細かく調整する.製品の特徴に基づいてパラメータを調整することで,戦略の適合が向上する.
適応学習のための機械学習アルゴリズムを追加します. RNN,LSTMなどを使用して戦略の適応能力を向上させることができます.
この戦略は,トレンド方向を決定するためにCT TTM Squeezeを使用し,オシレーターがエントリー信号として0を横切り,リスクを管理するためにトライリングストップを使用する.その利点は高い精度,簡単な最適化にあるが,指標の失敗,過度に緊密なストップなどのリスクは存在する.将来の改善は,多指標コンボ,ストップ最適化,マネーマネジメントなどを通じてパフォーマンスをさらに向上させる.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("CT TTM Squeeze") length = input(title="Length", defval=20, minval=0) bband(length, mult) => sma(close, length) + mult * stdev(close, length) keltner(length, mult) => ema(close, length) + mult * ema(tr, length) // Variables e1 = (highest(high, length) + lowest(low, length)) / 2 + sma(close, length) osc = linreg(close - e1 / 2, length, 0) diff = bband(length, 2) - keltner(length, 1) osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff mid_color = diff >= 0 ? green : red // Strategy long = osc > 0 short = osc < 0 if long strategy.entry("Long", strategy.long) if short strategy.entry("Short", strategy.short) plot(osc, color=osc_color, style=histogram, linewidth=2) plot(0, color=mid_color, style=circles, linewidth=3)