ROCを使ってトレードしてみようと思い立ち、その基本的な使い方をざっと調べてみましたが、結局消化不良に終わったというか、少なくとも以下の課題が放置されたままなのだという印象を受けました。
- パラメータである期間はいくらが妥当なのかがよくわからない
- 相場の過熱感を示す閾値の指標がない
おそらく皆様が当サイトにたどり着いた理由も、こういった課題意識が背景にあるのではないでしょうか。
また、仮に設定値や閾値に何らかの指標が示されたとしても、それがトレード成績の安定化に寄与する指標なのかということも重ねて確認せねばなりません。
そこで本記事では、ROCの設定値や閾値をいろいろ変えてバックテストを実施し、その結果を比較することでROCの最適な使い方とその時の勝率を示してみたいと思います。
- ROCを使ったトレードの勝率
- ROCの最適設定値
- ROCの最適閾値
問題提起
まず、ROCの基本情報と本記事が指摘するROCの課題を述べたいと思います。
基本情報
そもそもROC(Rate Of Change)とは相場の過熱感を表すインジケータで、以下の数式で算出されます。
ROC=100×(直近ローソク足の終値-N本前ローソク足の終値)÷N本前ローソク足の終値
数式を見ると、設定値となるパラメータはNのみであることがわかります。
下図がROCのイメージです。白い横点線がROC=0を表します。ROCはその名の通り「割合」を表すため、全体的に上昇相場ではあるものの、一時的に横這いとなっている時は0に回帰します。

エントリーのタイミングとしては0を跨いだ時に行うのが一般的のようです。上に超えた時に買いエントリーし、下に超えた時に売りエントリーします。
また、元々は相場の過熱感を表す指標であるため、大きくなりすぎれば0跨ぎを待たずに買いポジションを手仕舞いしたり、売りエントリーしたりするそうです。
ROCの課題
基本情報は上記の通りですが、実際にROCを使ってみることを考えると、以下の課題に対処していく必要があると思われます。
設定値はいくらが妥当なのかの基準がない
例えばMACDの場合、短期EMA=12、長期EMA=26、シグナル=9の組み合わせが基準としてよく知られています。またRSIの場合は期間=14がよく使われます。
一方のROCではこのような基準がありません。全く統一感のない設定値を各自推奨している状況かと思います。これではどのように使っていいのか見当もつきません。
相場の過熱感を示す閾値の基準がない
RSIの場合は70から80ぐらいが買われ過ぎを表すとよく言われます。RCIの場合は80%から90%がそうです。
ではROCの場合はどうでしょうか。これも調べてみるとわかることですが、基準となるものが何もありません。裁量であれば目視で大体を決めることが可能かも知れませんが、それが有効である保証もどこにもありません。
0跨ぎの時のみエントリーするのであれば閾値の設定は不要でしょうが、逆張りトレードに利用するのであれば妥当な閾値を明確にしておく必要があると思われます。
これら課題を解決するため、どういった検証をしていくのかを次章で説明していきたいと思います。
検証条件
以下に示すように、設定値である期間を4パターン、相場の過熱感を示す閾値を3パターン、時間足を3パターン用意し、それぞれの組み合わせ別のバックテストを行うことで、その傾向を見ていきたいと思います。
設定値のパターン
検索エンジンで「ROC」と検索し、上位20サイトほどで推奨されていた設定値を試してみようと思います。それは10、12、20、25の4パターンです。
検索するタイミング次第では上記のパターンが見られないかも知れませんが、その時は近い値の結果を参考にしていただければと思います。
閾値のパターン
具体的な数値で閾値のパターンを網羅したいところですが、時間足によってその特徴的なスケールは異なります。今回はこの違いを吸収すべく、以下三つのパターンで検証を行うことにしたいと思います。
- 閾値なし
- 過去200本のローソク足に対するROCに関して、その絶対値の最大値×0.8を閾値とする
- 過去200本のローソク足に対するROCに関して、その絶対値の最大値を閾値とする
まず1に関してですが、これはそもそも閾値など不要で、0跨ぎのときのみエントリーするのが良かったという可能性を探るためのものになります。
次に2における閾値のイメージを下図に示します。左下の白丸が絶対値が最大値となった時刻で、この値を8掛けしたものが緑線の閾値です。3の場合は8掛けせず、最大値をそのまま閾値とします。

なぜ200本なのかというと、一般的なPCモニターで画面いっぱいに表示した場合に大体200本となるからです(ちなみに上図は小さめで約150本)。
1と3の場合は裁量トレードでもほぼ厳密に再現可能かと思います。2の場合であっても厳密に0.8倍する必要はなく、目視で近い値を判断すれば似たような結果が得られると思われます。
時間足のパターン
今回は15分足、1時間足、4時間足の3パターンを用意します。15分足がスキャルピング、1時間足がデイトレード、4時間足がスイングトレードをそれぞれ意識したものになります。
検証結果
それでは実際に結果を見てみたいと思います。バックテストは以下の条件にて行いました。
通貨ペア | USD/JPY |
スプレッド | 0.3pips(0.3銭) |
検証期間 | 2013/1/1 ~ 2021/12/31 |
ポジション | 0.1Lot(10000通貨) |
資産 | 100万円 |
15分足
括弧の左の数字はプロフィットファクタです。そのため1より大きければ期待値はプラスで、1未満であれば期待値はマイナスです。括弧の中の数字は取引回数です。
閾値なし | 閾値0.8 | 閾値1.0 | |
期間10 | 0.92(25974) | 0.92(26070) | 0.92(25847) |
期間12 | 0.90(19054) | 0.91(20015) | 0.90(19388) |
期間20 | 0.91(19831) | 0.91(19370) | 0.90(17230) |
期間25 | 0.94(19028) | 0.90(17278) | 0.89(14472) |
文字色が青色の箇所があります(ほとんどそうですが)。これは予算が枯渇したことを意味します。つまり9年間のバックテストを実施したところ、初期費用の100万円がなくなったということです。
唯一予算の枯渇を防げたのが期間25・閾値なしの組み合わせですが、それでもプロフィットファクタは0.94と低いため、基本的にROCは15分足などでのスキャルピングと合わないということかと思います。
参考程度ですが、表の左上の期間10・閾値なしのバックテストの詳細を示します。綺麗な右肩下がりで、途中予算の100万円が0となりました。

1時間足
表の見方は15分足と同様です。
閾値なし | 閾値0.8 | 閾値1.0 | |
期間10 | 1.05(7707) | 0.99(7707) | 1.01(7707) |
期間12 | 1.01(6990) | 0.97(6990) | 0.98(6990) |
期間20 | 1.05(5288) | 1.02(5288) | 1.04(5288) |
期間25 | 1.07(4552) | 1.08(4552) | 1.08(4552) |
期間25は例外ではありますが、基本的に閾値は設けない方がプロフィットファクタは高くなる傾向にあります。つまりROCが0を跨いだ時のみエントリーするのが良く、逆張りは逆効果ということかと思います。
また期間は概ね長い方が良く、25がベストということが読み取れます。
4時間足
こちらも表の見方は15分足と同様です。
閾値なし | 閾値0.8 | 閾値1.0 | |
期間10 | 1.10(1868) | 0.96(1868) | 1.01(1868) |
期間12 | 1.22(1662) | 1.06(1662) | 1.06(1662) |
期間20 | 1.04(1304) | 0.95(1304) | 0.92(1304) |
期間25 | 1.04(1162) | 0.97(1162) | 0.94(1162) |
1時間足と同様に、閾値を設けない方がプロフィットファクタは高くなることがわかります。また、期間に関しては特に傾向は見受けられませんが、強いて言えば12が良さそうです。
期間12・閾値なしだけズバ抜けてプロフィットファクタが高いです。そのバックテストの詳細は以下に載せておきます。たまたまかも知れませんので、使用には注意が必要と思われます。

まとめ
本記事では、ROCの有効性と最適な使い方をバックテストを用いて検証しました。以下に結論となる重要なポイントを示します。
- 15分足などでのスキャルピングとは合わない(バックテストでは概ね破産した)
- 1時間足で使う場合は、0跨ぎの時のみエントリーし、期間を25に設定するのが良い
- 4時間足で使う場合は、0跨ぎの時のみエントリーし、期間を12に設定するのが良い
以上、最後まで読んでいただきありがとうございました。