マルチタイムフレームMAモンドリアンクロス戦略
本戦略は主にマルチタイムフレーム(MTF)のMAラインクロスを用いてトレンド方向を判断し、特定条件でのフィルタリングを組み合わせ、トレンド方向が明確な場合に買いまたは売りを行うトレンド追随型戦略です。
戦略の原理
-
ユーザーがカスタマイズしたバックテスト期間を入力します。
-
陽線・陰線を合成したヘイキンアシ(Heikin-Ashi)ローソク足を使用するかどうかを入力します(デフォルトは使用)。
-
それぞれスローMAライン、ファストMAライン、およびオプションで第3のMAライン(上昇トレンド時に使用)を定義します。
-
各MAラインについてMAタイプ、時間枠、パラメータなどをカスタマイズ可能です。
-
ファストMAがスローMAを上抜けると買いシグナル、下抜けると売りシグナルを生成します。
-
オプションで第3のMAラインをロング方向のフィルターとして使用し、終値が第3MAを超えた場合のみ買いシグナルを生成します。
-
strategy.entryモジュールを使用して自動売買を実行します。
-
1ロットあたりの取引数量をカスタマイズするか、固定数量を使用できます。
戦略のメリット
-
MTF構造を採用し、異なるMAラインに異なる時間枠を設定することで、複数時間スケールのトレンド特性を識別します。
-
MAタイプをカスタマイズ可能で、スムーズなMAを選択して安定性を高めたり、反応の速いMAを選択したりできます。
-
ヘイキンアシと組み合わせることで偽のブレイクアウトをフィルタリングできます。
-
第3のMAラインをロング方向のフィルターとして追加することで、レンジ相場での取引を回避できます。
-
MAの期間パラメータを柔軟に調整でき、様々な市場環境に適応します。
-
strategy.entryモジュールにより自動注文が可能で、手動介入の必要がありません。
-
バックテストによるパラメータ最適化をサポートし、最適なパラメータ組み合わせを探索できます。
戦略のリスク
-
MAクロス戦略はフェイクシグナルに敏感で、不要な取引が発生する可能性があります。MA期間を調整したり、フィルター条件を追加することでリスクを低減できます。
-
レンジ相場ではMAラインのクロスが頻発し、損失が発生しやすくなります。MAの間隔を広げたり、MA期間を延ばしたりすることでリスクを低減できます。
-
固定取引数量ではリスク管理ができないため、口座資金のパーセンテージに基づいて取引数量を設定することを検討できます。
-
取引手数料やスリッページも戦略の収益性に影響を与えます。勝率が十分高くなるようにパラメータを調整する必要があります。
最適化の方向性
-
異なるMAタイプをテストし、最適なパラメータ組み合わせを探します。スムーズMAは安定性を高め、ファストMAは敏捷性を向上させます。
-
MAのパラメータを最適化し、期間を適度に長くするとトレンド識別が容易になり、短くすると感度が向上します。最適なバランスを見つけます。
-
エントリー条件を最適化し、ロングフィルターを強化してレンジ相場でのエントリーを避けることを検討します。
-
特定の銘柄に合わせてMA期間パラメータを最適化し、その銘柄の取引環境に最も適したパラメータを見つけます。
-
他のインジケーター(例:出来高エネルギー指標など)をフィルターとして組み合わせ、戦略の安定性を高めることを検討します。
-
バックテストデータに基づいてパラメータの組み合わせを最適化し、戦略の効果を最大化する最適なパラメータを探索します。
まとめ
マルチタイムフレームMAクロス戦略は、全体的によく見られるトレンド追随型戦略です。その利点は、実装が簡単でパラメータ調整が柔軟であり、様々な市場環境に適応できることです。ただし、フェイクシグナルのリスクも一定存在します。パラメータ最適化や補助フィルター条件の追加により改善でき、バックテストで最適なパラメータ組み合わせを探すことが重要です。本戦略はトレンドが明確な市場に適しており、レンジ相場では慎重に使用するか取引を停止すべきです。総じて、伝統的なトレンド追随型戦略の一つとして、マルチタイムフレームMAクロス戦略は引き続き研究と応用に値します。
/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle="MZ MA Cross",title="MA MTF Cross Strategy", overlay=true, calc_on_order_fills=false, calc_on_every_tick=false, default_qty_type=strategy.fixed, default_qty_value=5,commission_value=0.1)
timeFrameticker = input('D',type=input.resolution, title="Chart Timeframe")- 1

