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

 
Vladislav Andruschenko:

ターミナル 1755

エキスパートアドバイザーで作業し、コンパイルすると、その更新版がチャートに表示される - すべてがOKです。

が、テスターではこのEAを選択し、コンパイル後に別の(以前の)EAが選択されています。

再起動後 - すべて正常です。

古代の問題。

 

tester_fileのバグを少し修正しました。ステップバイステップで再生

  1. ローカルエージェントを1つ残して、ターミナルサンドボックスをクリーンアップ - MQL5Files*.*.
  2. コンパイルEA
    #property tester_file __FILE__
    
    sinput uint Range = 100; // Входной параметр для Оптимизации
    
    #define  SETRANGE(A, START, STEP, END) ParameterSetRange(#A, true, A, START, STEP, END)
    
    void OnTesterInit()
    {
      SETRANGE(Range, 0, 1, Range);
      
      const int handle = FileOpen(__FILE__, FILE_WRITE | FILE_BIN );
      
      // Создаем файл на 4 байта
      if (handle != INVALID_HANDLE)
      {
        FileWriteInteger(handle, 0);
        
        FileClose(handle);
      }
    }
    
    void OnTesterDeinit() { ChartClose(); }
    
    #define  TOSTRING(A) #A + " = " + (string)(A) + " "
    
    void OnTesterPass()
    {
      ulong Pass;
      string Name;
      long ID;
      double dOnTester;
      uchar Data[];
    
      while (FrameNext(Pass, Name, ID, dOnTester, Data))
        Print(TOSTRING(Pass) + TOSTRING(ID)); // Распечатываем размер файла на Агенте
    
      return;
    }
    
    double OnTester()
    {
      const int handle = FileOpen(__FILE__, FILE_READ | FILE_WRITE | FILE_BIN );
    
      const int i = (int)((handle != INVALID_HANDLE) ? FileSize(handle) : -1);
      
      // Делаем файл 4 байта, делаем - 8.
      if ((handle != INVALID_HANDLE) && (FileSize(handle) == INT_VALUE))
      {
        FileSeek(handle, 0, SEEK_END);
        FileWriteInteger(handle, 0);
              
        FileClose(handle);
      }
    
      uchar Data[];    
      FrameAdd(NULL, i, 0, Data); // Передаем размер файла до изменений.
      
      return(0);
    }

  3. その際、テスターのログファイルに「tester_fileがまだ存在しない」というメッセージが表示されます。
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist
    2018.02.28 08:37:29.574 Moving Average  tester_file 'Moving Average.mq5' is not exist

  4. ストラテジーテスターでExpert Advisorを始値で動作させ、Complete Brute Force Optimizationモードで実行します。テスターのログで確認します。
    2018.02.28 21:20:24.424 Statistics      optimization done in 0 minutes 03 seconds
    2018.02.28 21:20:24.424 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

  5. すぐに "Start "を押して、この同じOptimizationを再起動する。Optimizeを30倍遅くする-バグ!
    2018.02.28 21:23:02.219 Statistics      optimization done in 1 minutes 06 seconds
    2018.02.28 21:23:02.219 Statistics      local 101 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


  6. Frame-Advisorの結果では、既存のファイルは転送されずにコンパイル処理が行われたため(ステップ3参照)、転送されないことがわかります。虫か、バグか?
  7. Expert Advisorを再コンパイルします。この場合、P.3に示すようなメッセージは受け取れませんので、正解です。
  8. Optimizationを再起動 します。Frame-Advisorは、tester_fileがAgentに転送されたことを表示します。
    2018.02.28 21:28:33.449 Moving Average (EURUSD,M1)      Pass = 0 ID = 4 
    2018.02.28 21:28:33.472 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:33.495 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:33.519 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 

  9. 最適化を再実行します。しかし、Frame-modeでは、2回目の起動時にtester_fileがOptimizerに渡されていないことがわかります - bug!
    2018.02.28 21:28:43.727 Moving Average (EURUSD,M1)      Pass = 0 ID = 8 
    2018.02.28 21:28:43.797 Moving Average (EURUSD,M1)      Pass = 1 ID = 8 
    2018.02.28 21:28:43.834 Moving Average (EURUSD,M1)      Pass = 2 ID = 8 
    2018.02.28 21:28:43.864 Moving Average (EURUSD,M1)      Pass = 3 ID = 8 


  10. 第3のOptimizationを実行し、ステップ8の結果を得ることになります。
  11. 4つ目は、ステップ9で結果を得ること。
  12. つまり、奇数回目の最適化ではステップ8の結果が、偶数回目の最適化ではステップ9の 結果が得られます。

EAが行うことフレームモードでは、OnTesterInitで、4バイトのファイルを作成し、tester_file機構を通して、Agentに送信します。Agentはそれを開き、ファイルサイズが4バイトであることを確認すると、8バイトに追記します。エージェント自身は、フレームを通して元のファイルサイズをバイト単位で渡します。これにより、オプティマイザーの最初のパスでファイルが転送され、他のパスではエージェント自身のサンドボックスに一時的に置かれたファイルが動作することが確認されます。

総じて、いくつかのバグを再現することができました。

 

この質問はすでにされているかもしれませんが、それにしても。

MQL5でインジケーターのパラメーターウィンドウを呼び出すことは可能ですか?

 

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

"クロスプラットフォーム・トレーディング・アドバイザー:イントロダクション "についてのディスカッション

fxsaber さん 2016.08.17 16:51

StringConcatenateの 例に切り込みます。MT4/5でこの機能を使っている人は理解しがたい。面倒なだけでなく、明確でもない。文字列の連結は、どちらのプラットフォームでも常に+演算子で実現されています。つまり、文字列に対してStringConcatenateを使うことは、数字の合計を得るために「NumberSummary」関数を使うことに匹敵します。不条理だ、要するに。

無茶苦茶なだけでなく、クロスプラットフォームでもない。

 
Andrii Djola:

この質問はすでにされているかもしれませんが、それにしても。

MQL5でインジケーターのパラメーターウィンドウを呼び出すことは可能ですか?

私の知る限り、MQLにはそのような機能はありません。
しかし、WinAPIを使えば、すべてのインジケーターのリストを開き、インジケーターツリーを見て、正しいインジケーターを見つけることができます...

 
Andrii Djola:

この質問はすでにされているのかもしれませんが、それでも。

MQL5でインジケーターのパラメーターウィンドウを呼び出すことは可能ですか?

サービスデスクは、そのような機能を考えることを約束しました。

 

なぜ、このようなことが起こるのでしょうか?

2018.03.01 06:54:04.342 Tester debug version of "MQL5Experts↪MyExpert.ex5" can be optimized on local agents only, no Cloud, no Farm.

どうすれば直るのか?


 
Nexxtor:

なぜ、このようなことが起こるのでしょうか?

2018.03.01 06:54:04.342 Tester debug version of "MQL5Experts↪MyExpert.ex5" can be optimized on local agents only, no Cloud, no Farm.

どうすれば直るのか?


最初にコンパイルし、次に最適化を実行 します。

 
BasesMetaQuotes-Demo」フォルダに、カスタムシンボルに 関連する2018.hccが入ったフォルダが出現しました。バグです。
 

テスターのこの素晴らしい 機能の続きです。Optimizationを実行 すると、次のようになります。


Core1ログ

KE      0       14:23:25.855    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
KP      0       14:23:25.862    Server  MetaTester 5 started on 127.0.0.1:3000
OJ      0       14:23:25.862    Startup initialization finished
JQ      0       14:23:25.871    127.0.0.1       login (build 1755)
HG      0       14:23:38.760    Network 38520 bytes of account info loaded
JP      0       14:23:38.760    Network 1482 bytes of tester parameters loaded
QG      0       14:23:38.760    Network 2236 bytes of input parameters loaded
OP      0       14:23:38.771    Network 4605 bytes of symbols list loaded
NK      0       14:23:38.771    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
NM      0       14:23:38.771    Network 1368 bytes of optimized inputs info loaded
CH      0       14:23:38.774    Tester  successfully initialized
HL      0       14:23:38.774    Network 118 Kb of total initialization data received
JF      0       14:23:38.775    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KL      0       14:23:38.775    Tester  optimization pass 0 started (batch of 30 tasks)


Core2ログです。

CQ      0       14:25:27.983    Startup MetaTester 5 x64 build 1755 (18 Jan 2018)
MD      0       14:25:27.988    Server  MetaTester 5 started on 127.0.0.1:3001
FO      0       14:25:27.989    Startup initialization finished
FM      0       14:25:29.021    127.0.0.1       login (build 1755)
HK      0       14:25:29.026    Network 38520 bytes of account info loaded
IL      0       14:25:29.026    Network 1482 bytes of tester parameters loaded
RK      0       14:25:29.026    Network 2236 bytes of input parameters loaded
QL      0       14:25:29.029    Network 4605 bytes of symbols list loaded
PG      0       14:25:29.030    Tester  expert file added: Experts\fxsaber\Test.ex5. 115516 bytes loaded
DI      0       14:25:29.030    Network 1368 bytes of optimized inputs info loaded
HL      0       14:25:29.032    Tester  successfully initialized
GP      0       14:25:29.032    Network 118 Kb of total initialization data received
JR      0       14:25:29.032    Tester  Intel Core i7-2700 K  @ 3.50 GHz, 16301 MB
KI      0       14:25:29.033    Tester  optimization pass 180 started (batch of 30 tasks)


エージェントはすべてReadyでした。ビジュアライザーはなかった。Core2(とCore2 - スクリーンショット参照)は、スタートから2分後に起動しました。問題を解決しよう!