事前定義変数(The predefined Variables)
MQL4 (MT4)の事前定義変数の概要と使い方をChatGPTに確認しました。
参考にして下さい。
使用GPTs:EA Creator
概要
MQL4プログラム(エキスパートアドバイザー、スクリプト、またはカスタムインジケーター)が起動される際、現在の価格チャートの状態を反映する一連の事前定義された変数がサポートされています。
これらの事前定義された変数の値は、MQL4プログラムが起動される前にクライアント端末によって設定されます。事前定義された変数は定数であり、MQL4プログラムから変更することはできません。ただし、特別な変数_LastError
は例外であり、ResetLastError
関数によって0にリセットすることができます。
変数一覧
MetaTrader 4 (MT4) プラットフォームのMQL4言語における事前定義された変数の一覧表とその説明です。これらの変数は、エキスパートアドバイザーやカスタムインジケーターなどのMQL4プログラム内で直接使用できます。
変数名 | 説明 |
---|---|
_Digits | 現在のシンボルの小数点以下の桁数 |
_Point | 現在のシンボルのポイントサイズ(見積もり通貨) |
_LastError | 最後に発生したエラーコード |
_Period | 現在のチャートの時間枠 |
_RandomSeed | 擬似乱数ジェネレータの現在の状態 |
_StopFlag | プログラム停止フラグ |
_Symbol | 現在のチャートのシンボル名 |
_UninitReason | 初期化解除の理由コード |
Ask | 現在のシンボルの最新の売り手価格(アスク価格) |
Bars | 現在のチャートのバー数 |
Bid | 現在のシンボルの最新の買い手価格(ビッド価格) |
Close | 各バーの終値を含むシリーズ配列 |
Digits | 現在のシンボル価格の小数点以下の桁数 |
High | 各バーの最高価格を含むシリーズ配列 |
Low | 各バーの最低価格を含むシリーズ配列 |
Open | 各バーの始値を含むシリーズ配列 |
Point | 現在のシンボルのポイント値(見積もり通貨) |
Time | 各バーのオープン時間を含むシリーズ配列 |
Volume | 各バーのティックボリュームを含むシリーズ配列 |
これらの変数は、MQL4プログラムにおいて非常に頻繁に使用され、価格データの取得、トレード決定のロジック構築、チャート情報の取得など、さまざまな目的で利用されます。
使用例
事前定義されたMQL4変数の使用例です。
_Digitsと_Pointを使用した例
これらの変数を使用して、現在のシンボルの価格を正確な桁数で表示し、1ポイントの価値を計算します。
void OnStart()
{
Print("小数点以下の桁数: ", _Digits);
Print("1ポイントの価値: ", _Point);
double price = NormalizeDouble(Bid, _Digits);
Print("現在のビッド価格: ", price);
}
_LastErrorを使用したエラーハンドリングの例
エラーをチェックし、エラーが発生した場合にはそのエラーコードを表示します。
void OnStart()
{
// 何らかのトレード操作を試みる(例: 注文を開く)
bool result = OrderSend(_Symbol, OP_BUY, 0.1, Ask, 2, 0, 0, "", 0, 0, clrNONE);
if(!result)
{
int errorCode = GetLastError();
Print("エラーが発生しました。エラーコード: ", errorCode);
}
}
_Periodを使用した例
現在のチャートの時間枠を表示します。
void OnStart()
{
Print("現在のチャートの時間枠: ", _Period);
}
_RandomSeedを使用した例
擬似乱数ジェネレータのシード値を設定します。
void OnStart()
{
_RandomSeed = 12345; // シード値を設定
int randomValue = MathRand();
Print("乱数値: ", randomValue);
}
_Symbolを使用した例
現在のチャートのシンボル名を表示します。
void OnStart()
{
Print("現在のチャートのシンボル: ", _Symbol);
}
_UninitReasonを使用した例
エキスパートアドバイザーの終了理由を表示します。この変数は、OnDeinit
関数内で特に有用です。
void OnDeinit(const int reason)
{
Print("エキスパートアドバイザーの終了理由: ", reason);
}
Ask, Bid, Barsを使用した例
現在のシンボルのアスク価格、ビッド価格を表示し、チャートのバー数をカウントします。
void OnStart()
{
Print("アスク価格: ", Ask);
Print("ビッド価格: ", Bid);
Print("チャートのバー数: ", Bars);
}
Open, High, Low, Closeシリーズ配列を使用した例
最新バーのOHLC(始値、最高値、最低値、終値)価格を表示します。
void OnStart()
{
int lastIndex = Bars - 1; // 最新のバーインデックス
double openPrice = Open[lastIndex];
double highPrice = High[lastIndex];
double lowPrice = Low[lastIndex];
double closePrice = Close[lastIndex];
Print("最新バーの始値: ", openPrice);
Print("最新バーの最高値: ", highPrice);
Print("最新バーの最低値: ", lowPrice);
Print("最新バーの終値: ", closePrice);
}
Timeシリーズ配列を使用した例
最新バーのオープン時間を表示します。
void OnStart()
{
datetime lastOpenTime = Time[Bars-1];
Print("最新バーのオープン時間: ", TimeToString(lastOpenTime, TIME_DATE | TIME_MINUTES));
}
Volumeシリーズ配列を使用した例
最新バーのボリュームを表示します。
void OnStart()
{
int lastVolume = Volume[Bars-1];
Print("最新バーのボリューム: ", lastVolume);
}
これらの使用例は、MQL4プログラミングにおいて事前定義された変数をどのように活用できるかを示しています。これらの変数は、トレーディング戦略の開発や分析、エキスパートアドバイザーやカスタムインジケーターの作成において、非常に役立ちます。
MQL4リファレンス
正式な仕様は”MQL4 Reference“をご確認下さい。上記内容を確認しておくとより分かりやすいかと思います。
リンク:https://docs.mql4.com/predefined
コメント