1トレードの収益の差に関しては、スプレッドの違いによるものとわかりやすいですが
一方のブローカーでは売買したのに、もう一方のブローカーでは
売買されていないというような、売買回数の差は理解しにくい所ですね。
自動売買を行うEAは、決まった時間に売買と決済するものを除いて
ブローカーから提示される為替レートを基準に売買を行っています。
つまり、大部分のEAはインジケータの値を基に売買を行っているということですが
このインジケータの値は、どのブローカーでもまったく同じ値になるわけではありません。
平日のチャートが動いている時に
異なるブローカーのMetaTrader4を起動し、同じ時間足を表示させ
ストキャス等のサブウインドウが表示されるインジケータを表示させてみてください。
グラフを見た感じは同じですが、サブウインドウのインジケータ名の隣に
表示されている値は、若干異なると思います。
なぜ、インジケータの値に差が発生するのでしょうか。
スプレッドの違いによる為替レートの差も大きいですが、もう一つあります。
それは、ブローカー毎に四本値の記録タイミングが違う点です。
再度、異なるブローカーのチャートを1分足でそれぞれ表示させてみてください。
一方のブローカーでは次の足に進んだが、もう一方のブローカーでは
まだ次の足に進んでないという状況が確認できると思います。
リアルタイムの為替レートは、ブローカー毎にほぼ同じだとしても
足の記録タイミングの違いによって、形成される過去データの足の形が異なります。
足の形が異なるということは、四本値の値が異なるということですが
インジケータは、高値、安値、終値を使用して値を算出していることから
足の形が異なると、インジケータの値が異なるということになります。
ここで単純な例を・・・(ちょっと簡略化し過ぎてますがお許しを・・・)
下記のような過去10本の終値があります。上昇トレンドが発生しており、1ずつ上昇しています。
ブローカーAのチャートでは、きれいに1ずつ上昇した終値が記録されましたが
ブローカーBのチャートでは、4まで上がった所で3つ目の足が確定した為、3つ目の
終値が4となっています。
ブローカーA 1 2 3 4 5 6 7 8 9 10
ブローカーB 1 2 4 4 5 6 7 8 9 10
ここで、SMA(10)を計算してみます。(期間10の単純移動平均)
SMAですので、すべての値を足して、値の数で割ります。
ブローカーA 1+2+3+4+5+6+7+8+9+10=55 55/10=5.5
ブローカーB 1+2+4+4+5+6+7+8+9+10=56 56/10=5.6
このように、ブローカーAとブローカーBで、SMA(10)には0.1の差が発生しました。
この例で、その後9・・8・・7・・と、下降トレンドになった場合
例えば、SMA(10)が5.6になったら売買を行うというEAを稼働していると
ブローカーBのみ売買が行われるという事になります。
実際にはもっと細かい話になるのですが、あくまで単純化した例でお話ししました。
インジケータの大部分は移動平均を基にしていることから、過去のデータを
平均化した値が出力されるのですが、算出する期間が短いと、差が顕著に表れます。
期間を長くすることや、更に平均化する等、その差を抑えることはできますが
完全に無くすことは不可能に近く、ブローカー毎のトレードの差は諦めるしかないのが現状です。
最近はそれ以前に、注文が約定されないケースで売買に差が出ていることが
問題になってきていますね。