ライブラリ: オンティック・マルチ - ページ 2

 

fxsaber #:

double OnTester()

{return AccountInfoDouble(ACCOUNT_BALANCE); }

この行は何のためですか?

 
lynxntech #:

この行は何のためですか?

必要な残高の値を返すためです。

 

ご提案のソリューションにおいて、ティックがどの程度時間的に同期されているか確認されましたか?

通常のテストでは、異なるシンボルからティックを要求すると、互いに1ティック分の遅れが生じます。確認のために、1分ごとにティックが発生するカスタムテストを作成しました。

 
Rorschach #:

ご提案のソリューションにおいて、ティックがどの程度時間的に同期されているか、確認されましたか?

すべて正常に動作しています。標準のテスターでも問題ありません。もしそうではないなら、その様子を見せてください。

 
fxsaber #:
標準のテスターでは正しく動作しています。そうでない場合は、その様子を見せてください。

EURとGBPの1分足からカスタムティックを作成しました(便宜上)

EURは正しいですが、GBPは1ティック早くなっています(時間と価格をご確認ください)

ファイル:
1.mq5  3 kb
 
Rorschach #:

EURとGBPの1分足チャートからカスタムティックを作成しました(利便性のため)

EURは正確ですが、GBPは1ティック早くなっています(時刻と価格をご確認ください)

同じ時刻のティックは同時に届きません。すべて順次届きます。そして、もしEURUSDの時刻がより遅いティックが先に届いた場合、その時点では、2番目に届く同じ時刻のGBPUSDのティックについては何も分かっていません。 したがって、EURUSDの最初のティックが届いた時点では、GBPUSDの2番目のティックは存在せず、GBPUSDの前のティックのデータのみが存在します。
 
fxsaber #:
同じ時刻のティックは同時に届きません。すべて順次届きます。したがって、EURUSDの時刻が早いティックが先に届いた場合、その時点では、2番目に届く同じ時刻のGBPUSDのティックについては何もわかっていません。 したがって、EURUSDの最初のティックが到着した時点では、GBPUSDの2番目のティックはまだ存在せず、GBPUSDの前のティックのデータのみが存在します。

テスターではこれは欠点であり、アービトラージには同期が必要だ。

そして、これはアービトラージに限った話ではありません。システムが銘柄間の相関関係に基づいている場合、将来を先読みしてしまう現象が生じます。

 
Rorschach #:

テスターとしてはこれが欠点ですが、アービトラージには同期が必要です。

そして、これはアービトラージに限った話ではありません。システムが金融商品の相関関係に基づいている場合、未来を先読みしてしまう現象が生じます。

そのような場合のために、テスターでは実行遅延をカスタマイズできるようになっています。
 
fxsaber #:
このような場合のために、テスターでは実行遅延をカスタマイズできるようになっています。
私の場合は少し複雑になってしまいました。インイットでカスタムテスターとして処理し、入力を配列に書き込んでから、テスターのOnTickで入力を読み取り、同期させました。
 
Rorschach #:

テスターとしてはこれが欠点だが、アービトラージには同期が必要だ。

そして、それはアービトラージだけにとどまらない。システムが金融商品の相関関係に基づいている場合、未来を先読みしてしまう現象が生じる。

未来を先読みすることはありません。なぜなら、時刻Xにおいて複数の銘柄のティックが存在する場合、ある銘柄で最初のイベントが発生した時点で、他の銘柄(そのイベントがまだキューにあるもの)には、次のティックではなく、前のティックが表示されるからです (例のように、00:04は00:05の「前」であり、「後」ではない)。

同期を実現するには、コード内でアルゴリズム的に確保する必要があります。例えば、OnTickハンドラ内で、取引を開始する前に、関与するすべての銘柄のティック時刻を取得するなどです。 しかし、原則として、ティック単位(バーや分単位ではなく)でのアービトラージを行う場合、特定の銘柄ではティックが実際に数秒間欠けることがあるため、信頼性の高い同期を実現することは困難です。