この戦略は,市場動向を追跡するために動向指標と移動平均を組み合わせて動向指数に基づいています.強烈な上向きの動向がある場合,長くなって,強烈な下向きの動向がある場合,短くなってしまいます.それは傾向を追跡する戦略のカテゴリーに属します.
価格の勢いを計算すると: (現在の価格 - N 期前の価格) / N 期前の価格
N 期間の価格の中間移動平均を計算する
0-1 の範囲にモメント値を正規化
価格が移動平均以上になると,ロング
価格が移動平均を下回ると,ショートに行く
適切なストップ損失レベルを持つ移動ストップ損失メカニズムを使用する
上記は,基本的な取引論理をカバーしている.市場がトレンドしているとき,価格は1つの方向に持続的に動いて,大きなモメンタム値を生成する.戦略は,モメンタムを使用してトレンドの強さを判断し,エントリーを決定するために移動平均を使用する方向性を判断する.また,ストップロスはリスクを制御するために重要です.
この戦略には以下の利点があります.
市場動向を追跡し,潜在的に大きな利益を得る
モメントムは価格変動に敏感で,トレンドに迅速に対応します
移動平均値はランダムなノイズをフィルタリングし,モメントとうまく組み合わせます
ストップ損失メカニズムは,個々の取引における損失を制限する.
シンプルで明快な論理,実行しバックテストが簡単
柔軟なパラメータは,異なる期間や市場体制に適応できる
市場を動かすための素晴らしい戦略です. 方向性的なトレンドから大きな利益を得ることができます.
利点はありますが,いくつかのリスクは注意する必要があります.
価格がブレイク後に逆転した場合の上昇傾向におけるブレイクリスク
ダウントレンドの逆転リスク
Whipsaw は,価格が移動平均値の周りに振動するときの信号です.
パラメータが正しく設定されていない場合,誤った信号
範囲内での不安定な市場での低業績
早期出口を防ぐために厳格なストップ損失と動きが必要です
これらのリスクに対処するために,ストップ・ロスの戦略は最適化され,不要な信号を緩いパラメータでフィルターし,異なる期間のためのパラメータを調整し,ポジションサイズを制御する必要があります.
戦略をさらに最適化できる方法は以下の通りです.
ベストバックテスト結果のために異なるパラメータの組み合わせをテストする
2N 損失と 1N 利益で終了するタートル取引規則を組み込む
ストップ・ロスを最適化するために,変動指標を用い,ストップ・ロスを適応させる
引き上げ,時間,などに基づいて位置サイズルールを追加
指数関数移動平均運動量などの異なる運動量計算方法をテスト
より強力な信号のためにキャンドルスタイクパターンフィルターを追加
パラメータ最適化,機能選択などに機械学習を利用する
主要なポイントに 裁量的な人間のインプットを組み込む
これらの改良により,戦略はより安定性,適応性,収益性を達成することができる.しかし,あらゆる最適化には過度に適合しないために厳格な統計的検証が必要である.
モメントトラッキング戦略は,シンプルで実践的なトレンドフォローアプローチである.それは市場のトレンドを迅速に把握し,バブルやクラッシュから利益を得ることができる.しかし,堅牢性を維持するために規律的なリスク制御でカーブフィッティングリスクを管理する必要があります.パラメータチューニングと機能拡張により,戦略はより多くの市場体制で安定した利益をもたらすことができます.
/*backtest start: 2023-11-02 00:00:00 end: 2023-11-09 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Momentum Strategy, rev.2", overlay=true) // // Data // src = input(close) lookback = input(20) cscheme=input(1, title="Bar color scheme", options=[1,2]) // // Functions // momentum(ts, p) => (ts - ts[p]) / ts[p] normalize(src, len) => hi = highest(src, len) lo = lowest(src, len) res = (src - lo)/(hi - lo) // // Main // price = close mid = sma(src, lookback) mom = normalize(momentum(price, lookback),100) // // Bar Colors // clr1 = cscheme==1?black: red clr2 = cscheme==1?white: green barcolor(close < open ? clr1 : clr2) // // Strategy // if (mom > .5 and price > mid ) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (mom < .5 and price < mid ) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)