MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1260

 
Valeriy Yastremskiy:

よくわからないのですが、毎ティックごとにポジションの状態を照会する以外に、どのようにしてポジションがクローズされた瞬間を追跡できるのでしょうか?もちろん、すべてのポジションに問い合わせがあるわけではありませんが、それでもすべてのティックに問い合わせがあることに変わりはありません。

ドキュメントをよく見てください。

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
При обрабокте транзакций типа TRADE_TRANSACTION_REQUEST для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction() – Отправка торгового запроса на покупку приводит к цепи торговых транзакций, которые совершаются на торговом счете: 1) запрос  принимается на обработку, 2) далее для...
 
Yevhenii Levchenko:
すべてのティックでチェックされるわけではありません。信号があればチェックを開始し、取引を開始します。以上です :)

mql4では、コックさん***がいないため、管理人さんが。mql5についての質問でした

 
Alexey Viktorov:

ドキュメントをよく見てください。

ありがとうございます。オーダーに置き換えてみると、より分かりやすくなります。受注発注の実行が取引になっているのは見たことがない。一般に、記述や実装が難しいです)))
でも、そうなんです。mt4 にはOnTradeTransaction()ありません
 
Valeriy Yastremskiy:
ありがとうございます。オーダーに置き換えると分かりやすくなります。受注オーダーの実行が取引になるとは。全てにおいて、複雑な書き方、実装になっています))
そのまま、ですね。mt4 にはOnTradeTransaction()ありません

自分の用語で代用せず、今ある用語を受け入れるようにしたほうがいい。そのうち慣れるし、言語によっては理解できるようになる。逆に、MT4では、成行注文はポジションと呼ぶのがよいでしょう。そう理解する人が多いのです。

 
Alexey Viktorov:

自分の言葉で代用するのではなく、用語をそのまま受け入れるようにしたほうがいいのではないでしょうか。時間が経つと慣れてきて、どの言語かによって理解できるようになります。逆に、MT4では成行注文はポジションと呼ぶほうがよいでしょう。それが、多くの人に理解されることです。

謎の理解)) テイクプロフィット、ストップロスは注文です。注文が明確になる。mt4では、注文はオーダーであり、トレードであり、ポジションであることから、混乱が生じます。だから、mt5で注文と言っているのであって、注文を意味しているのです)
 

このような構造体をどのように初期化するのか?

struct Data
  {
   double            open[];
   double            high[];
   double            low[];
   double            close[];
  };

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка
 
Fast235:

このような構造体をどのように初期化するのか?

4から5まで。構文がわからない。論理的には2次元配列であるべきだと思われます。
 
Fast235:

このような構造体をどのように初期化するのか?

まさか(構造体の各フィールドを1つずつ指定するのみ)

配列のサイズを設定する必要がある場合、そのためのコンストラクタを書くことができますが、問題が発生します - 構文上、コンストラクタで構造体の配列を作成することはできません。

解決策 - 構造体の代わりにクラスを使用し、ポインタを使用 します。そして、クラスのコンストラクタで配列のサイズを初期化し、データをそれらにコピーすることができます。


Valeriy Yastremskiy:
4 to 5.構文がわからない。論理的には2次元配列になっているはずです。
struct S
  {
   int a;
   double b;
  };

//+------------------------------------------------------------------+
void OnStart()
{
   S s[2] = {{1, 1.1},{9, 9.9}};
   ArrayPrint(s);
}
//+------------------------------------------------------------------+

2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b].

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1.10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

 
Fast235:

このような構造体をどのように初期化するのか?

   Data rates[5]= {0.0,0.0,0.0,0.0}; //ошибка

初期化とゼロ化は違います。あなたの試行錯誤から判断して、ゼロイングがこのようなものであれば

  ZeroMemory(rates);
 
Igor Makanu:

まさか(構造体の各フィールドを1つずつ指定するのみ)

配列のサイズを設定する必要がある場合、そのためのコンストラクタを書くことができますが、問題が発生します - 構文上、コンストラクタで構造体の配列を作成することはできません。

解決策 - 構造体の代わりにクラスを使用し、ポインタを使用 します。そうすれば、クラスのコンストラクタで配列のサイズを初期化し、データをそこにコピーすることができます。


2020.09.23 08:27:09.554 tst (EURUSD,H1) [a] [b].

2020.09.23 08:27:09.554 tst (EURUSD,H1) [0] 1 1.10000

2020.09.23 08:27:09.554 tst (EURUSD,H1) [1] 9 9.90000

ありがとうございます。括弧))) not 配列構文))