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

 
stringo:
コードが根本的に違うのです。

うわあ...ショックだ...。

比較のために、簡単なx32とx64のコード断片を掲載できますか?いわば、あなたの好奇心を満たすために...。

 
KffAlex:


親愛なる皆様へこの問題に遭遇するのは3回 目です。Windows7 x64で外部ライブラリを作成すると、ある奇跡が起こります。


遅れて申し訳ありません。プライベートで回答しました。

ソースコードを添付してください。可能であれば、servicedeskを通して作って ください。これにより、そのような遅延の可能性を最小限に抑えることができます。

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
AlexSTAL:

うわあ...ショックだ...。

x32とx64を比較するための簡単なコードを書いてもらえますか?いわば、好奇心を癒すために...。

手元に特性がないため、即座にコードをお伝えすることができません。

その違いは以下の通りです。

  • レジスタは64ビット-32ビットです。64ビット演算は1命令に収まる(32ビットでは2つの64ビット整数の除算は40のアセンブラ命令で行われる)。
  • 64ビットレジスタは他にもあります。それに伴い、レジスタのアドレス指定も異なります。
  • 通話規約が違います。例えば、64ビットの場合、関数の最初の4つのパラメータはレジスタで渡される
 
MT5に最適化時間を追加すべき。MT4でのことであり、ここでは正しい修正となる)
 
Renat:

ローカルエージェントは、テスト停止後さらに5分間、キャッシュを上げた状態でメモリにぶら下がり、新しいタスクが実行されるのを待ちます。5分以内に誰もロードしなかった場合、すべてのリソースが解放され、自動的にアンロードされます。

この待機メカニズムにより、エージェントは、インフラを準備・増強することを犠牲にして、繰り返されるタスクの応答速度を上げることができました。

ps: これはローカルエージェントに関するものです。サービスとして動作しているリモートエージェントはアンロードされませんが、ダウンタイム後にリソースを解放することもできます。

404ビルドを使用。リモートエージェントでのトラブルについてです。10時間のダウンタイムを経ても、メモリは解放されない。

もう少し問題がある。

1.ストラテジーテストを実行 すると、ほとんど常に、各プロセッサの最初のパスがすぐに終了し、ゼロの結果を返します。

また、停止して再度起動しても、このゼロは再計算されません。多数のプロセッサでテストを実行していますが、40~50の結果がゼロで、このデータを再計算する機会もありません。

時々、プロセッサの1つが故障に切り替わり、1秒間に数回、ゼロの結果を返すようになります。しかし、それを停止すると、これらのデータは再び再計算されます(テーブルのオレンジ色のフィールド)。

3.16プロセッサでリモートエージェントを実行する場合、インターネット1メガプレーヤは、そのような高速ダウンロード履歴を許可していませんし、タイムアウトのためにすべてのプロセッサが失敗していることが明らかである。一度に1つのプロセッサを有効にすると、通常はうまくいきます。16プロセッサのシステムで、最初のプロセッサに履歴をダウンロードし、他のプロセッサにコピーすることは可能でしょうか?もしくは、履歴を読み込む際のタイムアウトを増やすだけ。

 
a483483:

404ビルドを使用。リモートエージェントでのトラブルについてです。10時間アイドルタイムがあっても、メモリが解放されない。

もう少し問題がある。

1. ストラテジーテストを実行すると、ほとんど常に、各プロセッサの最初のパスがすぐに終了し、ゼロの結果を返します。

また、停止して再起動した場合、このゼロは再計算されません。多数のプロセッサでテストを実行していますが、40~50の結果がゼロで、このデータを再計算する機会もありません。

時々、プロセッサの1つが故障に切り替わり、1秒間に数回、ゼロの結果を返すようになります。しかし、それを停止すると、これらのデータは再び再計算されます(テーブルのオレンジ色のフィールド)。

3.16プロセッサでリモートエージェントを実行する場合、インターネット1メガプレーヤは、そのような高速ダウンロード履歴を許可していませんし、タイムアウトのためにすべてのプロセッサが失敗していることが明らかである。一度に1つのプロセッサを有効にすると、通常はうまくいきます。16プロセッサのシステムで、最初のプロセッサに履歴をダウンロードし、他のプロセッサにコピーすることは可能でしょうか?もしくは、履歴を読み込む際のタイムアウトを増やすだけ。


エージェントのログ、設定、シンボル、サーバーが必要です。

あなたは、EX5の専門家が、より良い、もちろん、ソースをすることができます。

サービスデスクが望ましい。

 
KffAlex:
この問題は、機能をプログラム本体に移動させれば発生しませんし、Windows XPではこの問題は発生しません!
ビット数(64/32)の問題のようで、Windows XPでは32bitで作業しているため、エラーが再現されない。
問題のEX5ファイルを添付して、servicedeskにリクエストを作成してください。(サービスデスクへのリンク)
 

ヘルプ、2つの数字を比較する方法がわかりません、2日経ちました

(今日の日付) > (昨日の日付)

          datetime bark[1];
          CopyTime(Symbol1,NULL,0,1,bark);
          if(bark[0]<=order)

ちゅうもん - (昨日の日付)

それとも、まったく不可能なのでしょうか?

 

これを書きました。

       for (uint k=0; k<66; k++)
         {
          datetime order=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
          datetime bark[1];
          CopyTime(Symbol1,NULL,k,1,bark);
          if(bark[0]<=order)
            {

テスターが動かなくなり、終了。

 
alexluek:

これを書きました。

テスターの中で何かがループしている、それだけです。

未来の時間は過去より長い、コードの一部が図解されていない、if ブロックで何をしているのか、何を望んでいるのかが明確でない......。

ここでは、私が考える、時間の比較に関する網羅的な情報を提供します :)

//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   datetime past=D'2010.12.1'; //Прошлое
   datetime future=D'2010.12.02'; //Будущее

   if(past<future)
     {
      Print(past," раньше чем: ",future);
     }

   datetime buffTime[1]; //Буфер для времени последнего бара
   CopyTime(_Symbol,_Period,0,1,buffTime); //Копируем время последнего бара

   if(buffTime[0]>past)
     {
      Print(past," раньше чем: ",buffTime[0]);
     }

  }
//+------------------------------------------------------------------+