
この戦略は,動量指標をベースに,移動平均と組み合わせて,市場トレンドを追跡する目的を達成する.価格上昇の勢いが大きいときに多めにし,価格下落の勢いが大きいときに空きをする,トレンドを追跡する戦略の類である.
価格の動量値momentumを計算する.公式は: ((現在の価格-N周期前の価格) /N周期前の価格)
価格の移動平均 mid を計算し,N 周期移動平均をパラメータとする.
動量値を標準化して処理する normalize を 0 - 1 の範囲にマッピングする
単一化された動量値が0.5以上で,価格が移動平均より高い場合は,追加します.
集約された動量値が0.5未満で,価格が移動平均より低い場合は空白します.
モバイル・ストップ・メカニズムを使用して,合理的なストップ・ポジションを設定する
以上は戦略の基本取引論理である。市場がトレンド状態であるとき,価格は連続して下落し,それにより大きな動量値を生成する。戦略は動量値の大きさに基づいてトレンドの強さを判断し,移動平均の方向と組み合わせて入札を決定する。さらに,ストップ・ロスの設定も非常に重要であり,リスクを効果的に制御することができる。
この戦略には以下の利点があります.
市場トレンドを追跡し,大きな収益の可能性
動量指標は価格の変化に敏感で,トレンドに迅速に対応します.
移動平均はランダムな波動を排除し,動量指標の組み合わせで有効です.
ストップ・ロスの戦略は,個々の取引の損失を制限します.
取引の論理はシンプルで明快で,実行し,反省しやすい.
周期や市場の状況に応じてパラメータを柔軟に調整できる
概して,これはトレンドマーケットに適した戦略であり,明確な方向性のある状況では,非常に強い収益性を発揮します.
この戦略は多くの利点があるものの,注意すべきいくつかのリスクがあります.
多頭行列では,突破して軌道に乗った後に再び落ちるリスクがあり,移動停止は秒殺される可能性があります.
空頭行情では,下落後の反発のリスクがあり,移動止損は,被套の可能性がある.
市場が移動平均の周りに振動すると,不必要な取引シグナルが繰り返し発生します.
パラメータが設定されていない場合,動量値と移動平均は誤った信号を発する可能性があります.
この戦略はトレンドに依存し,横断市場の波動で不振を呈している.
ストップレートと移動幅を厳格に制御し,ストップレートが小さすぎたり早すぎたりして突破されないようにする.
これらのリスクに対して,ストップ・ローズ戦略の最適化,不必要な信号のパラメータフィルタリングの緩和,パラメータの周期的な調整,ポジションの規模の制御などが必要である.
この戦略は,以下の点でさらに最適化できる:
異なるパラメータが反測結果に与える影響をテストし,最適なパラメータの組み合わせを選択できます.
海取引法に追加し,損失が2Nに達すると清算,利益が1Nに達すると清算
波動率指標を組み合わせて,市場波動率に応じてストップ幅を調整して,ストップポジションを最適化できます.
ポジション管理モジュールを追加し,撤回,時間などの要因に基づいてポジションのサイズを調整できます.
指数平滑移動平均の動量計算のような異なる動量計算方法を試すことができます.
シャンドルスティックグラフのフィルタリングに追加し,不適切な取引信号をフィルターします.
パラメータの最適化,特性の選択など,機械学習アルゴリズムを試すことができます.
戦略的決定を促すために,ある程度の人工経験を導入できます.
上記の方法によって,戦略の安定性,適応性およびSUFFIX性をさらに強化することが期待できます.しかし,任意の最適化は,過度な最適化を避けるために,厳格な統計的検証を必要とします.
動態追跡戦略は,シンプルで実用的なトレンド戦略である。市場トレンドを鋭く捉え,追いつくことで豊富な利益を得ることができる。しかし,反測曲線を過度に美化しないように注意し,リスクを厳しく管理し,戦略の安定性を維持する必要があります。パラメータ調整や機能拡張などの最適化により,戦略は,より多くの市場環境で安定した利益を得ることができます。
/*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)