移動平均線トレンドフォロー戦略
概要
移動平均線トレンドフォロー戦略は、単純移動平均線と高速移動平均線の組み合わせを利用して市場トレンドの方向を判断し、取引シグナルを生成します。価格が単純移動平均線と高速移動平均線を上抜けた場合はロング、下抜けた場合はショートのポジションを取ります。この戦略は動的にバックテストや最適化を行わずリアルタイムで取引シグナルを生成するため、トレンドの変化を捉えることができます。
戦略の原理
本戦略では、sma関数を用いて期間50の単純移動平均線smaを計算し、さらに高速移動平均線fsmaを計算します。fsmaはsmaにpriceのn期間標準偏差の6倍を加えたものです。
戦略では、2つのブール変数longとshortを用いてロングとショートの状態を記録します。価格がsmaとfsmaを上抜けた場合、longを1にしてロング、下抜けた場合はlongを-1にして決済します。short変数も同様のロジックでショート状態を処理します。
戦略ではtrend変数を用いてトレンドの判断を記録します。価格がfsmaとsmaより高い場合、trendは1(上昇トレンド)、低い場合は-1(下降トレンド)となります。
trendのリアルタイム判断に基づき、longとshortの取引シグナルを生成します。trendが下降から上昇に転じた際、価格がfsmaより高ければロング、trendが上昇から下降に転じた際、価格がsmaより低ければショートします。
本戦略はトレンド判断とブレイクアウト取引の手法を組み合わせることで、トレンド転換による取引機会を効果的に捉えることができます。
戦略の利点
- ダブルコンファメーションモデルを採用し、2本の移動平均線を同時にチェックすることで、偽のブレイクアウトを効果的にフィルタリングできます。
- トレンド判断とブレイクアウト取引を組み合わせることで、トレンド転換点での機会を捉えることができます。
- バックテストや最適化を行わず、すべての取引シグナルはリアルタイムで生成されるため、カーブフィッティングのリスクがありません。
- 戦略ロジックはシンプルで明確であり、理解や修正が容易です。
- パラメータは可視化設定が可能で、期間や倍率などを市場に合わせて調整できます。
戦略のリスク
- ダブル移動平均線戦略は、取引頻度が高くなったり、反転による損失が発生する可能性があります。
- 移動平均線自体にラグが存在するため、トレンド転換を見逃す可能性があります。
- ストップロスの仕組みがないため、1回の損失を制御できません。
- パラメータ設定が不適切だと、取引が過剰に頻繁になったり、逆に遅延が生じる可能性があります。
- リスク1および2に対しては、移動平均線の期間を適度に延長し、ドローダウン時のストップロスを追加することで対策できます。
- リスク3に対しては、パーセンテージストップロスや指値注文によるストップロスを設定できます。
- リスク4に対しては、市場に応じてパラメータを調整し、固定パラメータに依存しないようにすべきです。
戦略の最適化方向
- トレンドフィルター条件を追加し、MACDやDMIなどの指標でトレンドを確認します。
- KDJやRSIなどのオシレーター系指標を用いて、買われすぎ・売られすぎを組み合わせたエントリーを行います。
- トレーリングストップやパーセンテージストップロスなど、全体的なストップロスメカニズムを追加します。
- ポジション管理モジュールを追加し、ポジションサイズを動的に調整します。
- パラメータ設定を最適化し、異なる相場サイクルにより効果的に適応できるようにします。
- 機械学習モジュールを追加し、AI技術を利用してパラメータを自動最適化します。
- 複合戦略を構築し、他の指標を利用して偽のブレイクアウトを防止します。
- ディープラーニング技術を活用して、より複雑なトレンドパターンを認識します。
まとめ
移動平均線トレンドフォロー戦略は、全体的に比較的シンプルなトレンドフォロー戦略です。高速と低速の移動平均線の組み合わせを利用してトレンド方向を判断し、トレンド転換点でポジションを入れ替えることで、価格トレンドの転換を効果的に捉えることができます。しかし、取引頻度の高さやラグといったリスクも存在します。今後の最適化方向としては、トレンドフィルターの追加、ストップロスモジュールの導入、パラメータの動的調整などが挙げられます。全体的に、本戦略はトレンドフォロー入門戦略として十分に適用可能ですが、実際の運用では対象市場に合わせた最適化と調整を行わなければ、真の効果を発揮することはできません。
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true)
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)- 1

