ZigZag指標に基づくトレンドフォロー取引戦略
概要
本記事で紹介する取引戦略は「ZigZagインジケーターを用いたトレンドフォロー戦略」(ZigZag Trend Following Strategy)です。この戦略はZigZagインジケーターで価格トレンドを識別し、トレンド反転時にポジションを開いてトレンドを追跡します。Strategy Pineコードでは、ZigZagインジケーターで価格の新高値・新安値を確認し、価格がZigZagラインを突破した時点を取引シグナルとします。買いシグナルは終値がZigZagラインより高い場合にロング、売りシグナルは終値がZigZagラインより低い場合にショートです。これにより中長期的な価格トレンドを効果的に追跡できます。
戦略の仕組み
この戦略の核心は、ZigZagインジケーターで価格の極値点を特定し、価格トレンドを示すことです。ZigZagインジケーターは高値・安値の指数移動平均線(EMA)で構成されます。具体的には以下の手順で構築します。
-
終値の指数移動平均線EMAを計算し、3本の移動平均線(速い線、中間の線、遅い線)を作成します。
-
価格が上昇トレンドかどうかを判断します。つまり、現在の中間線が前のローソク足の中間線より高いかどうかを確認します。
-
上昇トレンドの場合、前回の安値から数えた検出期間内の最安値をZigZagの値とします。
-
下降トレンドの場合、前回の高値から数えた検出期間内の最高値をZigZagの値とします。
-
このようにして、価格変動の極値点を反映したZigZagインジケーターが形成されます。
これをもとに、ZigZagラインを参考にして価格トレンドを判断します。つまり、価格上昇時にZigZagラインを上抜けた場合はロング、価格下落時にZigZagラインを下抜けた場合はショートとします。
優位性分析
ZigZagインジケーターで価格トレンドを判断し、価格の極値点を追跡してポジションを建てる優位性は以下の通りです。
-
市場のノイズを効果的にフィルタリングし、主要トレンドを捉えられます。
-
価格の新高値・新安値のブレイクに基づく取引シグナルにより、効率的に利益を上げられます。
-
ZigZagラインは滑らかで、偽シグナルを減少させられます。
-
ZigZagパラメーターの調整により、戦略の最適化が容易です。
リスク分析
本戦略の主なリスクは以下の通りです。
-
長期運用では相場の急変動によりポジションが塩漬けになる可能性があります。その場合は適切に損切りする必要があります。
-
ZigZagインジケーターはパラメーターに敏感です。不適切な設定では取引機会を逃したり、偽シグナルが発生する可能性があります。適切なテストとパラメーター最適化が必要です。
-
トレンドフォロー戦略はトレンド相場に依存します。レンジ相場(揉み合い)では効果が薄くなります。
上記リスクに対しては、損切りメカニズムを設定して1回の損失を抑え、ポジションサイズを調整してフルポジションを避け、さらに異なるタイプの戦略と組み合わせて使用することで対応します。
最適化の方向性
本戦略は以下の点からさらに最適化が可能です。
-
損切りメカニズムの追加。例えば、トレーリングストップや価格の逆行幅に基づく損切りなど。
-
他のインジケーターと組み合わせてエントリーをフィルタリングする。例えば、勢いを確認するための強化型エネルギーインジケーターや、出来高の増加を確認するための出来高インジケーターなど。
-
異なる市場環境(強気相場・弱気相場など)に応じて異なるパラメーター設定を採用する。
-
異なるEMA期間パラメーターをテストし、最適なパラメーター組み合わせを探す。
まとめ
本戦略はZigZagインジケーターで価格トレンドを判断し、極値点付近でトレンドフォローのポジションを構築します。その利点はトレンドに乗って効率的に利益を得られることですが、同時に塩漬けリスクもあります。損切り設定やパラメーター最適化、戦略の組み合わせによりリスクを管理できます。本戦略は中長期のトレンド取引に適しています。適切に制御・組み合わせを行えば、安定した収益を得られます。
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings- 1

