ダブル移動平均線逆張り戦略
概要
本戦略は、二重移動平均線のゴールデンクロス・デッドクロスの原理に基づいて設計されています。短期移動平均線が長期移動平均線を上抜けた際に買いポジションを建て、短期移動平均線が長期移動平均線を下抜けた際にポジションをクローズします。本戦略はシンプルで分かりやすく、初心者の学習に適しています。
戦略の原理
本戦略は主に、sma(close, 14) と sma(close, 28) という二つの移動平均線インジケーターに基づいています。
まず、長期および短期の移動平均線を定義します。
pine
short_ma = sma(close, 14)
long_ma = sma(close, 28)
次に、ゴールデンクロス・デッドクロスに基づいてエントリーとエグジットを判断します。
pine
longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma)
短期移動平均線が長期移動平均線を上抜けた時に買いポジションを建てます。
pine
strategy.entry("Buy", strategy.long, when = longCondition)
短期移動平均線が長期移動平均線を下抜けた時にポジションをクローズします。
pine
strategy.close_all(when = shortCondition)
本戦略の原理はシンプル明快で、二重移動平均線のゴールデンクロス・デッドクロスを利用して判断を行い、一定のトレンド追随能力を有しています。
優位性分析
- 戦略原理がシンプルで分かりやすく、初心者でも簡単に使用できる
- 移動平均線のゴールデンクロス・デッドクロスでトレンドを判断し、一定のトレンド追随能力がある
- 移動平均線の期間をカスタマイズでき、戦略パラメータの最適化が可能
- ストップロスを設定し、1回の損失をコントロールできる
リスク分析
- 二重移動平均線戦略は市場の値動きに敏感で、複数の損失トレードが発生する可能性がある
- 移動平均線は遅行性を持ち、価格の反転点を見逃す可能性がある
- 移動平均線のクロス近辺でポジションを建てると、手仕舞いできなくなる可能性がある(嵌まるリスク)
- 移動平均線の期間パラメータの最適化が必要で、期間が異なると効果に違いが出る可能性がある
- トレンドが急激に変化した際に迅速に損切りできない
最適化の方向性
本戦略は以下の点から最適化が可能です。
- 移動平均線の期間パラメータを最適化し、最適なパラメータの組み合わせを探す
異なる短期・長期移動平均線の期間を試し、最適な組み合わせを探します。例えば、(5, 10)、(10, 20)、(20, 60) などのパラメータで比較テストを行います。
- フィルタリング条件を追加し、偽のシグナルを回避する
移動平均線のクロス時に出来高や価格差などのフィルタリング条件を追加し、相場がレンジの際に過剰なトレードが発生するのを防ぎます。
- ストップロス戦略を追加する
ストップロスポイントを設定するか、移動平均線をストップロスラインとして使用し、1回の損失をコントロールします。
- 他の指標と組み合わせる
MACD、KDJなどの補助指標を追加して組み合わせることで、戦略の効果を高めます。
- エントリーポイントを最適化する
移動平均線付近でより良いエントリーポイントを探します。例えば、移動平均線が逆行するポイントでエントリーするなどです。
まとめ
二重移動平均線戦略はコンセプトがシンプルで、初心者でも簡単に使い始めることができます。しかし、本戦略は市場の値動きに敏感であり、一定の損失リスクが存在します。パラメータの最適化、フィルタリング条件の追加、ストップロスの設定、他の指標の追加などを通じて、戦略の効果を高めることができます。力強いトレンドの中では、本戦略は良好な結果を得ることができます。しかし、市場がレンジ相場の時期には、注意して使用するか、リスクをコントロールするために損切りを設定することをお勧めします。
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)
minGainPercent = input(0.6)- 1
