こんにちは、トレーダーの皆さん!今日は、iSpreadというインジケーターを使って、ペアトレーディングをさらに効率的に行う方法をご紹介します。このインジケーターを利用すると、選択した2つのペアを基に合成シンボルを作成することができます。さっそく見ていきましょう!
このインジケーターのアルゴリズムは以下の通りです:

- 開始日 - 合成シンボルを構築するための開始日を選択します。古い履歴データを無駄に使用しないために必要です。
- シンボル 1/2 - 2つの初期ペアを選択します。

- アクション - 2つの系列を1つに統合するための算術演算を選択します。利用可能な演算は4つあります:- + / * 私は差分と比率を使っています。合計や積も必要かもしれませんが、私はこれまで使ったことがありません。どなたか、どのように使うか教えていただければ嬉しいです。
- シンボル反転 1/2 - 相関が負の場合、選択した系列を反転します。
- シンボル指数 1/2 - 選択した系列の指数化。必要なのは分かっていますが、正直なところ、このオプションを使う理由がよくわかりません。両方の系列の次元を均等にするためにこのオプションが使われるかもしれませんが、私は掛け算を使っています。このアプローチの利点は何でしょうか?
- シンボル乗数 1/2 - 系列を特定の数で掛け算します。私は系列の次元を均等にするためにこれを使用します。
- 対数 - 結果の系列を対数スケールに変換します。対数を使用する場合、私は2つの元の系列の差を使って最終系列を準備します。もし対数を使わない場合は、アクションとして比率を選択します。一般的に、このスケールに変換することで二次トレンドの影響を避けることができます。ただ、短いセグメントでは違いを感じないので、比率のアクションを選ぶことが多いです。間違っていたらコメントいただけると嬉しいです。
- スムージング期間 - すべてのアクションが完了した後、2つの系列を1つに統合する前に、結果データの軽いスムージングを行うことがあります。私は指定した期間の単純移動平均(MA)を使ってこの系列をスムージングします。ほとんど歪みは発生しませんが、一部のスパイクをカットすることができます。このパラメータに0を指定すると、スムージングを使用しないことを選択できます。トレンドを除去するために短い期間を使用する場合は、スムージングをすることはありません。スムージングは大きな値に適用されてもデータ損失を引き起こさず、最終系列を滑らかにし、ノイズを減らします。
これでデータの準備が整い、合成シンボルを作成する準備ができました。これからの流れを見ていきましょう!
まずはEURUSDを取得しました:

次にGBPUSDを取得しました:

これが合成シンボルです:

最後のステップは、エントリーポイントを見つけるための必要な偏差を決定することです:

- アルゴリズムの選択 - 簡単なMAまたは一次差分を使用してトレンドを除去します。結果の系列からトレンドを除去する方法を2つ知っています(私は2つ目の方法を好みます)。最初の方法は、結果の系列から必要な期間のMAを引くことです。この期間は投資のホライズンに基づいて選択されます。MAは単純なアルゴリズムに基づいています。指数的なMAを使う意味があるのかまだ不明で、コメントいただけると嬉しいです。2つ目の方法は、まず各ペアの一次差分を取り、その後結果の差分を取る方法です。どちらの方法も、強い動きがない時には結果が似ていますが、強い動きがある場合、最初の方法は合成結果をより迅速に0に戻すため、しばしば誤った指示になります。一次差分についての注意点として、Close[1]-Close[2]の代わりにClose[1]/Close[2]、つまり「一次比率」を使用していますが、この用語を見たことがありません。
- アルゴリズムの期間 - ラグ、オフセット。0に設定すると、合成シンボルは修正されません。
- レベルの表示 - 偏差レベルを表示または非表示にします。市場に入るための決定を示すために、赤、黄、緑の3つのレベルを使用しています。
- レベル計算方法 - このレベルを決定する方法を3つ知っています。方法1(オフセット付きの0..1の正規化) - トレンドを除去した合成シンボルを単位範囲に正規化し、その後オフセットを-0.5にして、変動が0の周りに分布するようにします。私はこの方法を最もよく使います。ただし、安定した極端な値がない場合には正規化される初期データがあることに注意が必要です。インジケーターは過去のデータを再描画しないため、チャートは以下のように表示されます:

ですが、初期系列の2、3回の良いダイバージェンスの後は、これらのレベルを信頼し始めることができます。正規化のための極端な値は、データが蓄積されると失われません。
方法2(極端な値のレベル) - 単に絶対的な最大偏差を追跡し、それを市場に入るための3つのレベルに分けます。
特徴は正規化と同じで、安定した極端な値が得られるまで、これらのレベルを信頼することはお勧めできません。
この方法を使用すると、以下のような結果が得られます:

上記の方法を使用してレベルを描画する場合の大きな利点は、レベルが狭くならないことです。しかし、1つの欠点として、スパイクがあると、その後の計算がそれに基づいて行われます。それを取り除くために、インジケーターには「レベル係数」という別のパラメーターがあります(市場に入るためのレベルを手動で狭めたり広げたりするための係数です)。
方法3のレベル描画 - 標準偏差の計算。この方法はインジケーターに実装されていません。なぜなら、レベルが狭くなってしまうため、私の意見では受け入れられません。その結果、レベルは常に狭くなったり広がったりする泡のように見えます。残念ながら、この計算方法はすべてのインジケーターから削除してしまったため、スクリーンショットを提供することができません。もう一つの欠点は、すべてのデータを常に確認して正しく計算する必要があることです。
追記:このインジケーターはMetaTrader 4から移行して、いくつかのアイデアをマルチテスターで確認するために使われましたが、以下のような指摘があります:
- インジケーターはすべてのデータを取得できない場合にノイズを描画します。理由がわからず、MetaTrader 4では発生しません。
- データの欠落がある場合、インジケーターは以前のデータを使用することができるはずですが、1の理由でデータが空白のままとなり、どこにデータが欠落しているかを正確に表示できます。
- 何かおかしなものが描かれた場合は、チャートを更新し、期間やペアを変更してください。
- データがない場合にタイマーを使用しようとしましたが、結果は満足できるものではなかったため、タイマーを削除しました。
- 1~4は私のMQL5に関する「十分でない」知識から来ていると思われるので、コメントをいただけるとありがたいです。