MT5とスピードの関係 - ページ 13

 
Dmi3:

私はトレーダーです。自分の端末で肉眼で見たものが、私の歌うものなのです。私はトレーダーなので、端末に表示されるものを肉眼で見ることができるんです。

もちろん理論的には、自宅のノートパソコンからEAを入れて、その挙動を見ることも可能です。

ただ、履歴が深いということは、サーバー側に問題があるのではと思ったのです。

 
Aleksey Vyazmikin:

ただ、履歴を深く要求された場合、サーバー側に問題があるのではと思いました。

すべてのEAにおける履歴は、過去120秒分を要求します。1日に1万件以上の注文がある。

 
Dmi3:

すべてのEAにおける履歴は、過去120秒分を要求します。1日に1万件以上の注文がある。

それなら、すべてメモリにすればいいという発想です。

 

約百種類の独立した取引ロジックが取引可能です。同時に、十数種類のトレーディングシンボルがあります。

ラグがあるため、1つの非同期Expert Advisorにこれらすべてを詰め込むことは不可能です。Expert Advisorを複数作成し、並行して動作させる必要があるのですが。

 
fxsaber:

約百種類の独立した取引ロジックが取引可能です。同時に、十数種類のトレーディングシンボルがあります。

ラグがあるため、1つの非同期Expert Advisorにこれらすべてを詰め込むことは不可能です。Expert Advisorを複数作成し、並行して動作させる必要があるのですが。

その後、1つの端末に100個以上のEAを詰め込むことは不可能であることが判明したため、複数の端末を並行して立ち上げる必要がある。そして......。

 
Dmi3:

そして、1つの端末に100個以上のEAを詰め込むことはできず、複数の端末を並行して稼働させなければならないことが判明しました。そして......。

ラグがなくなれば、1つのEAに詰め込むことが可能になります。VPSがかなり緩和されます。

 
OnTickは、前のティックからのティック履歴を照会します。
2020.08.17 21:26:45.729 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:47.848 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:49.959 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:53.135 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 6 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:26:54.199 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:00.525 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:08.956 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:13.173 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:27.931 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:30.048 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:42.669 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.
2020.08.17 21:27:43.726 Alert: Time[NewTicks.mqh 208: ::CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,LastTime)] = 5 ms.

非常に安定した結果です。

 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

ライブラリ:MT4Orders

fxsaber, 2020.08.18 08:49

出力の遅れが30msを超える場合も同様の結果が得られる。

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.

取引履歴のまともなラグがないこと。

 
どうやってモニターするのか、まだわかっていないんです。
2020.08.18 11:14:05.072 MarketWatchTick:  time = 2020.08.18 11:14:00.674
2020.08.18 11:14:05.195 MarketWatchTick:  time = 2020.08.18 11:14:05.929

左側がローカルタイム、右側が最後の 文字引用の時間 です。

2行のプリントアウト(OnTickで作成)の間に100msが経過していることがわかります。同時に、シンボルタイムが5秒変わりました!


つまり、文字価格の受信に5秒のタイムラグがあったことになる。同時に(ここには掲載されていませんが、私のログでは)、リアルタイムでCopyTicksRangeはこれら2つのイベントの間に35ティックを生成しました。


たまたま気づいたのですが、隣のOnTickコールの間に多くのtickがあることに気づきました。

 

コンピュータがHFTに対応しているかどうかを確認するために、開発者が推奨するシーケンスを教えてください。

同じHFTでも、それに適したマシンを用意する必要があります。これについては、公式の推奨(何らかのテストに合格すること)があってもいいかもしれません。