ライブラリ: マルチテスター - ページ 45

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

MetaTrader 5ビルド3081の新バージョン:MQL5サービスの改善とデザインの更新

fxsaber, 2021.10.15 12:33 pm

このスクリプトでは、ファイルマネージャで問題なく作成されるファイル名の長さに不可解な制限が表示されます。

void CheckFile( string FileName )
{
  uchar Bytes[1];  
  
  FileName = "TempFolder\\" + FileName + "\\" + FileName + "\\" + FileName;
  Print(StringLen(FileName)); // 313

  Print(FileSave(FileName, Bytes)); //偽
  Print(_LastError); // err_too_long_filename (5003)
}

void OnStart()
{
  CheckFile("ExpertNameExpertName.EURUSDEURUSDEURUSD.M1.20210701.20211009.41.BAA0EE191CCD66EB8291EC4D6434A6C8.opt");
}

ファイル名の長さを解決してください。実際にはここを 使うべきです。


以下の関数で長いパス(MAX_PATH以上)を扱うことができます。

MTTESTER::FileSave
MTTESTER::FileLoad
MTTESTER::FileCopy
MTTESTER::FileMove
MTTESTER::FileIsExist


上の例は標準の関数に置き換えても動作します。

Print(MTTESTER::FileSave(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Files\\" + FileName, Bytes)); //真


また、サブフォルダを含む、マスクによるファイルのリストを取得する関数も追加しました(これに似て います)。

#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/ja/code/26132

void OnStart()
{
  string FileNames[];
  
  // ターミナル・フォルダー内のすべてのログ・ファイルを取得する。長いパス(> MAX_PATH)をサポートします。
  MTTESTER::GetFileNames(FileNames, TerminalInfoString(TERMINAL_DATA_PATH) + "\\*.log");

  ArrayPrint(FileNames);
}


標準の関数ではファイルパスの長さに制限があることがよくありました。この実装から判断すると、標準関数に長いパスのファイルをサポートする機能を追加するのは、MQ側からは簡単なようだ。

 
コードをデバッグするとき、前のセッションとの混同を避けるために、アクティブ・プリントの前にログをクリアすることをよく使う。
#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/ja/code/26132

void OnStart()
{
  MTTESTER::TerminalJournalClear(); // 専門家のジャーナルを一掃する。
  
  Print("First Print.");
}
 

ファイル名とその内容に追加情報を追加。そうしないと、いつ、何が起動されたかを理解するのが困難でした(私は自動計算をたくさんします)。

// bool MTTESTER::CheckInputs(const bool) によって生成される:https://www.mql5.com/ja/code/26132
リンク:https://www.mql5.com/ru/blogs/post/760770

// [テスター]。
// Expert=HelloWorld.ex5
// シンボル=EURUSD
// 期間=M1
// FromDate=2024.11.04.
// 預金=10000.0
// 通貨=EUR
// レバレッジ=500
// ServerName=MetaQuotes-Demo
// [TesterInputs]

inRange1=3
; GroupName
inRange2=3



これらのデータをクリップボードにコピーし(CTRL+C)、TesterのSettingsタブ(CTRL+V)に転送できるようになりました。その後、アラームの組み合わせのシングルパスを実行してください。

 
fxsaber #:
コードをデバッグするとき、前のセッションとの混乱を避けるために、アクティブ・プリントの前にログ・クリアを使うことがよくある。

この関数はTerminalJournalClearと呼ばれますが、ログをクリアするのではなく、Expertタブだけがクリアします

 
Andrei Iakovlev #:

この関数は TerminalJournalClear と呼ばれていますが、ジャーナルをクリアする のではなく、 Expert タブのみがクリアします。

用語に問題があるのでしょうか?エキスパートタブのクリア - スクリプトがあります。ログ・タブ - 考えたことがない。

 
こんにちは、どなたかMTTester.mqhライブラリが5100の新しいビルドプッシュ(2025年6月6日)で廃止されたかどうか確認できますか?
 
Muhammad Fahad #:
こんにちは、どなたかMTTester.mqhライブラリが2025年6月6日の 新しい5100ビルドプッシュで廃止されたかどうか確認できますか?
'MTTester.mqh'
WinAPI.mqh                      
windef.mqh                      
winnt.mqh                       
fileapi.mqh                     
winbase.mqh                     
winuser.mqh                     
wingdi.mqh                      
winreg.mqh                      
handleapi.mqh                   
processthreadsapi.mqh                   
securitybaseapi.mqh                     
errhandlingapi.mqh                      
sysinfoapi.mqh                  
processenv.mqh                  
libloaderapi.mqh                        
memoryapi.mqh                   
0 errors, 0 warnings, 193 msec elapsed, cpu='X64 Regular'
 

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: マルチテスター

fxsaber, 2022.09.01 10:26 AM

ターミナルLiveUpdate管理。
// 端末のLiveUpdate状態を切り替える。

#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/ja/code/26132

void OnStart()
{
  const bool IsLiveUpdate = MTTESTER::IsTerminalLiveUpdate();
                     
  if (MessageBox("Current LiveUpdate - " + (IsLiveUpdate ? "ON" : "OFF") + ".\n\nWant to switch?",
                 "LiveUpdate Status", MB_YESNO) == IDYES)
   MessageBox("Current LiveUpdate - " + ((IsLiveUpdate ? !MTTESTER::TerminalLiveUpdateOFF() : MTTESTER::TerminalLiveUpdateON()) ? "ON." : "OFF."));
}

アップデートを禁止するサービス。

#property service

#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/ja/code/26132

void OnStart()
{
  while (!IsStopped())
  {
    MTTESTER::TerminalLiveUpdateOFF();
    
    Sleep(5000);
  }
}

 
こんにちは。ライブラリをありがとうございました!ブルートフォース最適化基準の 実装方法を教えてください。
 
parameter convertion type 'short[260]' to 'ushort[] &' is not allowed	MTTester.mqh	135	39
   int user32::GetClassNameW(long,ushort&[],int)	winuser.mqh	1414	37
'ReadFile' - no one of the overloads can be applied to the function call	MTTester.mqh	1283	21
   in template 'int MTTESTER::FileLoad(const string,T&[])' specified with [T=short]	MTTester.mqh	1270	14
   see template instantiation 'MTTESTER::FileLoad<short>'	MTTester.mqh	1569	23
could be one of 3 function(s)	MTTester.mqh	1283	21
   int kernel32::ReadFile(long,ushort&[],uint,uint&,OVERLAPPED&)	fileapi.mqh	124	8
   int kernel32::ReadFile(long,ushort&[],uint,uint&,long)	fileapi.mqh	125	8
   int kernel32::ReadFile(long,uchar&[],uint,uint&,long)	MTTester.mqh	60	7
2 errors, 0 warnings		2	0
текущий MTTester.mqh не  проходит проверку при компиляции себя же самого в 5100

今回のアップデートで2台の異なるコンピューターで - MultiTester

更新: 2025.06.06 08:04