エラー、バグ、質問 - ページ 2733

 
Geess:

文字列配列の代わりにuchar配列のみを渡す。こっちの方がシンプルでいい。
例えば、このように変換することができます。

MQL4とMQL5で同じように動作します

dllからMQLに値を返す必要がある場合、いずれにしてもMQL側でデータを受け取るためのバッファを用意する必要があります。

全部、説明すると長くなるので、もう全部やりました、ちょっとだけ質問させてください。

ありがとうございました。

 
MT5 (build 2402)で、名前空間内のオーバーロードされた関数の呼び出しの優先順位に問題がある不具合を修正しました。
1) グローバルネームスペースの関数がオーバーロードされた場合。
2)システム機能に負荷がかかっている場合。

void func(){
   printf("1");
}
      
namespace A{
   void func(){
      printf("2");
   }
   bool OrderSend(const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
      printf("2");
      return true;
   }
      
   class B{
      public:      
      void test(){
         func();                             // PRINT: 1   Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend(request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart(){    
   A::B b;
   b.test();
}
 

ごきげんよう。

スナイパーエキスパートアドバイザーを持っていますが、MT4 Alpariの新しいビルドで動作しません、それを修正する方法はありますか?チャートにもインストールされていません。1090ビルドで動作しています。

MT4の登録は済んでいるのですが、インターネットに接続できず、「Old version」と表示されます。

削除済み  
valera_nur:

ごきげんよう。

スナイパーエキスパートアドバイザーを持っていますが、MT4 Alpariの新しいビルドで動作しません、それを修正する方法はありますか?チャートにもインストールされていません。1090ビルドで動作しています。

しかし、1090ビルドではMT4ターミナルがインターネットに接続できず、「Old version」と表示されます。

Expert Advisorのソースファイルをお持ちの方は、Freelanceに申請してください。彼らはあなたを助けてくれるでしょう。

もちろん、Expert Advisorの作者に直接連絡するのが一番良い方法です。

 

.Net上のWinFormsでウィンドウ内にグラフィカルなテーブルを作成するMQL5用のDLLを書きました。 MQL4用のネイティブ・コールにコードを移植しました。

表中の5列、5行の更新速度を評価するために速度を測定しました。

  for(int j = 0; j < 3; j++)
   {
      uint start = GetTickCount();
      for(int i = 0; i < 100000; i++)
      {
         string s = (string)(i) + ";" + (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" +  (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n";
         TBL_FillAllTable(htbl, s);
      }
      uint time = GetTickCount() - start;
      PrintFormat("Цикл  %d время = %d ms", j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5です。

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) Cycle 0 time = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Cycle 1 time = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Cycle 2 time = 143750 ms

MQL4です。

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: サイクル2時間 = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: タイムフレーム1 = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: Øècle 0 time = 67062 ms


dllのコードは99%同じです。私は、記事https://www.mql5.com/ru/articles/249 の例を使ってMQL4で移植しました。


私には大きな違いに見えます。

ファイル:
tst_winforms.jpg  239 kb
 
あなたのライブラリコードとMQLのフルコードを添付して、あなたがチェックし、100%再現できるようにします。
 
Renat Fatkhullin:
ライブラリコードとMQLのフルコードを添付して、確認と100%の再現ができるようにしてください。

以下はテストスクリプトです。

プロジェクトや VSを原則的にPMに送ることができる

 

上記のテストが実行されました。

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.515 Terminal Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Gb メモリ, 149 / 237 Gb ディスク, IE 11, UAC, GMT+4

ノートパソコンで端末が更新 されないままです。

2020.05.05 23:37:15.336 Terminal MetaTrader 5 - FXOpen x64build 2280 開始 (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 Terminal Windows 10 (build 18363) x64, IE 11, UAC, Intel Core i3 M 380 @ 2.53GHz, Memory: 1071 / 2804 Mb, Disk: 149 / 237 Gb, GMT+4。

添付した古いビルドコードで実行したところ、テスト時間が改善されました。

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Cycle 0 time = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Cycle 1 time = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Cycle 2 time = 69000 ms

削除済み  
Igor Makanu:

上記のテストが実行されました。

私のノートパソコンには、まだ更新されていない端末が あります。

添付したコードを古いビルドで実行したところ、より良いテスト時間が得られました。

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Cycle 0 time = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Cycle 1 time = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Cycle 2 time = 69000 ms

私の2404でもMT4と同じ速度が出ています。

 
Geess:

2404でもMT4と同じ速度が出ています。

MT5がPCのリソースに負担をかけるようになったのではと、うすうす感じてはいるのですが、明日自分のPCで確認してみます。

そうそう、ここでもう一つ、新しいビルドのPC構成の行に戸惑いました。私の投稿の上に、なぜか新しいビルドがノートPCのメモリについて書いているのです。

0 / 2 Gb メモリ

起動条件は同じで、MEと1台の端末だけが動いている状態でした

ZS: でも、WinFormのリフレッシュレートが1ms以下なんです......。不覚にも;)