"ダミー "からの質問 - ページ 70

 
Expert:

こんにちは。教えていただけませんか。なぜ注文や取引にはチケットがあるのに、ポジションにはないのですか?

また、チケットとIDの違いは何ですか?

アールティーエフエム
 
sergeev:
アールティーエフエム
))))))))))
 
sergeev:
アールティーエフエム
ああ...大きすぎて、必要な情報がすぐに見つからない。
 
Expert:
ああ...大きすぎて、必要な情報がすぐに見つからない。
そして、じっくりと時間をかけるのです。))勉強する必要があります。そうすれば、あなたの疑問に対する多くの答えを、とても素早く簡単に見つけることができるでしょう。ご質問の件につきましては、「取引機能」の項目をご覧ください。
Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Торговые функции - Документация по MQL5
 
rlx:

ex5ライブラリからインポートした関数を呼び出す

説明してください。読む https://www.mql5.com/ru/docs/runtime/imports

システムライブラリ(DLL)は、オペレーティングシステムの規則によってロードされます。ライブラリが既にロードされている場合(例えば、別のExpert Advisorや、並行して実行されている別のクライアント端末からも)、参照先は既にロードされているライブラリとなります。

ex5ライブラリはどのようにロードされますか?ライブラリが既にロードされている場合(例えば、他のExpert Advisorや、並行して実行されている他のクライアント端末からもロードされている場合)

そしてやはり、ex5ライブラリのインスタンスを1つだけ読み込むようにする方法です。

そして、さらにEAがこのインスタンスにのみ接続するようになります。

ライブラリーを作りました。

#property library
static int      i=0;
int lib[10 000 000]; /// разделил пробелами для наглядности
int Get(void) export {return(i++);}

Expert Advisorを作成し、その中にライブラリが含まれています。

#import "lib.ex5"
  int Get(void);
#import
void OnTick(){}

1.Expert Advisorが1つもロードされていない。terminal.exeのプロセスは、91,000KBです。

2.EURUSDにExpert Advisorを1つ接続する。Terminal.exeプロセス -- 131 000 KB.(+41 MB)です。

3.GBPUSDに同じExpert Advisorを接続(追加)。terminal.exeプロセス - 171 000KB。(+41MB)。

どのようにMT5の手段によってのみ(クラスやライブラリやスクリプト、EAなどを通じて)共同で特定のデータ(動的に変更されます)へのアクセスを作成するのですか?

PS// 両方やってみた

static  int lib[10 000 000]
とにかく、EAごとに異なるライブラリのインスタンスがロードされます。
 

rlx:

EAごとに異なるライブラリのインスタンスがロードされることに変わりはありません。

グローバル ターミナル変数で実装することも可能でしょう。つまり、どちらのインスタンスもターミナルのグローバル変数を使用して計算を行います。
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
rlx:

それでも、ex5のインスタンスを1つだけ読み込むようにするにはどうすればよいのでしょうか。

そして、それ以降のEAはこのインスタンスにのみ接続することになります。

ライブラリーを作りました。

私はこのライブラリを含むExpert Advisorを作成しました。

1.Expert Advisorが1つもロードされない。terminal.exeのプロセスは、91,000KBです。

2.EURUSDにExpert Advisorを1つ接続する。Terminal.exeプロセス -- 131 000 KB.(+41 MB)です。

3.GBPUSDに同じExpert Advisorを接続(追加)。terminal.exeプロセス - 171 000KB。(+41MB)。

どのようにMT5の手段によってのみ(クラスやライブラリやスクリプト、EAなどを通じて)共同で特定のデータ(動的に変更されます)へのアクセスを作成するのですか?

PS// 両方やってみた

EAごとに異なるライブラリのインスタンスがロードされることに変わりはありません。

グローバル ターミナル変数が役に立つと思うし、ファイルにデータを書き込むこともできる
 
tol64:
グローバル ターミナル変数で実装できるかもしれませんね。つまり、どちらのインスタンスもグローバルターミナル変数を使用して計算を行う。
sergey1294 です。
グローバルターミナル変数 が役に立つと思いますし、データをファイルに書き込むことも可能です

ご指摘ありがとうございます。

もしかしたら、他の方法があるかもしれません。

 
rlx:

ご指摘ありがとうございます。

もしかしたら、他の方法があるかもしれません。

同じデータを異なるEA、スクリプト、インジケータで使用する方法は他にはないと思います
 
sergey1294:
同じデータを異なるExpert Advisor、スクリプト、インジケータで使用する方法は他にないと思います。

できればいいんですけどね。

例えば、こんなバリエーションを作ってみました。グローバル変数 で実装することはできません。

advisor.ex5

struct Info
  {
   uint      id;
   uint   info1;
   uint   info2;
   double info3;
  };
Info   test;
void OnTick()
  {
//---
   test.info3 = 78;
  }
bool  GetInfo(Info& massiv[]) export
  {
   ArrayResize(massiv, 10);
   massiv[0].id = 123;
   massiv[0].info1= 56;
   massiv[0].info3=test.info3;
   return(true);
  }

トレーダー.ex5

struct Info
  {
   uint      id;
   uint   info1;
   uint   info2;
   double info3;
  };
#import "advisor.ex5"
  bool  GetInfo(Info& massiv[]);
#import
void OnTick()
  {
   Info req[];
   GetInfo(req);
   Print(req[0].info3);
  }

配列を渡す!!構造!!この配列を埋める別のExpert Advisorに。

このコードは正しく動作します。 BUT trader.ex5 は、すでに実行されているadvisor.ex5 にリンクするのではなく、advisor.ex5 の別のインスタンスを作成します。

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5