# スーパートレンド指標と純資産曲線に基づく取引の定量戦略
概要
本戦略の核心的な考え方は、スーパートレンド指標と純資産曲線トレードを組み合わせることです。スーパートレンド指標が買いまたは売りのシグナルを出した場合、直接取引を実行するのではなく、現在の純資産曲線がその移動平均線よりも低いかどうかを判断します。純資産曲線が移動平均線よりも高い場合にのみ、ポジションをオープンします。純資産曲線が移動平均線よりも低い場合、現在の戦略の取引を一時停止します。これにより、損失の拡大を効果的に防ぐことができます。
戦略の原理
本戦略は主に以下の2つの部分から構成されます:
- スーパートレンド指標
- 純資産曲線トレード
スーパートレンド指標の計算式は以下の通りです:
上限バンド = ソース価格 - ATR乗数 * ATR
下限バンド = ソース価格 + ATR乗数 * ATR
ここで、ATRは平均真のレンジを表します。スーパートレンド指標はATRを用いて上下のバンドを設定し、価格が上限バンドを突破した場合は売りシグナル、下限バンドを突破した場合は買いシグナルとなります。
純資産曲線トレードの考え方は、戦略の純資産曲線に対して移動平均を計算し、純資産曲線が移動平均線よりも低い場合、現在の戦略の取引を一時停止し、純資産曲線が移動平均線を上回って回復するのを待ってから取引を再開するというものです。
本戦略ではこれらを組み合わせ、スーパートレンド指標が取引シグナルを生成した後、直接取引を行わず、現在の純資産曲線が移動平均線よりも高いかどうかを判断します。両方の条件が同時に満たされた場合のみ、ポジションをオープンします。これにより、スーパートレンド指標自体のリスクを効果的に回避し、過大な損失を防ぐことができます。
優位性分析
本戦略の主な優位性は次の通りです:
-
スーパートレンド指標のリスクを効果的に防止できます。スーパートレンド指標自体では損失を効果的に回避できませんが、純資産曲線トレードがこの欠点を補います。
-
取引が不利な場合、戦略の取引を一時停止し、過大な損失を回避できます。相場が好転した場合に再開できます。
-
ポジションを自動管理でき、人手による介入が不要です。純資産曲線が移動平均線よりも低い場合は自動的に一時停止し、高い場合は自動的に再開します。
リスク分析
本戦略には以下のような一定のリスクも存在します:
-
パラメータの設定を誤ると、純資産曲線トレードの効果を十分に発揮できない可能性があります。適切な移動平均線の期間を選択する必要があります。
-
相場のトレンドが変化した場合、タイムリーにポジションを調整できない可能性があります。これにより一定の損失が生じることがあります。
-
純資産曲線の回復を待つ必要があるため、好機のエントリータイミングを逃す可能性があります。
対策:
-
パラメータを最適化し、最適な移動平均線の期間を選択します。
-
他の指標と組み合わせてトレンドを判断し、タイムリーにポジションを調整します。
-
取引の一時停止時間を適切に短縮し、エントリー機会を逃す確率を低減します。
最適化の方向性
本戦略は以下の複数の側面から最適化できます:
-
異なるパラメータの組み合わせをテストし、最適なATR期間とATR乗数を見つけます。
-
指数移動平均線やハル移動平均線など、他の種類の移動平均線を試します。
-
相場のトレンドを判断するための他の指標を追加し、トレンドが変化した際にタイムリーにポジションを調整します。
-
移動平均線の期間を最適化し、最適なバランスポイントを見つけます。期間が長すぎると機会を逃し、短すぎると頻繁に一時停止が発生します。
-
取引一時停止の条件を最適化します。例えば、ストップロスラインを設定し、損失が一定のレベルに達した場合のみ一時停止するようにします。
まとめ
本戦略は、スーパートレンド指標と純資産曲線トレードを巧みに組み合わせています。スーパートレンド指標のトレンド判断の利点を保持しつつ、純資産曲線トレードによってリスクを効果的にコントロールしています。テスト結果によると、ほとんどのケースで純資産曲線トレードを適用すると利益水準が低下することが示されています。そのため、本戦略は防御的なトレーダーにより適しています。パラメータの最適化やルールの最適化により、本戦略は非常に実用的な定量取引戦略となり得ます。
/*backtest
start: 2023-01-14 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Supertrend & Equity curve with EMA', overlay=false, format=format.price, precision=2, initial_capital=100000)
eqlen = input.int(25, "EQ EMA len", group = "New Equity Curve Settings")- 1

