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

 

開発者の皆様へ。

ビルド1281 MT5 Windows 7 64

今日、更新されました。


プロセスは終わりがないようです :-)

再起動すると、また再起動したくなり、その繰り返しです。

2016.03.30 10:33:31.903 ネットワーク '3143179': 取引が有効化されました - ネッティングモード

2016.03.30 10:33:31.903 ネットワーク '3143179': MetaQuotes Software Corp.とターミナルが同期しました。

2016.03.30 10:33:31.829 ネットワーク '3143179': 前回成功した認証は 2016.03.30 10:33:05 に実行されました。

2016.03.30 10:33:31.829 ネットワーク '3143179': Access Point EU Frankfurt 経由で MetaQuotes-Demo で認可 (ping: 70.19 ms)されました。

2016.03.30 10:33:31.759 LiveUpdate 新しいターミナルビルド1286(IDE:1286、Tester:1286)が利用可能です。

 
Vladislav Andruschenko:

開発者の皆様へ。

ビルド1281 MT5 Windows 7 64

今日、更新されました。


プロセスは終わりがないようです :-)

再起動後、また再起動したい、など。

2016.03.30 10:33:31.903 ネットワーク '3143179': 取引が有効化されました - ネッティングモード

2016.03.30 10:33:31.903 ネットワーク '3143179': MetaQuotes Software Corp.とターミナルが同期しました。

2016.03.30 10:33:31.829 ネットワーク '3143179': Access Point EU Frankfurt 経由で MetaQuotes-Demo で認可 (ping: 70.19 ms)されました。

2016.03.30 10:33:31.759 LiveUpdate 新しいターミナルビルド1286(IDE:1286、Tester:1286)が利用可能です。

ログを全部持ってきてください。
 
2016.03.30 10:48:54.402 Network '3143179': trading has been enabled - netting mode
2016.03.30 10:48:54.402 Network '3143179': terminal synchronized with MetaQuotes Software Corp.
2016.03.30 10:48:54.301 Network '3143179': previous successful authorization performed from  on 2016.03.30 10:33:30
2016.03.30 10:48:54.301 Network '3143179': authorized on MetaQuotes-Demo through Access Point EU Frankfurt (ping: 70.19 ms)
2016.03.30 10:48:54.230 LiveUpdate      new terminal build 1286 (IDE: 1286, Tester: 1286) is available
2016.03.30 10:48:54.021 MQL5.community  activated for 'Vladon', balance: 98.50
2016.03.30 10:48:53.122 Terminal        G:\РАБОТА\expforex\!!!$$$---MQL5---!!!\ROBOFOREX MT5
2016.03.30 10:48:53.122 Terminal        Windows 7 Ultimate (x64 based PC), IE 11.00, Intel Core i7-6700  @ 3.40 GHz, RAM: 21297 / 32684 Mb, HDD: 9730 / 1498122 Mb, GMT+02:00
2016.03.30 10:48:53.115 Terminal        MetaTrader 5 - RoboForex x64 build 1281 started (ROBOFOREX LP)
 
Vladislav Andruschenko:
これらは完全なログではありません。servicedeskに書き込む
 
comp:

OnCalculateの実行中に手動でインジケータを削除すると、OnDeinitがすぐに実行され、時にはまだ終了していないOnCalculateと同時に実行されるというのは本当でしょうか?

という感じですね。クラスは、デストラクタで解放される他のクラスのインスタンスの動的配列を持って います。

デストラクタは、OnDeinitからdeleteの間のみ呼び出される。

そこで、OnCalculate中にこのチェックを外すと、誰かがデストラクタを呼んだかのように、上記の配列が勝手にクリアされ始めます。この誰か-OnDeinit。

その結果、クラスのインスタンスではなくNULLを取得することになります。

OnCalculateで_StopFlagを使おうとしたのですが、うまくいきません。

OnDeinitをOnCalculateの実行中ではなく、実行後に実行させるにはどうしたらよいですか?

OnDeinitからdeleteを取り除くと、NULLを受け取らなくなりました。しかし、ログでは論理的にリークしたメモリが表示されます。だから、OnDeinitであることは間違いない。Sleepを入れてみました。しかし、Sleepはインジケータでは機能しないようです。こんな風にやってみたりもしました。

  void MySleep( const uint Pause ) const
  {
    const uint StartTime = GetTickCount();
    
    while(GetTickCount() - StartTime < Pause)
      ;
      
    return;
  }

インジケータはこれも無視するようです。

 
comp:

デバッグの際には、あらかじめ定義されたマクロを 使用しています。また、関連するパラメータを渡さずに、誰が関数/メソッドを呼び出したかを都合よく調べることは可能でしょうか?

内蔵のMQLツールは使えないので、自分でやる必要があります。例えば、デバッグバージョンでは、"called function name "パラメータを追加します。
 
comp:

ということになりそうです。このクラスは他のクラスのインスタンスの動的 配列を持ち、デストラクタで解放される。

デストラクタはdelete経由のOnDeinitでのみ呼び出されます。

そこで、OnCalculate中にこのチェックを外すと、誰かがデストラクタを呼んだかのように、上記の配列が勝手にクリアされ始めます。この誰か-OnDeinit。

その結果、クラスのインスタンスではなくNULLを取得することになります。

OnCalculateで_StopFlagを使おうとしたのですが、うまくいきません。

OnDeinitをOnCalculateの実行中ではなく、実行後に実行させるにはどうしたらよいですか?

OnDeinitからdeleteを取り除くと、NULLを受け取らなくなりました。しかし、ログでは論理的にリークしたメモリが表示されます。だから、OnDeinitであることは間違いない。Sleepを入れてみました。しかし、Sleepはインジケータでは機能しないようです。こんな風にやってみたりもしました。

インジケータはこれも無視するようです。

サービスデスクにリクエストして、OnDeinit関数のコードを教えてください。
 
Ilyas:
サービスデスクにリクエストを出し、OnDeinit関数のコードを教えてください。

OnCalculateを 人為的に長時間実行させる方法を教えてください。スリップでバツが悪い。

複雑なインジケータ(計算量が多い)のみで再生しています。計算を削除すると、OnCalculateがほぼ瞬時に実行され、すべてがうまくいきます。

 
comp:

OnDeinitをOnCalculateの途中ではなく、後に実行させるにはどうしたらよいですか?


OnDeinitは常に OnCalculateの 後に実行されます。
 
comp:

OnCalculateを人為的に長時間実行させる方法を教えてください。スリップでバツが悪い。

複雑なインジケータ(計算量が多い)のみで再生しています。計算を削除すると、OnCalculateがほぼ瞬時に実行されるため、すべてがうまくいきます。

#import "kernel32.dll"
    void Sleep(uint);
#import



 kernel32::Sleep(10000);