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

 
MakarFX:

EAがサーバーに与える 負荷はどのように判断すればよいですか?

1ティックごとに、アスク、ビッド、スプレッド、TICKVALUEを尋ねます。

私の理解が正しければ、プロファイラーが役に立ちます。しかし、負荷は同じではないことを理解しておく必要があります。リクエストの実行に費やされる時間やCPUの負荷のことです。1つのウィンドウに1つのシンボルにつき1つのExpert Advisorがあれば、OKです。しかし、1台のマシンで10台の端末に40シンボルなどで120個のウィンドウがあると、マシンがフリーズする可能性があります)。

 
Aleksei Stepanenko:

どうだろう、バトルでやってみるのもいいかもしれない。あるいは、オプションでINT_MAX?


はい、そうやって計算しています。

また、土日を含むデートからデートまでが別物です。

ポイント・パー・セカンド、はい読み取れます。また、TFが低いと速度が速くなり、航続距離が短くなります。

_     ;qstr7_41;_;EURUSD;_TF_;1; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:25
2020.10.23 14:34:20; [i]= ;13; VTrend[i] = ;25; SumVTrend= ;97; AbsVTrend= ;341; pos= ;8;SumVTrendPos= ;339; neg= ;7; SumVTrendNeg= ;-345
2020.10.23 14:34:20; [i]= ;2; VTrend1[i] = ;272; SumVTrend1= ;17; AbsVTrend1= ;137; pos1= ;2;SumVTrendPos1= ;-84; neg1= ;2; SumVTrendNeg1= ;-84
_     ;qstr7_41;_;EURUSD;_TF_;5; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:36;
 2020.10.23 14:34:31; [i]= ;15; VTrend[i] = ;414; SumVTrend= ;47; AbsVTrend= ;124; pos= ;9;SumVTrendPos= ;160; neg= ;8; SumVTrendNeg= ;-82
2020.10.23 14:34:31; [i]= ;2; VTrend1[i] = ;-32; SumVTrend1= ;63; AbsVTrend1= ;83; pos1= ;2;SumVTrendPos1= ;37; neg1= ;2; SumVTrendNeg1= ;-32
_     ;qstr7_41;_;EURUSD;_TF_;1440; Имя файла ;QstrV.csv; Локальное время ;2020.10.26 15:42:42;
2020.10.26 14:42:42; [i]= ;14; VTrend[i] = ;-26; SumVTrend= ;3; AbsVTrend= ;9; pos= ;9;SumVTrendPos= ;9; neg= ;7; SumVTrendNeg= ;-11
2020.10.26 14:42:42; [i]= ;1; VTrend1[i] = ;-7; SumVTrend1= ;-7; AbsVTrend1= ;7; pos1= ;1;SumVTrendPos1= ;0; neg1= ;2; SumVTrendNeg1= ;-7
 
Valeriy Yastremskiy:

私の理解が正しければ、プロファイラーが役に立ちます。しかし、負荷が違うことを理解する必要があります。これは、クエリの実行に費やされる時間、あるいはマシンのCPU負荷である。1つのウィンドウに1つのシンボルにつき1つのExpert Advisorがあれば、OKです。また、1台のマシンで10台の端末に40シンボルなどで120個のウィンドウがあると、マシンがフリーズする可能性があります)。

MQL4からの端末データを何度もアクセスする必要がある場合は、OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716 とすることは既に説明しました。

同じように現在の価格を取得するテストができます - 出力は1秒間に数百万回増加するので、同様に1ティックあたり100500回使用することができると思います


マーケットウォッチウィンドウに表示されるシンボルの数が多ければ多いほど、端末の負荷も大きくなります。

つまり、端末を賢く使えば、何もフリーズすることはありません。マーケットウォッチウィンドウには、使用する10個のシンボルがあります。


同時に開くことのできるチャートの数は確認していませんが、ヒストリーを1000本までに制限すれば、数十個のチャートウィンドウを問題なく開くことができると思います。

 

皆さん、ごきげんよう。

mql5の勉強を始めました(mql4の後)。mql4には、日付と時間という機能グループがあります。5に同じグループがあります。しかし、この5つの機能群は、4つの機能群に比べると、かなり少なくなっています。5には、現在の時、分、秒の値を返す関数はありません。などの機能があります。
例えば、4番目には、現在の時間の値を返すHour()関数があった。5にはそのような機能はありません。
QUESTION

5のどの関数がHour() と類似しているか、また4のDate and Time関数グループの他の関数で5の類似グループに ないものはどれか。

よろしくお願いします。

 
Igor Makanu:

MQL4から端末データに繰り返しアクセスする必要があるかどうかは、すでに説明したとおりですが、次にOrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716

1秒間に数百万回出力が増加するので、1ティックあたり100500回使うことも可能だと思います。


マーケットウォッチウィンドウに表示されるシンボルの数が多ければ多いほど、端末の負荷は大きくなり、それぞれ異なるシンボルからデータを呼び出すと、ラグも発生します

つまり、端末を賢く使えば、何もフリーズすることはありません。マーケットウォッチウィンドウには、使用する10個のシンボルがあります。


同時に開くことのできるチャートの数は確認していませんが、ヒストリーを1000本までに制限すれば、おそらく数十個のチャートウィンドウを問題なく開くことができると思います。

(ご指摘ありがとうございました)))つまり、合理的な要求であればすべてがうまくいくはずで、つまり低コストの(実行時間とCPU負荷の点で)要求であることを意味します。)

 
ANDREY:

皆さん、ごきげんよう。

mql5の勉強を始めました(mql4の後)。mql4には、日付と時間という機能グループがあります。5に同じグループがあります。しかし、この5つの機能群は、4つの機能群に比べると、かなり少なくなっています。5には、現在の時、分、秒の値を返す関数はありません。などの機能があります。
例えば、4番目には、現在の時間の値を返すHour()関数があった。5にはそのような機能はありません。
QUESTION

5のどの関数がHour()と 類似しているか、また4の日付と時刻の関数グループから、5の類似グループにない他の関数 があるか。

よろしくお願いします。

use https://www.mql5.com/ru/docs/dateandtime/timecurrent

第二版関数呼び出し

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
一般に、https://www.mql5.com/ru/docs/dateandtime/timetostruct
 
4Kのためのヒント。チャート上のマウスクリック座標を返す方法、できればバー番号で返したい。スクリプトが投げられた座標を見つけることしかできません。
 
Valeriy Yastremskiy:

ありがとうございます、思い出しました)))はい、当時は理解できなかったことがたくさんあります)ただ、合理的な要求ではすべてがうまくいくはずだと言いたかったのです。 これらはコスト(実行時間やCPU負荷)の安い要求です)。

コードが "汚い "と、どんなシステムでも台無しにすることができる

また、Ask/Bid価格へのアクセスが1tickあたり数十回でも発生するような合理的な使い方であれば、EAの性能に影響はありません(最大1~2%程度)。

つまり、1tickあたり数千回Ask/Bidにアクセスするアルゴリズムであれば、リソース(またはシステム機能の呼び出し/端末の環境)の使用ロジックは...となるはずです。アルゴリズムそのものを見直すか、アルゴリズム計算の前に一度Ask/Bidの 値を覚えておく必要がありそうです。




Valeriy Yastremskiy:
4kについてアドバイスをお願いします。チャート上でマウスをクリックした座標を戻る方法、できればバー番号で。スクリプトを投げた座標だけを探す。

おそらくChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice を探します。

only discussedhttps://www.mql5.com/ru/forum/353726

こちらもクリックについて議論しているスレッドですhttps://www.mql5.com/ru/forum/344607

 
Igor Makanu:

もし、アルゴリズムが1ティックあたり数千回のAsk/Bid価格を参照することを意味しているとしたら......。アルゴリズム自体を見直すか、アルゴリズム算出前に一度Ask/Bidの値を覚えておく必要がありそうです。




おそらく、ChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice を探してみてください。

only discussedhttps://www.mql5.com/ru/forum/353726

こちらもクリックについて議論しているスレッドですhttps://www.mql5.com/ru/forum/344607

一般に、ティックで価格を取得した場合、それが重要でなければ、OnTickの終わりまでそれを使って作業することができます。そして、スリップ防止に役立つリミッター)。

ローソク足をクリックして、その値をファイルに書き出したかったのです。

チャートイベント_マウス_ムーブ

 
Valeriy Yastremskiy:

一般に、ティックで価格を取得した場合、重要でなければOnTickの終わりまでそれを使って作業することができます。また、滑り止めのためのリミッター)

ローソク足をクリックして、その値をファイルに保存したいのですが。

チャートイベント_マウス_ムーブ

それで棒グラフの値段や時間を決めたいのかもしれませんね。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK)
   {
      int window = 0;
      datetime time;
      double   price;
      if(ChartXYToTimePrice(0, (int)lparam, (int)dparam, window, time, price))
      {
         Print("time = ", time, " ,price = ", price);
      }
   }
}
というか、これらはチャート上の時間+価格の値におけるマウスクリックの座標であり、バーはiBarShift() で定義されるべきものです。