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

 
Vladimir Pastushak:

すべて正常範囲内...


以前、インジケータがファイルからデータを配列に読み込むときに似たようなことがありましたが、今は思い出せません...。

 

を待つオーダーを作成。

MQL5:エラー
未処理、開始:2018.01.24 16:17、#1940209

端末のバージョンとビットモード

64 1755

問題の内容

インジケーターのアンロードをしない。

インジケータをインストールするとインジケータが動作し、インジケータを削除すると削除され、リストにはありませんが、削除されていないかのようにオブジェクトを描画し、動作します。

チャートを開き直すと、別のシンボルのチャートでも動作しています。

10分ほど動作していますが、ループサイクルはなく、すべて正常な範囲です。
 

コンパイル時のエラー

#define \
    MACRO
また、ALLディレクティブで改行が機能することが期待された
 
Vladimir Pastushak:

を待つオーダーを作成。

MQL5:エラー
未処理、開始:2018.01.24 16:17、#1940209

端末のバージョンとビットモード

64 1755

問題の内容

インジケーターのアンロードをしない。

インジケータをインストールするとインジケータが動作し、インジケータを削除すると削除され、リストにはありませんが、削除されていないかのようにオブジェクトを描画し、動作します。

チャートを開き直すと、別の楽器のチャートでも動作します。

10分ほど動作していますが、ループはなく、すべて正常範囲です。コードを添付しました...

同じ問題

 
Evgeny Belyaev:

同じ問題


再帰性?

 
Evgeny Belyaev:

同じ問題


IndicatorRelease()。

 

コンパイル時のエラー

int  TerminalInfoInteger( 
   int  property_id      // идентификатор свойства 
   );

添付ファイルのコンパイルが必要

そんな「空間」をどこで手に入れたのだろう。ここhttps://www.mql5.com/ru/docs/check/terminalinfointeger、たくさんあります。Microsoft Edgeでフラグメントをマウスでコピーしてみました

Документация по MQL5: Проверка состояния / TerminalInfoInteger
Документация по MQL5: Проверка состояния / TerminalInfoInteger
  • www.mql5.com
Проверка состояния / TerminalInfoInteger - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
ファイル:
Error157.mq5  1 kb
 

紛らわしいマクロのハイライト - コンテキストに依存しない

//вариант A
#ifdef   MACRO //1
#endif
#define  MACRO //2
#ifdef   MACRO //3
#endif
#undef   MACRO //4
#ifdef   MACRO //5
#endif

常時存在(選択肢B)または常時不在(選択肢A)

//вариант B
#ifdef   MACRO //1
#endif
#define  MACRO //2
#ifdef   MACRO //3
#endif
//#undef  MACRO //4
#ifdef   MACRO //5
#endif
特定の文字列でマクロが定義されている場合はハイライトされ、定義されていない場合はハイライトされないと予想された。そうでなければ、ハイライトの有無が何を意味するのかがわからない
 

MetaEditorでC2C++ファイルをハイライト表示する。

https://www.mql5.com/ru/docs/basis/preprosessor/constant

Макрос __MQL5__  доступен при компиляции файла *.mq5, при компиляции *.mq4 доступен макрос __MQL4__.

これらのマクロ(および __MQL__ )は、.c、cpp、.h 拡張子のファイルをハイライトする際には利用できないものとします。

//Test.h
#ifndef __MQL__
#define  MACRO
#endif
//Test.mq5
#include "Test.h"
#ifdef  MACRO //не подсвечивается... нормально
#endif
//Test.cpp
#include "Test.h"
#ifdef  MACRO //не подсвечивается... но этот .cpp файл не предназначен для компиляции в MetaEditor,
             //а компилируется в С\С++, где макрос __MQL__ не является предопределенным
             //в результате подсвечивается то что не должно и наоборот не подсвечивается что должно
#endif

これは、(前回と同様に)誤った、誤解を招くような強調表示は、それがない場合よりもはるかに悪い場合です。

Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
Документация по MQL5: Основы языка / Препроцессор / Макроподстановка (#define)
  • www.mql5.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
 

MetaEditorに_WIN64のような定義済みマクロがないことについて、ユーザーのフォーラムで繰り返し議論に遭遇しています。MetaEditorは32-64ビットのユニバーサルコードを同時に生成するので必要ない、というのが運営側の回答だった。

同時に、多くの人がhttps://www.mql5.com/ru/forum/225498/page2#comment_6401835 の アライメントを構造体にフィールドを付加して使っています

そして実際、既製の.dll(もう変更できない)を使用する場合、追加のアライメントなしではやっていけないのです。しかし、x86 と x64 では、この追加部分が異なって見えるかもしれません。つまり、TerminalInfoInteger( TERMINAL_X64 ) が動作しない .mq5 ファイルのコンパイル段階で構造体が定義されているので、_WIN64 アナログがまだ必要なのです。

//Test.mq5
#ifdef _WIN64
#define  ALIGN (8-2) //добавить к элементу структуры 6 байт
#else
#define  ALING (4-2) //добавить к элементу структуры 2 байта
#endif

あとは、余計な情報を入れないことです。些細なことを節約した結果、エラい目に遭う危険性がある

Передача структуры в dll C++
Передача структуры в dll C++
  • 2018.01.26
  • www.mql5.com
Пишу dll, которая будет выполнять логику, и собственно возник вопрос. Можно ли передавать в dll структуру данных? Т.е...