ダブルEMAスパン取引戦略
概要
デュアルEMAスパン取引戦略は、トレンドフォロー戦略の一種であり、異なる期間の2つのEMAのスパン比率を計算することで、相場のトレンドを判断し取引を行います。この戦略は比較的シンプルで直接的であり、中長期のトレンドを効果的に追跡できるため、中長期トレンドトレーダーに非常に向いています。
戦略の原理
この戦略は、主に2つのEMAの数値の大小とそれらの間のスパンに基づいてトレンドの方向性を決定します。まず短期EMAと長期EMAを計算します(典型的な設定は13期間と26期間のEMA)。次に、2つのEMA間のスパン率を計算します。短期EMAが長期EMAを上回り、かつスパンが設定された閾値(例:5%)を超える場合は、上昇トレンドと判断してロング取引を行います。短期EMAが長期EMAを下回り、かつスパンが設定された閾値を超える場合は、下降トレンドと判断してショート取引を行います。価格が再び短期EMAを下回るか上回った時点でポジションを決済します。
この戦略の核となるロジックは次のとおりです:
- 短期EMAと長期EMAを計算する
- 短期EMAが長期EMAより高いか低いかを判断する
- 2つのEMA間のスパン率が設定された閾値を超えているか計算する
- トレンド方向に応じてロングまたはショートの判断を行う
- 価格が再び短期EMAを割り込むか突破した時点で決済する
この設計により、中長期トレンドを効果的に追跡し、トレンドが変化した際に速やかに方向転換できます。また、スパン閾値の設定により、重要でない期間の調整による不要な取引を回避することもできます。
戦略の利点
- シンプルで効果的、中長期トレンド追跡に非常に適している
- EMAを使用することで短期的な市場ノイズを除去しやすい
- 設定可能なEMA期間とスパン閾値により、適応性が高い
- スパン計算により、トレンドが明確な場合のみ取引を行うことを保証
- 短期EMAブレイクによるストップロスと組み合わせることでリスクをコントロール可能
戦略のリスクと対策
- トレンド反転前にポジションを手放せず、大きなドローダウンを受ける可能性がある
- ボックス相場での値動きに巻き込まれやすい
- 銘柄に応じてEMA期間とスパン閾値を適切に設定する必要がある
以下の方法でリスクを軽減できます:
- 他の指標と組み合わせてトレンド反転シグナルを判断し、早期に決済する
- トレンドフィルター条件を追加し、ボックス相場での取引を回避する
- パラメータ設定を最適化し、特定の銘柄に適したEMA期間とスパン閾値を選択する
戦略の改善方向
この戦略は以下の点から改善可能です:
-
パラメータ最適化:バックテストによりEMA期間パラメータとスパン閾値を最適化し、最適なパラメータ組み合わせを探す
-
トレンドフィルター:MACD、ボリンジャーバンドなどトレンドを判断する他の指標を追加し、ボックス相場でのロスを回避する
-
ストップロス戦略:トレーリングストップやタイムストップを導入し、一取引あたりの損失を抑制する
-
利確戦略:一部利益確定後にトレーリング利確ポイントを設定し、利益を確定する
-
定量的最適化:機械学習などの手法を用いてパラメータやフィルター条件を自動最適化し、戦略の定量的改善を図る
-
組み合わせ最適化:この戦略を他の無相関戦略と組み合わせ、ドローダウンを低減し安定性を高める
パラメータ、フィルター条件、ストップロス、利確など多方面での最適化により、この戦略をより安定させ、より多くの市場状況に適応させ、より科学的かつ効果的にすることができます。定量的および組み合わせによる最適化は、戦略の効果を大幅に向上させることも可能です。
まとめ
デュアルEMAスパン戦略は、トレンド追跡に適したシンプルで直接的な戦略です。2つのEMAのみでトレンド方向を判断できるため、中長期のポジション保有に非常に適しています。また、パラメータ最適化、トレンドフィルター、ストップロス戦略など様々な方法で改善でき、戦略をより安定・信頼性の高いものにできます。実行が容易で定量的な最適化も行いやすいため、推奨できるトレンドフォロー戦略です。
/*backtest
start: 2023-08-19 00:00:00
end: 2023-08-23 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("2-EMA Strategy", overlay=true, initial_capital=100, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)
diffMinimum = input(0.95, step=0.01)- 1
