定義済みマクロ代入
デバッグプロセスを簡素化し、MQL5 プログラムの動作に関する情報を取得するには、コンパイルの時点で値が設定された特別なマクロ定数があります。これらの定数を使用する最も簡単な方法は、Print() 関数による値出力です。
定数 | 説明 |
__DATE__ | 時刻を含まないファイルコンパイルの日付(時間、分、秒は 0 )。 |
__DATETIME__ | ファイルコンパイルの日付と時刻。 |
__LINE__ | マクロが配置されているソースコードの行番号。 |
__FILE__ | 現在コンパイルされているファイルの名称。 |
__PATH__ | 現在コンパイルされているファイルへの絶対パス。 |
__FUNCTION__ | 本体にマクロが配置されている関数の名称。 |
__FUNCSIG__ | 本体にマクロが配置されている関数のシグネチャ。関数の完全な記述のロギングはオーバーロード関数の識別に役立つことがあります。 |
__MQLBUILD__, __MQL5BUILD__ | コンパイラのビルド番号。 |
例:
#property copyright "Copyright © 2009, MetaQuotes Software Corp." |
数学定数
特別な定数屠蘇の値は、数学的な表現のために予約されていますこれらの定数は数学関数を使用して値を計算する代わりにプログラムで使用することが出来ます。
定数 | 説明 | 値 |
M_E | e | 2.71828182845904523536 |
M_LOG2E | log2(e) | 1.44269504088896340736 |
M_LOG10E | log10(e) | 0.434294481903251827651 |
M_LN2 | ln(2) | 0.693147180559945309417 |
M_LN10 | ln(10) | 2.30258509299404568402 |
M_PI | pi | 3.14159265358979323846 |
M_PI_2 | pi/2 | 1.57079632679489661923 |
M_PI_4 | pi/4 | 0.785398163397448309616 |
M_1_PI | 1/pi | 0.318309886183790671538 |
M_2_PI | 2/pi | 0.636619772367581343076 |
M_2_SQRTPI | 2/sqrt(pi) | 1.12837916709551257390 |
M_SQRT2 | sqrt(2) | 1.41421356237309504880 |
M_SQRT1_2 | 1/sqrt(2) | 0.707106781186547524401 |
例:
//+——————————————————————+ |
数値定数
単純な数値型は、それぞれ特定の種類のタスクのために意図され、正しく使用した場合 MQL5 プログラムの動作の最適化を可能にします。コードをより読みやすくして計算結果を正しく処理するために、いくつかの基本データ型に設定された制限に関する情報を受信出来る定数があります。
定数 | 説明 | 値 |
CHAR_MIN | char 型で表すことが出来る最小値。。 | -128 |
CHAR_MAX | char 型で表すことが出来る最大値。。 | 127 |
UCHAR_MAX | uchar 型で表すことが出来る最大値。。 | 255 |
SHORT_MIN | short 型で表すことが出来る最小値。。 | -32768 |
SHORT_MAX | short 型で表すことが出来る最大値。。 | 32767 |
USHORT_MAX | ushort 型で表すことが出来る最大値。。 | 65535 |
INT_MIN | int 型で表すことが出来る最小値。。 | -2147483648 |
INT_MAX | int 型で表すことが出来る最大値。。 | 2147483647 |
UINT_MAX | uint 型で表すことが出来る最大値。。 | 4294967295 |
LONG_MIN | long 型で表すことが出来る最小値。。 | -9223372036854775808 |
LONG_MAX | long 型で表すことが出来る最大値。。 | 9223372036854775807 |
ULONG_MAX | ulong 型で表すことが出来る最大値。。 | 18446744073709551615 |
DBL_MIN | double 型で表すことが出来る最小の正の値。 | 2.2250738585072014e-308 |
DBL_MAX | double 型で表すことが出来る最大値。。 | 1.7976931348623158e+308 |
DBL_EPSILON | 下記の条件を満たす最小値。 1.0+DBL_EPSILON != 1.0 (double 型) | 2.2204460492503131e-016 |
DBL_DIG | double 型の小数点以下の桁数。 | 15 |
DBL_MANT_DIG | double 型の仮数部のビット数。 | 53 |
DBL_MAX_10_EXP | double 型の指数度の 10 進数での最大値。 | 308 |
DBL_MAX_EXP | double 型の指数度の 2 進数での最大値。 | 1024 |
DBL_MIN_10_EXP | double 型の指数度の 10 進数での最小値。 | (-307) |
DBL_MIN_EXP | double 型の指数度の 2 進数での最小値。 | (-1021) |
FLT_MIN | float 型で表すことが出来る最小の正の値。 | 1.175494351e-38 |
FLT_MAX | float 型で表すことが出来る最大値。。 | 3.402823466e+38 |
FLT_EPSILON | 下記の条件を満たす最小値。 1.0+DBL_EPSILON != 1.0 (float 型) | 1.192092896e–07 |
FLT_DIG | float 型の小数点以下の桁数。 | 6 |
FLT_MANT_DIG | float 型の仮数部のビット数。 | 24 |
FLT_MAX_10_EXP | float 型の指数度の 10 進数での最大値。 | 38 |
FLT_MAX_EXP | float 型の指数度の 2 進数での最大値。 | 128 |
FLT_MIN_10_EXP | float 型の指数度の 10 進数での最小値。 | -37 |
FLT_MIN_EXP | float 型の指数度の 2 進数での最小値。 | (-125) |
例:
void OnStart() |
初期化解除の理由のコード
初期化解除の理由のコードは UninitializeReason() 関数から返されます。可能な値は下記の通りです。
定数 | 値 | 説明 |
REASON_PROGRAM | 0 | エキスパートアドバイザーが ExpertRemove() 関数を呼び出して操作を終了しました。 |
REASON_REMOVE | 1 | プログラムがチャートから削除されました。 |
REASON_RECOMPILE | 2 | プログラムが再コンパイルされました。 |
REASON_CHARTCHANGE | 3 | シンボルかチャート期間が変更されました。 |
REASON_CHARTCLOSE | 4 | チャートが閉じられました。 |
REASON_PARAMETERS | 5 | 入力パラメータがユーザ—によって変更されました。 |
REASON_ACCOUNT | 6 | 別のアカウントが有効化されるか、アカウントの設定変更によって取引サーバへの再接続が発生しました。 |
REASON_TEMPLATE | 7 | 新しいテンプレートが適用されました。 |
REASON_INITFAILED | 8 | この値は OnInit() ハンドラがゼロ以外の値を返したことを示します。 |
REASON_CLOSE | 9 | 端末が閉じられました。 |
初期化解除理由のコードは、また、所定の関数 OnDeinit(const int reason) のパラメータとしても渡されます。
例:
//+——————————————————————+ |
オブジェクトポインタのチェック
CheckPointer() 関数はオブジェクトポインタの型をチェックするのに使用されます。この関数は ENUM_POINTER_TYPE 列挙のいずれかの値を返します。不正なポインタが使用されると、プログラムの実行が直ちに終了されます。
new() 演算子で作成されたオブジェクトは POINTER_DYNAMIC 型です。この様なポインタとはdelete() 演算子 のみが使用されるべきです。
他の全てのポインタは、オブジェクトが MQL5 プログラム環境によって自動的に作成されたことを意味する POINTER_AUTOMATIC 型のものです。このようなオブジェクトは使用後に自動的に削除されます。
ENUM_POINTER_TYPE
定数 | 説明 |
POINTER_INVALID | 不正ポインタ。 |
POINTER_DYNAMIC | new() 演算子で作成されたオブジェクトのポインタ。 |
POINTER_AUTOMATIC | 自動的に(new() を使用せずに)作成されたオブジェクトのポインタ。 |
参照
ランタイムエラー、delete オブジェクト解除演算子、CheckPointer
その他の定数
CLR_NONE 定数は、色が存在しないことを概説するために使用され、指標のグラフィックオブジェクトやグラフィックシリーズはプロットされません。この定数はウェブカラー定数リストには含まれていませんが、カラー引数が必要なところならどこにでも適用することが出来ます。
INVALID_HANDLE 定数はハンドラのチェックに使用されます(FileOpen() 及び FileFindFirst() を参照)。
定数 | 説明 | 値 |
CHARTS_MAX | 端末内に同時に開けるチャートの最大数。 | 100 |
clrNONE | 無色。 | -1 |
EMPTY_VALUE | 指標バファ—の空値。 | DBL_MAX |
INVALID_HANDLE | 不正なハンドル。 | -1 |
IS_DEBUG_MODE | MQ5 プログラムをデバグモードで動作するフラグ。 | デバグモードではゼロ以外、それ以外はゼロ |
IS_PROFILE_MODE | MQ5 プログラムをプロファイルモードで動作するフラグ。 | プロファイルモードではゼロ以外、それ以外はゼロ |
NULL | すべの型でゼロ。 | 0 |
WHOLE_ARRAY | 配列の最後までに残っている要素の数を表します。配列全体が処理されます。 | -1 |
WRONG_VALUE | 定数は任意の列挙型に暗黙的にキャストされることが出来ます。 | -1 |
EMPTY_VALUE 定数は、通常、チャートには示されていない指標値に相当します。例えば、内蔵された 20時間軸の指標標準偏差では、履歴内の最初の19のバーは、チャートに示されていません。この指標ハンドルを iStdDev() 関数で作成し、指標値の配列を CopyBuffer(), でコピーした場合、値は EMPTY_VALUE に等しくなります。
指標がチャートに表示されてはいけない場合、カスタム指標に独自の空値を指定することが出来ます。この際、PlotIndexSetDouble() 関数を PLOT_EMPTY_VALUE 修飾子と使用します。
。NULL 定数は、基本データ型の変数やオブジェクトの構造やクラスのポインタに割り当てることが出来ます。文字列変数への NULL の割り当てはこの変数の完全な初期化解除を意味します。
WRONG_VALUE 定数は、不正の列挙の値を返す時に必要です。例えば、戻り値がこの列挙の値であることを知らせる必要がある場合です。例として、名称で指定されたオブジェクトの線のスタイルを返す CheckLineStyle() をみてみましょう。ObjectGetInteger() によるスタイルチェックの結果が true の場合、ENUM_LINE_STYLE からの値が返されます。その他の場合 WRONG_VALUE が返されます。
void OnStart() |
WHOLE_ARRAY 定数は、処理された配列の要素数を指定することを必要とする関数を対象としています。
- ArrayCopy();
- ArrayMinimum();
- ArrayMaximum();
- FileReadArray();
- FileWriteArray().
指定された位置から配列の最後までの全ての値が処理されなければならないことを指定する場合は、WHOLE_ARRAY 値を指定する必要があります。
IS_PROFILE_MODE 定数は、プロファイルモードでデータが正しく収集されるようにプログラムの動作を変更することが出来ます。プロファイリングは個々のプログラムフラグメント(通常、関数を含む)の実行時間を測定し、ならびに呼び出しの数を計算することが出来ます。この例のように、プロファイリングモードで実行時間を決定するためにはSleep() 関数の呼び出しは無効にすることが出来ます。
//— Sleep はプロファイリング結果に大影響(変化)を与えることがある |
IS_PROFILE_MODE は従来のモードではゼロに設定される定数値で、コンパイル時にコンパイラによって設定されます。プロファイリングモードでプログラムを起動すると、特別なコンパイルが行われ、IS_PROFILE_MODE はゼロ以外の値に置き換えられます。
IS_DEBUG_MODE 定数はデバッグモードでの MQL5 プログラムの動作をわずかに変更する必要がある場合に役立ちます。例えば、デバッグモードでは、端末ログに追加のデバッグ情報を表示したり、チャートに追加のグラフィックオブジェクトを作成する必要があります。
次の例は、ラベルオブジェクトを作成し、スクリプトの実行モードに応じてその記述や色を設定します。MetaEditor でスクリプトをデバッグモードで実行するには、F5 を押します。端末でブラウザウィンドウからスクリプトを実行すると、オブジェクトラベルの色とテキストが異なります。
例:
//+——————————————————————+ |
クリプトメソッド
ENUM_CRYPT_METHOD 列挙は、データ変換方法を指定するために使用され CryptEncode() 及び CryptDecode() 関数で使用されます。
ENUM_CRYPT_METHOD
定数 | 説明 |
CRYPT_BASE64 | BASE64 |
CRYPT_AES128 | 128ビット(16バイト)キーでの AES 暗号化。 |
CRYPT_AES256 | 256 ビット(32 バイト)キーでの AES 暗号化。 |
CRYPT_DES | 56ビット(7バイト)キーでの DES 暗号化。 |
CRYPT_HASH_SHA1 | SHA1 HASH の計算。 |
CRYPT_HASH_SHA256 | SHA256 HASH の計算。 |
CRYPT_HASH_MD5 | MD5 HASH の計算。 |
CRYPT_ARCH_ZIP | ZIP アーカイブ。 |
参照
参照
DebugBreak、MQL5 プログラム実行プロパティ、CryptEncode()、CryptDecode()
Originally posted 2019-07-29 22:47:01.