エラー、バグ、質問 - ページ 2313

 
Vladimir Karputov:

私のノートパソコンでは、あるタスクがエージェントにカウントされ続けるとき、この問題が発生します(例えば、私はオープニングポジションでコードを台無しにし、貧しいエージェントは取引注文を 送り、しかし彼はそれに応じて禁止を取得し、しかしそれは爆撃を続け、結果としてすべてのエージェントがとっくに計算を終えているのに、この貧しい男は打ち続け、打ち続けています)。

つまり、要するに、エージェントは前回のミッションからの課題を持っていて、それと戦い続けているのです。

今日、エージェントが24時間以上作動していなかったので、この逆がありました。

認可とデータ交換に不具合があると思います。つまり、アドバイザー/履歴が長い間送信されないと、クライアント側は再接続し、エージェントはファイルの到着を待っている状態です。
 
fxsaber :

約300万ティック、OrderSendはわずか16K。しかし、このトレードオーダーは3分の1の時間を要する。そして、1ティックごとにExpert Advisorで計算が行われます。

だからこその質問です。OrderSendのコードをプロファイラで実行してみてください。ど のようなところに、そのようなヒケツがあるのでしょうか。

標準の機能を独自のものに置き換えれば、動作が速くなるのではと推測しています。おそらく、OrderSendには、高価なチェックやジェスチャーがあるのだろう。例えば、Expert Advisor(+インディケータ)にHistory-functionsとOnTrade*がない場合、適切なレコード/イベントを形成することは時間の無駄です。

人によっては1本が何分にもなることもあるかと思います。しかし、上記のようなケースもあります。実行速度に注目すると、秒単位になります。そしてここで、Optimizeを3時間起動し、そのうち1時間がOrderSendで、その平均実行時間は69μsであることが判明した(スクリーンショット参照)。

こんにちは。

Metaquotesから有益な回答は得られましたか?

MT5ストラテジーテスターを使ってパフォーマンスを向上させたいと考えているクライアントがいます。EAストラテジーは「利用可能な価格のみ」モードを簡単に利用することができます。しかし、MT4で1.5秒かかるバックテストが、MT5では5秒で終わってしまうのです!

このストラテジーはトレーリングストップを使用し、バックテスト時間の90%でOrderSend()を使用しているようです。


 
Alain Verleyen:

こんにちは。

Metaquotesから有益な回答は得られましたか?

MT5ストラテジーテスターを使ってパフォーマンスを向上させたいと考えているクライアントがいます。EAストラテジーは「利用可能な価格のみ」モードを簡単に利用することができます。しかし、MT4で1.5秒かかるバックテストが、MT5では5秒で終わってしまうのです!

このストラテジーはトレーリングストップを使用し、バックテスト時間の90%でOrderSend()を使用しているようです。

すべての回答はこのスレッドのみで行われました。何かが行われたようだ。

メタクォーツ・ソフトウェア株式会社:
  1. テスター:ストラテジーテスターの最適化・高速化。

Virtualで自己解決した。


ZZY EAを表示します。

Библиотеки: Virtual
Библиотеки: Virtual
  • 2018.10.03
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: Virtual
 
fxsaber:

何かが行われたようだ

1930

Core 1  pass 0 returned result 99753711.00 in 0:00:03.729
Core 1  pass 1 returned result 99753711.00 in 0:00:03.432
Core 1  pass 2 returned result 99753711.00 in 0:00:03.401
Core 1  pass 3 returned result 99753711.00 in 0:00:03.354
Core 1  pass 4 returned result 99753711.00 in 0:00:03.323
Core 1  pass 5 returned result 99753711.00 in 0:00:03.385
Core 1  pass 6 returned result 99753711.00 in 0:00:03.448
Core 1  pass 7 returned result 99753711.00 in 0:00:03.369
Core 1  pass 8 returned result 99753711.00 in 0:00:03.369
Core 1  pass 9 returned result 99753711.00 in 0:00:03.385
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 35 seconds
Statistics      shortest pass 0:00:03.323, longest pass 0:00:03.729, average pass 0:00:03.419


バーチャル

Core 1  pass 0 returned result 99753711.00 in 0:00:02.231
Core 1  pass 1 returned result 99753711.00 in 0:00:01.217
Core 1  pass 2 returned result 99753711.00 in 0:00:01.217
Core 1  pass 3 returned result 99753711.00 in 0:00:01.185
Core 1  pass 4 returned result 99753711.00 in 0:00:01.170
Core 1  pass 5 returned result 99753711.00 in 0:00:01.201
Core 1  pass 6 returned result 99753711.00 in 0:00:01.186
Core 1  pass 7 returned result 99753711.00 in 0:00:01.201
Core 1  pass 8 returned result 99753711.00 in 0:00:01.185
Core 1  pass 9 returned result 99753711.00 in 0:00:01.202
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 13 seconds
Statistics      shortest pass 0:00:01.170, longest pass 0:00:02.231, average pass 0:00:01.299


1881年との差は3倍。おそらくどこかで手を加えているのでしょう。しかし、OrderSendの トピックは、おそらく触っていないでしょう。

 
fxsaber :

すべての答えは、このスレッドにしか書かれていない。何かが行われたようだ。

Virtualで自己 解決した。

ご返信ありがとうございました。
 
みんな。またホームページでエラーが出ています。
携帯電話からマーケットプレイス内のメッセージに返信できない。リストがポップアップされない。
休日でパソコンがない。

ファイル:
 

最適化により、各エージェントに128のジョブがバンドルされます。異なるサイズのパックを形成することは可能ですか?

このような状況です

1人を除くすべてのエージェントがタスクを完了しました。そして、あるAgentのために最適化が完了するのを待たねばならないのです。しかし、全エージェントの仕事をほぼ同時に終了させることは可能だった。

例えば、スクリーンショットのように、8つのエージェントと5376のタスクがある場合を考えてみましょう。5376 / 8 = 672タスク。つまり、336(=672/2)、168(672/4)、84(672/8)のサイズのジョブをそれぞれ束ねることができるわけです。そして、すべてのAgentsが同時にゴールインするのです。


一方、128という値は、この多重性を考慮していない。その結果、複数のコアを使用した場合、Optimization時間が長くなります。

 

KBにグレードをつけたかったのに、うまくいかなかった。また、最近の出版物には全く評価がないことから、この問題を抱えているのは私だけではないようです。

そして同時に、もっと欲しいと思わせる評価システム(単純な算術平均)も認めたいと思います。結局のところ、数年前からBEにある5つ星評価が49件、4つ星評価が1件のコードよりも、新しく公開された5つ星評価が1件のコードの方が高くなるのです。これって公平?

少なくとも、この方式の方がずっと公平だと私は思います。

double R=Average*pow(N,0.1);

どこで

R- あなたが探しているレーティング

平均値-算術平均スコア

N- 評価数。

 
fxsaber:

最適化により、各エージェントに128のジョブがバンドルされます。異なるサイズのパックを形成することは可能ですか?

このような状況です

1人を除くすべてのエージェントがタスクを完了しました。そして、あるAgentのために最適化が完了するのを待たねばならないのです。しかし、全エージェントの仕事をほぼ同時に終了させることは可能だった。

例えば、スクリーンショットのように、8つのエージェントと5376のタスクがある場合を考えてみましょう。5376 / 8 = 672タスク。つまり、336(=672/2)、168(672/4)、84(672/8)のサイズのジョブをそれぞれ束ねることができるわけです。そして、すべてのAgentsが同時にゴールインするのです。


一方、128という値は、この多重性を考慮していない。そのため、複数のコアを使用した場合、Optimizationの時間が長くなってしまいます。

全体的には賛成ですが、エージェントのジョブを自動的にキャンセルできるようにし(エージェントの活動を禁止するボタンを押すことで既に実装されています)、フリーエージェントと5倍のジョブがある場合は、リモートエージェントを含むすべてのエージェントにジョブを再分配する方がより正しいと思います。

 

皆さん、こんにちは。愚問で申し訳ありません。ボタンのPressedプロパティを、左クリック時にはtrue、左クリック時にはfalseにする方法を教えてください。今は、押しても何も起こらないが、離すとPressedが逆の値に変わるという状況だ。

CButton::OnMouseUp と CButton::OnMouseDown のイベントハンドラをオーバーライドする必要があることは理解できたのですが、どこでそれをすればいいのかがわかりません。ヒントをお願いします。ありがとうございました。