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

 

新しいビルド(1178)にアップグレードした後、Expert Advisorをチャートにロードすると、プログラムがチャートからアンロードされた状態でログにこのエラーが表示されます。

2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        00: 0x00000000028E1F21
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F37 C6467000          mov        byte [rsi+0x70], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F30 C686AD02000000    mov        byte [rsi+0x2ad], 0x0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2E 7 CA0              jl         0x28e1ed0
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F2C 39 C3              cmp        ebx, eax
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F26 8 B868B000000      mov        eax, [rsi+0x8b]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)                      00000000028 E1F24 FFC3              inc        ebx
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)           crash -->  00000000028 E1F21 FF5728            call       qword near [rdi+0x28]
2015.10.14 21:04:50.571 TestLibrary (EURUSD,M30)        Access violation at 0x00000000028E1F21 read to 0x0000000D5D01E928 in 'D:\#MetaTrader\MetaTrader 5 Test\MQL5\Experts\#TestLibrary\Article02\TestLibrary.ex5'

//---

私が理解する限り、この状況はCChartObject::Timeframes(OBJ_NO_PERIODS)メソッドを使用してグラフィックオブジェクトを隠そうとしたときに発生するものです。

P.S. いいえ、そうではありませんが、この問題は他の原因による可能性が高いです。ローカライズに挑戦し、サービスデスクで継続し、アプリケーションを開いた。

 
transcendreamer:
作者はすでにこのことに気づいていて、どうしてこうなったかを一生懸命考えています。

この点については、作者が熟考の上、修正しましたので、次回のアップデートで登場する予定です。

ブローカーが記録していない欠陥であった。

 
ビルド1178コンパイルエラー:'B' - テンプレートのミスマッチ
class A { template<typename T> A( T ) {} };
class B;
class B {};
以前はすべて順調だった
 
A100:
ビルド1178Compilation error:'B' - template mismatch but the before was fine.
ありがとうございます、確認させていただきます。
 
iCustom経由で呼び出されたインジケーターでOnTimerイベントが発生しないのはなぜですか?
 
Ilya Malev:
iCustomを通して呼び出されたインジケーターでOnTimerイベントが発生しないのはなぜですか?
アーキテクチャ上、タイマーイベントはチャートイベントであるため、この場合、インジケータはこのイベントを受信することができません。
 
Anton:
アーキテクチャ上、タイマーイベントはチャートイベントであるため、この場合、インジケータはこのイベントを受信することができません。
iCustom経由で呼び出されるインジケータを、ティックがない場合(週末など)にプログラムで 描画させる(OnCalculateコールを 呼び出す)にはどうすればよいですか?
 
このインディケータが順番に他のインディケータを呼び出す場合、OnInitを出た直後の最初のOnCalculateの 自動呼び出しでは、これらのインディケータのデータは計算されず、さらに、インディケータはOnCalculateを終了せずにそれらの計算を「待つ」ことができないのです。そして、最初の刻みが始まる週末の終わりまで、OnCalculateの次の呼び出しはない。この場合、OnTimerもOnChartEventもこのインジケータでは動作せず、データ受信時に再描画を呼び出すことになります。結局、DLLを使ってウィンドウのコンテキストメニューからチャートの「更新」を呼び出す方法しかないのですが、開発者がMT5でのインジケータの通常の動作のためにこの方法を計画したとは思えません。そうしないと、インジケータが表示されるまでこのボタンを押さなければならず、ユーザーは満足しないでしょう。
 
Ilya Malev:
このインディケータが順番に他のインディケータを呼び出すと、OnInitを出た直後の最初のOnCalculateの 自動呼び出しで、これらのインディケータのデータは計算されず、さらに、インディケータはOnCalculateを終了せずにその計算を「待つ」ことができなくなるのです。そして、最初の刻みが始まる週末の終わりまで、OnCalculateの次の呼び出しはない。この場合、OnTimerもOnChartEventもこのインジケータでは動作せず、データ受信時に再描画を呼び出すことになります。結局、DLLを使ってウィンドウのコンテキストメニューからチャートの「更新」を呼び出す方法しかないのですが、開発者がMT5でのインジケータの通常の動作のためにこの方法を計画したとは思えません。そうでなければ、ユーザーはインジケータが表示されるまでチャートの前でこのボタンを押しながら待たなければならず、これでは満足できないでしょう。

MT4用の場合。

これは動作しないのでしょうか?https://www.mql5.com/ru/code/11678

ChartRefresh
ChartRefresh
  • 投票: 11
  • 2014.08.13
  • Alexandr Bryzgalov
  • www.mql5.com
Скрипт для принудительно обновления текущего графика.
 
Alexandr Bryzgalov:
このように動作しないのですか?https://www.mql5.com/ru/code/11678

このスクリプトはMetaTrader 4用です :)

MT4では、すべてのデータを端末で計算してからmql4プログラムに受信します。