初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 774

 
0Aleksandr0:

何ですか?MQL4は苦手です、何を取得しなければならないか教えて頂ければ、MQL5で書けるようになります。
履歴の損益計算と関係があるのでは?


それが、自分でもよくわからないんです。コードは、授業から抜粋して、私のオーダーで書いたものです。私もこのコードはバランス計算のためのものだと考えています。でも、考え方によっては、新しい注文の開閉に伴うバランスの変化は、配列でリセットされるはずなのですが、それが見当たりません...。

 
Aleksey Vyazmikin:

MT5でコードを書き換えるのを手伝ってください - 注文について何も知りません :(

#include <MT4Orders.mqh>
 
fxsaber:

ありがとうございます!このクラスがコンパイルされたEAが......衝突しないかどうか......。


テスト実行時にエラーが発生するようになった

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLLの読み込みが許可されていない。

2017.08.23 11:22:59.929 Core 3 グローバル初期化に失敗しました。

2017.08.23 11:22:59.929 Core 3 グローバル初期化クリティカル・エラー

2017.08.23 11:22:59.929 Core 3 テスターはエキスパートの初期化に失敗したため、停止しています。


ライブラリコールが使用されている - MT4ではすべてが正しいです。

#import "Kernel32.dll"
bool CopyFileW(string lpExistingFileName,string lpNewFileName,bool bFailIfExists);
#import 

その理由は何でしょうか?

 
Aleksey Vyazmikin:

ありがとうございます、EAはこのクラスでコンパイルしました - しかし、競合しないかどうかわかりません...。

それはないでしょう。

テスト実行時にエラーが発生するようになった

2017.08.23 11:22:59.929 Core 3 2016.06.01 00:00:00 DLLの読み込みが許可されていない。

2017.08.23 11:22:59.929 Core 3 グローバル初期化に失敗しました。

2017.08.23 11:22:59.929 Core 3 グローバル初期化クリティカル・エラー

2017.08.23 11:22:59.929 Core 3 テスターはエキスパートの初期化に失敗したため、停止しています。


ライブラリコールが使用されている - MT4ではすべてが正しいです。

その理由は何でしょうか?

ターミナルでDLLを使用できるようにする。

 
fxsaber:

それはないでしょう。

ターミナルで、DLLを使用できるようにする。


信じられないと思いますが、私はやりましたが、効果がありませんでした。どうやらキャッシュがあるようで、しばらくするとクリアされるようですが、今は動いています。ありがとうございます。

 

エージェントに同じファイルに書き込むように教えるにはどうしたらよいでしょうか?今は、みんなが自分のファイルを自分のフォルダに作っているので、よくないですね。

 
Aleksey Vyazmikin:

エージェントに同じファイルに書き込むように教えるにはどうしたらよいでしょうか?今は、みんなが自分のファイルを自分のフォルダに作っているので、よくないですね。

アレクセイ、一度ドキュメントを開いてみてくれ...。そこには、どのフラグが一般的なフォルダを指すのかが正確に記述されており、ファイルへの一般的なアクセスを開くことができます。ドキュメントを読むより、答えを待つ方が簡単なのか?

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aleksey Vyazmikin:

エージェントに同じファイルに書き込むように教えるにはどうしたらよいでしょうか?今は、みんなが自分のファイルを自分のフォルダに作ってしまうので、よくない。


まず(ステップ1)克服する必要があります。

... 独自のフォルダーで、 ...


これは FILE_COMMON フラグで行われます。すべてのエージェントは共通のフォルダに書き込むようになります(ただし、各エージェントはそれ自身のファイルに書き込むことになります)。


例EA:

//+------------------------------------------------------------------+
//|                                           Agents FILE_COMMON.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
input int s=0;
//---
string InpFileName="";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initialize the generator of random numbers 
   MathSrand(GetTickCount());
   InpFileName=IntegerToString(MathRand())+".txt";
//--- open the file 
   ResetLastError();
   int file_handle=FileOpen(InpFileName,FILE_WRITE|FILE_TXT|FILE_COMMON);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- the string is formed, write it to the file 
      FileWriteString(file_handle,InpFileName);
      //--- close the file 
      FileClose(file_handle);
      PrintFormat("Data is written, %s file is closed",InpFileName);
      PrintFormat("Common path for all of the terminals installed on a computer: %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }
   else
     {
      PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError());
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

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


MetaEditorで、Fileメニューから「Common Data Folderを開く」を選択します。


このEAを最適化のために実行し、テストが実行されるにつれてCommon Data Folderに新しいファイルが作成されるのを確認してください。

ファイル:
 
Vladimir Karputov:

まず(ステップ1)は、敗北する必要があります。


これは FILE_COMMON フラグで行われます。すべてのエージェントは共通のフォルダに書き込むようになります(ただし、各エージェントはそれ自身のファイルに書き込むことになります)。


例EA:


この共有フォルダを素早く開くには、次のようにします。MetaEditorのコードエディタで、ファイルメニューから「Common Data Folderを開く」を選択します。


このEAを最適化のために実行し、テストの実行に伴ってCommon Data Folderにどのように新しいファイルが作成されるかを確認します。


ターミナルは自分のディレクトリで動くので、Commonに入れるのは嫌だし、どうせおっしゃるようにファイルが多くなるので、問題解決にならない。

 
Aleksey Vyazmikin:

ターミナルが独自のディレクトリで動作するため、Commonには入りたくないし、おっしゃるようにファイルがたくさん残ってしまうので、問題解決にはなりませんが。


それは、「 ...ステップ1 ..."

ステップ2について - 今度は自分自身で考えてみてください。つまり、「複数のスレッドが矛盾なく1つのファイルに書き込むにはどうしたらいいか」ということです。

理由: