MQL4辞典

MQL4辞典 辞典・一覧

MQL4のリファレンスです。
情報量が多いので、本ページ内であれば「Ctrl + f」で検索、サイト内の検索であれば下の検索フォームでの検索をおすすめします。

本ページでは、項目が多いため大タイトルからそれらに付随する、中・小タイトルが多数あります。これらのタイトル構成についてはこちらの「各ページのタイトル構成」を参考にして頂ければ、本ページが読みやすくなると思います。

MQL4 概要 [1996]

MQL4の基本項目

項目説明
関数一覧 [449]注文する際や決済する時にMQL4で決められた関数を使います。関数は共通、変換、数学、配列、文字列、日時、取引、口座情報、チャートなど数多く用意されています。
MQL4 基礎 [85]MQL4は、さまざまな金融市場を分析するための自動取引システムやカスタムテクニカルインジケータを作成することを目的としたオブジェクト指向型の高水準プログラミング言語です。
定数・列挙・構造体 [1443]プログラムの記述を簡素化し、プログラムのテキストを認識しやすくするために、MQL4言語は定義済みの標準定数と列挙を提供します。それに加えて、サービス構造は情報を格納するために使用されます。標準定数はマクロに似ており、int型です。定数は、目的別にグループ化されています。
定義済み変数 [19]実行可能なMQL4プログラムごとに、MQL4プログラム(EA、スクリプト、カスタムインジケータ)が開始される瞬間までの現在の価格チャートの状態を反映する一連の定義済み変数がサポートされています。
定義済み変数の値は、MQL4プログラムが開始される前にクライアントターミナルによって設定されます。定義済み変数は定数であり、MQL4プログラムから変更することはできません。例外として、ResetLastError関数によって 0にリセットできる特別な変数 _LastError があります。

MQL4には、現在及び以前受信した為替レートを分析するために必要な多数の関数が含まれており、取引注文を管理および制御するための基本的なインジケータと関数が組み込まれています。MQL4言語は MetaEditorを使ってプログラムコードを書いていくことになります。

MQL4で書くことができるプログラムは、EA (Expert Advisor)カスタムインジケータスクリプトライブラリインクルードファイル があります。


関数一覧 [449]

関数説明
共通[29]専門グループに属さない汎用的に使われる共通の関数です。
配列[19]複数のデータを収納する関数です。
変換[24]他のフォーマットの変換をする関数です。
数学[41]数字、三角関数を扱う関数です。
文字列[19]string型(文字列)を操作する関数です。
日時[23]datetime型(日時)を扱うための関数です。
口座情報[19]現在の口座情報を取得する関数です。
チェック[26]クライアントターミナルの状態を取得する関数です。
マーケット情報[10]マーケット情報を取得する関数です。
時系列とインジケータへのアクセス[20]時系列を操作する関数です。
チャート操作[48]チャートを操作する関数です。チャート操作はEAとスクリプトで出来ます。
取引[25]取引をするための関数です。新規注文や決済注文などができます。
トレードシグナル[12]トレードシグナルを管理する関数です。コピートレードなどに使うことができます。
グローバル変数[11]クライアントターミナルのグローバル変数を操作する関数です。
ファイル[38]ファイルを操作する関数です。
カスタムインジケータ[17]インジケータを取り扱う関数です。
オブジェクト[27]オブジェクトを操作する関数です。
テクニカルインジケータ[37]一般的に使われいるインジケータ(移動平均線など)を呼び出す関数です。
イベント操作[4]イベントを操作する関数です。

MQL4には、多くの関数が組み込まれています。これを「組み込み関数」と言います。独自のアイデアでプログラムをしたい場合はMQL4で出来る組み込み関数を知っておくと良いでしょう。

これらを上手に使うことで新規注文や決済、口座情報など簡単に処理や抽出をすることができます。

組み込み関数は、関数となる文字列の後ろに () が付いたものになります。() に関数に必要な情報 (引数ひきすう) を入れることで値が返ってきます。表中の () 内の数字はその関数が持つ引数の最大数です。引数が一部省略できる関数もあります。

関数分類の後ろの[]は、各関数分類の中にある関数の数です。

共通関数 [29]

専門グループに属さない汎用的に使われる共通の関数です。

関数データ型説明
Alert(64)voidメッセージをポップアップで表示します。
Comment(64)voidチャートの左上隅に任意で設定したコメントを表示します。
MessageBox(3)intメッセージボックスをポップアップ表示します。「はい」「いいえ」などが使え、注意や警告、条件分岐をする時などに使われます。
Print(64)void任意のデータをターミナルのエキスパートタブへメッセージを出力します。
PrintFormat(64)void設定したフォーマットでターミナルのエキスパートタブへメッセージを出力します。
CheckPointer(1)enumオブジェクトポインタのタイプを ENUM_POINTER_TYPE 列挙値から選択して取得します。
GetPointer(1)voidオブジェクトポインタを取得します。
CryptEncode(4)int配列データを指定した方法で変換(エンコード)して、変換後の大きさ(byte)を取得します。
CryptDecode(4)intCryptEncode関数によって暗号化されたデータを復元(デコード)して、復元した時のデータの大きさ(byte)を取得します。
DebugBreak(0)voidデバッグ時のブレイクポイントを組み込むコードです。DebugBreak関数を組み込むことでプログラムを DebugBreak関数がある位置で一時停止することができます。デバッグモードで開始した時のみ、この関数は動作します。
ExpertRemove(0)voidMT4の自動取引システムである EAを停止してチャートからアンロード(削除)します。
GetTickCount(0)uintシステムが起動してから経過したミリ秒数を返します。
GetMicrosecondCount(0)ulongMQLプログラムの開始から経過したマイクロ秒数を返します。
PeriodSeconds(1)int指定した時間軸の秒数を取得します。
ResourceCreate(8)boolデータセットに基づいて画像リソースを作成します。
ResourceFree(1)boolResourceCreate関数によって作成されたリソースを削除します(リソースに割り当てられたメモリを解放します)。
ResourceReadImage(4)boolResourceCreate関数によって作成されたグラフィックリソース、またはコンパイル中に ex4ファイルに保存されたグラフィックリソースからデータを読み取ります。
ResourceSave(2)boolリソースを指定したファイルに保存します。
SendMail(2)bool「メール」タブの設定画面で指定したアドレスにメールを送信します。
SendNotification(1)bool指定したモバイル端末へプッシュ通知を送信します。
SendFTP(2)bool「FTP」タブの設定画面で指定したアドレスにファイルを送信します。
WebRequest(9)int指定したサーバーにHTTPリクエストを送信します。
TranslateKey(1)short現在の入力言語とコントロールキーの状態を考慮して、仮想キーコードから Unicodeを取得します。
PlaySound(1)boolサウンドファイルを再生します。再生可能なファイルは wav形式のファイルのみです。
TesterStatistics(1)doubleEAをストラテジーテスターで使用した時に算出される結果を取得します。取得する結果は ENUM_STATISTICS 列挙値で指定します。
Sleep(1)voidプログラムを一時停止します。
TerminalClose(1)boolMT4(クライアントターミナル)の操作を完了してアプリを終了するように命令します。
ResetLastError(0)voidシステム変数_LastErrorの値をゼロに設定します。
ZeroMemory(1)void変数にセットした値(データ)をリセット(0に初期化)します。
※()内の数字は引数の最大数。

配列関数 [19]

複数のデータを収納する関数です。

関数データ型説明
ArrayBsearch(5)int1次元配列中の値を検索して、その要素のインデックス値を取得します。
ArrayCopy(5)int配列を別の配列にコピーします。
ArrayCompare(5)int同じ型の 2つの配列を比較した結果を取得します。
ArrayFree(1)void指定した動的配列の要素数を 0 (空)にします。
ArrayGetAsSeries(1)bool配列のインデックス番号の方向をチェックします。
ArrayInitialize(2)int数値配列を指定した値で初期化を実行します。
ArrayFill(4)void指定した値を配列に設置します。
ArrayIsDynamic(1)bool指定した配列が動的配列かどうかのチェックをします。
ArrayIsSeries(1)bool対象の配列が時系列 または それ以外かをチェックします。
ArrayMaximum(3)int1次元数値配列の最大値を検索して、そのインデックス値を取得します。
ArrayMinimum(3)int1次元数値配列の最小値を検索して、そのインデックス値を取得します。
ArrayRange(2)int指定した次元配列の要素数を取得します。
ArrayResize(3)int配列のサイズを再設定します。
ArraySetAsSeries(2)bool選択した動的配列に AS_SERIESフラグを設定して、要素が時系列配列のようにインデックス付けされます。
ArraySize(1)int選択した配列の要素数を取得します。
ArraySort(4)bool数値配列の 1次元目を並び替えます。
ArrayCopyRates(3)int価格データを指定した配列にコピーします。
ArrayCopySeries(4)int時系列配列を指定した配列にコピーして、そのコピーした配列の要素数を取得します。
ArrayDimension(1)int選択した配列の次元数を取得します。
※()内の数字は引数の最大数。

変換関数 [24]

他のフォーマットの変換をする関数です。

関数データ型説明
CharToString(1)stringANSIシンボルコードを文字に変換します。
CharToStr関数と同じ。
CharToStr(1)stringANSIシンボルコードを文字に変換します。
CharToString関数と同じ。
ShortToString(1)stringUnicodeシンボルコードを文字に変換します。
IntegerToString(3)string整数値を指定した長さの文字列に変換します。
DoubleToString(2)string浮動小数点数を指定した実数を文字列に変換します。DoubleToStrと同じ。
DoubleToStr(2)string浮動小数点数を指定した実数を文字列に変換します。DoubleToStringと同じ。
ColorToString(2)string色の RGB値(color型)を文字列に変換します。
TimeToString(2)string日時型を文字列に変換します。TimeToStrと同じ。
TimeToStr(2)string日時型を文字列に変換します。TimeToStringと同じ。
EnumToString(1)string列挙値を文字列に変換します。
CharArrayToString(4)stringuchar型配列の指定した要素部分のコードを文字に変換します。
ShortArrayToString(3)stringushort型配列の指定した要素部分のコードを文字に変換します。
StringToInteger(1)long数値表現を含む文字列を整数(long型)に変換します。StrToInteger関数と同じ。
StrToInteger(1)int数値表現を含む文字列を整数(int型)に変換します。StringToInteger関数と同じ。
StringToDouble(1)double数値の文字列を実数(double型)に変換します。StrToDouble関数と同じ。
StrToDouble(1)double数値の文字列を実数(double型)に変換します。StringToDouble関数と同じ。
StringToColor(1)color「R,G,B」文字列 または Webカラー名を含む文字列を色の値(color型)に変換します。
StringToTime(1)datetime「yyyy.mm.dd [hh:mi]」形式の時刻または日付を含む文字列を日時型に変換します。StrToTime関数と同じ。
StrToTime(1)datetime「yyyy.mm.dd [hh:mi]」形式の時刻または日付を含む文字列を日時型に変換します。StringToTime関数と同じ。
StringToCharArray(5)intUnicodeから ANSIに変換した文字列をシンボル単位で uchar型配列の選択した場所にコピーします。戻り値は、コピーした要素数が取得されます。
StringToShortArray(4)int文字列を ushort型配列の指定した場所にコピーします。戻り値は、コピーした要素数が取得されます。
StringFormat(64)string設定したフォーマットに従って指定したパラメーターを文字列に変換します。
ColorToARGB(2)uint色(color型)を ARGB形式に変換します。
NormalizeDouble(2)double浮動小数点数を指定した精度で丸めます。
※()内の数字は引数の最大数。

数学関数 [41]

数字、三角関数を扱う関数です。

関数データ型説明
MathAbs(1)double指定した数値の絶対値を返します。
MathMax(2)double2つの数値の最大値を返します。
MathMin(2)double2つの数値の最小値を返します。
MathRound(1)double小数点以下の数値を四捨五入します。
MathCeil(1)double小数点以下の数値を切り上げます。
MathFloor(1)double小数点以下の数値を切り捨てます。
MathMod(2)double除算の余りを返します。
MathPow(2)doubleべき乗を返します。
MathSqrt(1)double平方根を返します。
MathExp(1)double自然対数の底 e(ネイピア数)のべき乗を返します。
MathLog(1)double自然対数を返します。
MathLog10(1)double10を底とした対数を返します。
MathSin(1)double指定した数値(ラジアン)のサイン値を返します。
MathCos(1)double指定した数値(ラジアン)のコサイン値を返します。
MathTan(1)double指定した数値(ラジアン)のタンジェント値を返します。
MathArcsin(1)double指定したアークサインを数値(ラジアン)で返します。
MathArccos(1)double指定したアークコサインを数値(ラジアン)で返します。
MathArctan(1)double指定したアークタンジェントを数値(ラジアン)で返します。
MathRand(1)int0~32767の範囲内で発生させた乱数を整数で返します。
MathSrand(1)void一連の疑似乱数整数を生成するための開始点を設定します。
MathIsValidNumber(1)bool実数の有効性をチェックします。
fabs(1)doubleMathAbs関数と同じです。
fmax(2)doubleMathMax関数と同じです。
fmin(2)doubleMathMin関数と同じです。
round(1)doubleMathRound関数と同じです。
ceil(1)doubleMathCeil関数と同じです。
floor(1)doubleMathFloor関数と同じです。
fmod(2)doubleMathMod関数と同じです。
pow(2)doubleMathPow関数と同じです。
sqrt(1)doubleMathSqrt関数と同じです。
exp(1)doubleMathExp関数と同じです。
log(1)doubleMathLog関数と同じです。
log10(1)doubleMathLog10関数と同じです。
sin(1)doubleMathSin関数と同じです。
cos(1)doubleMathCos関数と同じです。
tan(1)doubleMathTan関数と同じです。
asin(1)doubleMathArcsin関数と同じです。
acos(1)doubleMathArccos関数と同じです。
atan(1)doubleMathArctan関数と同じです。
rand(1)intMathRand関数と同じです。
srand(1)voidMathSrand関数と同じです。
※()内の数字は引数の最大数。

文字列関数 [19]

string型(文字列)を操作する関数です。

関数データ型説明
StringAdd(2)bool指定した文字列の末尾に、別の指定した文字列を追加します。
StringBufferLen(1)int指定した文字列に割り当てられたバッファサイズを取得します。
StringCompare(3)int2つの文字列を比較して、比較結果を整数で取得します。
StringConcatenate(2)string設定した引数を文字列に変換して連結した文字列を作成します。
StringFill(2)bool選択した文字列を指定した文字で全置換します。
StringFind(3)int指定した文字列内に検索する文字列があるかどうかをチェックします。
StringGetCharacter(2)ushort文字列の中の指定した位置にある文字コード(10進数のUnicode)を取得します。StringGetChar関数と同じ。
StringInit(3)bool文字列を指定した文字(Unicodeで設定)と長さで初期化します。
StringLen(1)int指定した文字列の文字数を取得します。
StringReplace(3)int指定した文字列内の部分文字列を、別に指定した文字列で置換します。
StringSetCharacter(3)bool指定した文字列内の 1文字を、指定したUnicodeシンボルコードの文字に変更します。成功した場合は true、それ以外は falseを取得します。
StringSplit(3)int選択した文字列を指定した文字で区切り、その時に分割した文字列の数を取得します。
StringSubstr(3)string指定した文字列から部分的に文字を抽出します。
StringToLower(1)bool指定した文字列を大文字から小文字に変換します。半角、全角どちらも変換対象です。
StringToUpper(1)bool指定した文字列を小文字から大文字に変換します。半角、全角どちらも変換対象です。
StringTrimLeft(1)string文字列の左側部分にある改行、スペース、タブを削除した文字列を取得します。
StringTrimRight(1)string文字列の右側部分にある改行、スペース、タブを削除した文字列を取得します。
StringGetChar(2)ushort文字列の中の指定した位置にある文字コード(10進数のUnicode)を取得します。StringGetCharacter関数と同じ。
StringSetChar(3)string指定した文字列内の 1文字を、指定したASCIIコードの文字に変更します。成功した場合は変更後の文字を取得します。
※()内の数字は引数の最大数。

日時関数 [23]

datetime型 (日時) を扱うための関数です。

関数データ型説明
TimeCurrent(0)datetimeサーバーが置かれている国の標準時間を取得。(サーバー時間)
MT4のFX取引サーバーの標準時間は、ニューヨーク市場が閉まる午後5時を午前0時(0:00)として表示しています。「GMT + 3時間」がサーバーの標準時間になります。
TimeLocal(0)datetimeユーザーが現在MT4を動かしている国の標準時間を取得。(ローカル時間)
MT4を動かしているパソコンの時間です。日本の場合「GMT + 9時間」になります。
TimeGMT(0)datetimeグリニッジ標準時間(GMT)を取得。(GMT時間)
GMTは Greenwich Mean Time の略で国際的な基準時刻のひとつです。
サマータイムの期間は1時間早くなります。
TimeDaylightSavings(0)intサマータイムに切り替わっている時の時差を秒単位で取得します。
TimeGMTOffset(0)int標準時間とサマータイムとの切替を考慮して、GMT時間と使用パソコンの時間差を秒単位で取得します。
TimeToStruct(2)void指定した日時(datetime型)を構造体変数である MqlDateTime型に変換します。
StructToTime(1)datetime構造体変数の MqlDateTime型のデータを datetime型(日時型)に変換して、その結果を取得します。
Year(0)intサーバー時間で現在の年を取得します。
Month(0)intサーバー時間で現在の月を取得します。
Day(0)intサーバー時間で現在の日を取得します。
Hour(0)intサーバー時間で現在の時間(時間)を取得します。
Minute(0)intサーバー時間で現在の時間(分)を取得します。
Seconds(0)intサーバー時間で現在の時間(秒)を取得します。
DayOfWeek(0)intサーバー時間で現在の曜日(数値)を取得します。(0=日曜日)
DayOfYear(0)intサーバー時間で本年の経過日数を取得します。
TimeYear(1)int指定した日時の年を取得します。
TimeMonth(1)int指定した日時の月を取得します。
TimeDay(1)int指定した日時の日を取得します。
TimeHour(1)int指定した日時の時間(時間)を取得します。
TimeMinute(1)int指定した日時の時間(分)を取得します。
TimeSeconds(1)int指定した日時の時間(秒)を取得します。
TimeDayOfWeek(1)int指定した日時の曜日(数値)を取得します。(0=日曜日)
TimeDayOfYear(1)int指定した日時のその年の経過日数を取得します。
※()内の数字は引数の最大数。

口座情報関数 [19]

現在の口座情報を取得する関数です。

関数データ型説明
AccountInfoInteger(1)bool, int, long引数に対応する整数型の口座情報を取得します。 
AccountInfoDouble(1)double引数に対応するdouble型の口座情報を取得します。 
AccountInfoString(1)string引数に対応する文字列型(string型)の口座情報を取得します。 
AccountBalance(0)double現在の口座残高を取得します。
AccountCurrency(0)string現在の口座通貨名を取得します。
AccountCredit(0)double現在の口座クレジットを取得します。
AccountEquity(0)double現在の口座の有効証拠金を取得します。
AccountMargin(0)double現在の口座の必要証拠金を取得します。
AccountFreeMargin(0)double現在の口座の余剰証拠金を取得します。
AccountStopoutLevel(0)int現在の口座のロスカット証拠金維持率を取得します。
AccountProfit(0)double現在の口座の損益を取得します。
AccountName(0)string現在の口座名を取得します。
AccountNumber(0)int現在の口座番号を取得します。
AccountLeverage(0)int現在の口座のレバレッジを取得します。
AccountCompany(0)string現在の口座のFX会社名を取得します。
AccountServer(0)string接続サーバー名を取得します。
AccountFreeMarginCheck(3)double現在のレートでポジションを持った場合に残る余剰証拠金を取得します。
AccountFreeMarginMode(0)double現在の口座の余剰証拠金の計算モードを0~3の数値で取得します。
AccountStopoutMode(0)int現在の口座の証拠金維持率の計算モードを0~1の数値で取得します。
※()内の数字は引数の最大数。

チェック関数 [26]

クライアントターミナルの状態を取得する関数です。

関数データ型説明
GetLastError(0)int直近のエラーコードを取得します。
IsStopped(0)boolMQL4プログラムが動作を停止するように命令されているかをチェックします。
UninitializeReason(0)int初期化解除の理由のコードを取得します。
システム変数「_UninitReason」と同じ。
MQLInfoInteger(1)int実行中のMQL4プログラムに対応するプロパティの整数値を取得します。
MQLInfoString(1)string実行中のMQL4プログラムに対応するプロパティの文字列を取得します。
MQLSetInteger(2)voidMQL4プログラム環境でMQL_CODEPAGEプロパティの値を設定します。
TerminalInfoInteger(1)int実行中のMQL4ターミナルに対応するプロパティの整数値を取得します。
TerminalInfoDouble(1)double実行中のMQL4ターミナルに対応するプロパティのdouble値を取得します。
TerminalInfoString(1)string実行中のMQL4ターミナルに対応するプロパティの文字列を取得します。
Symbol(0)string現在チャートの通貨ペア名を返します。
システム変数「_Symbol」と同じ。
Period(0)int現在チャートの時間軸を取得します。
システム変数「_Period」と同じ。
Digits(0)int現在の通貨ペアの小数点以下の桁数を取得します。
定義済変数「Digits」、システム変数「_Digits」と同じ。
Point(0)double現在の通貨ペアの最小値を取得します。
定義済変数「Point」、システム変数「_Point」と同じ。
IsConnected(0)boolクライアントターミナル(MT4)とサーバー間の接続状態を確認します。
IsDemo(0)boolEAがデモ口座で実行されているかどうかを確認します。
IsDllsAllowed(0)boolEAでDLL関数呼び出しが許可されているかどうかを確認します。
IsExpertEnabled(0)boolEAの実行が有効になっているかどうかを確認します。
IsLibrariesAllowed(0)boolEAでライブラリ関数呼び出しが許可されているかどうかを確認します。
IsOptimization(0)boolEAがストラテジーテスターの最適化モードで実行されているかどうかを確認します。
IsTesting(0)boolEAがストラテジーテスターで実行されているかどうかを確認します。
IsTradeAllowed(0)boolEAが取引を許可され、取引状態がビジーでないかどうかを確認します。
IsTradeContextBusy(0)bool取引コンテキストに関する情報の状態を確認して、取引操作が実行中かどうかを判定します。この確認により、重複する取引操作を防ぐことができます。
IsVisualMode(0)boolEAがストラテジーテスターのビジュアルモードで実行されているかどうかを確認します。
TerminalCompany(0)stringクライアントターミナル(MT4)を所有する会社名を取得します。
TerminalName(0)stringクライアントターミナル名を取得します。
TerminalPath(0)stringクライアントターミナルが格納されているフォルダのパスを取得します。
※()内の数字は引数の最大数。

マーケット情報関数 [10]

マーケット情報を取得する関数です。

関数データ型説明
MarketInfo(2)doubleMT4上の「気配値表示」の仕様にある様々な情報を取得します。取得できる情報はマーケット情報識別子の29項目です。
SymbolsTotal(1)int現在の取引可能な通貨ペアの数を取得します。
SymbolName(2)string指定した取引可能な通貨ペア名を取得します。
SymbolSelect(2)bool「気配値表示」ウィンドウの通貨ペアを追加 または 削除します。
SymbolInfoInteger(3)long, bool指定した通貨ペアに関するプロパティ情報(long型)を取得します。
SymbolInfoDouble(3)double, bool指定した通貨ペアに関するプロパティ情報(double型)を取得します。
SymbolInfoString(3)string, bool指定した通貨ペアに関するプロパティ情報(string型)を取得します。
SymbolInfoTick(2)bool指定した通貨ペアの現在の価格(MqlTick型)を取得します。
SymbolInfoSessionQuote(5)bool指定した通貨ペアと曜日について、指定した為替レートセッションの開始時間から終了時間まで受信できるようにします。
SymbolInfoSessionTrade(5)bool指定した通貨ペアと曜日について、指定した取引セッションの開始時間から終了時間まで受信できるようにします。
※()内の数字は引数の最大数。

アクセス関数 [20]

時系列とインジケータへのアクセス関数です。

関数データ型説明
SeriesInfoInteger(4)long, bool指定した通貨ペア、時間軸のヒストリカルデータに関する情報を取得します。
RefreshRates(0)boolレートを最新情報に更新します。
CopyRates(5)int指定した通貨ペアと時間軸、バーの範囲の価格情報(①開始時間 ②始値 ③高値 ④安値 ⑤終値 ⑥Tick数 ⑦スプレッド ⑧出来高)を、指定したMqlRates型配列へコピーして、コピー先配列の要素数を取得します。
CopyTime(5)int指定した通貨ペアと時間軸、バーの範囲の開始時間を、指定した配列へコピーして、コピー先配列の要素数を取得します。
CopyOpen(5)int指定した通貨ペアと時間軸、バーの範囲の始値を、指定した配列へコピーして、コピー先配列の要素数を取得します。
CopyHigh(5)int指定した通貨ペアと時間軸、バーの範囲の高値を、指定した配列へコピーして、コピー先配列の要素数を取得します。
CopyLow(5)int指定した通貨ペアと時間軸、バーの範囲の安値を、指定した配列へコピーして、コピー先配列の要素数を取得します。
CopyClose(5)int指定した通貨ペアと時間軸、バーの範囲の終値を、指定した配列へコピーして、コピー先配列の要素数を取得します。
CopyTickVolume(5)int指定した通貨ペアと時間軸、バーの範囲のTick出来高を、指定した配列へコピーして、コピー先配列の要素数を取得します。
Bars(4)int指定した通貨ペアの指定した時間軸と期間中のバー数を取得します。
iBars(2)int指定したチャートのバー数を取得します。
iBarShift(4)int指定した時間のバーのインデックス値を取得します。
iOpen(3)double指定した通貨ペアと時間軸、インデックス値のバーの始値を取得します。
iHigh(3)double指定した通貨ペアと時間軸、インデックス値のバーの高値を取得します。
iLow(3)double指定した通貨ペアと時間軸、インデックス値のバーの安値を取得します。
iClose(3)double指定した通貨ペアと時間軸、インデックス値のバーの終値を取得します。
iHighest(5)int指定したバーの範囲から設定した値(始値、高値、安値、終値、Tick出来高から選択)の最高値を持つバーのインデックス値を取得します。
iLowest(5)int指定したバーの範囲から設定した値(始値、高値、安値、終値、Tick出来高から選択)の最安値を持つバーのインデックス値を取得します。
iTime(3)datetime指定した通貨ペアと時間軸、インデックス値のバーの開始時間を取得します。
iVolume(3)long指定した通貨ペアと時間軸、インデックス値のバーのTick出来高を取得します。
※()内の数字は引数の最大数。

チャート操作関数 [48]

チャートを操作する関数です。チャート操作はEAとスクリプトで出来ます。

関数データ型説明
ChartID(0)long現在のチャートのIDを取得します。
ChartNext(1)long指定したチャートの次のチャートのチャートIDを取得します。
ChartApplyTemplate(2)bool指定したファイルから特定のグラフテンプレートをチャートへ適用します。
ChartSaveTemplate(2)bool現在のチャートの設定に名前を付けてテンプレートとして保存します。
ChartWindowFind(2)int指定したインジケータが存在するウィンドウのインデックスを取得します。
ChartTimePriceToXY(6)boolチャート上の日時(X軸)と価格(Y軸)の位置をそれぞれX座標、Y座標として取得します。座標はピクセル単位で取得されます。
ChartXYToTimePrice(6)boolチャート上で指定した座標位置の日時と価格、ウィンドウ番号を取得します。指定する座標位置はピクセル単位です。
ChartOpen(2)long指定した通貨ペア、時間軸のチャートを作成して開きます。
ChartClose(1)bool指定したチャートIDのチャートを閉じます。
ChartFirst(0)longクライアントターミナルの最初のチャートIDを取得します。
ChartSymbol(1)stringチャートIDで指定したチャートの通貨ペア名を取得します。
ChartPeriod(1)ENUMチャートIDで指定したチャートの時間軸を分単位で取得します。
ChartRedraw(1)void指定したチャートを強制的に再描画します。通常、オブジェクトのプロパティが変更された後に使用されます。
ChartSetInteger(4)bool指定したチャートに対応するプロパティ値を設定します。設定するプロパティ値は整数型(char・int・bool・color・datetime・enum型)です。
ChartSetDouble(3)bool指定したチャートに対応するプロパティ値を設定します。設定するプロパティ値は実数型(double型)です。
ChartSetString(3)bool指定したチャートに対応するプロパティ値を設定します。設定するプロパティ値は文字列型(string型)です。
ChartGetInteger(4)long
bool
指定したチャートの指定したプロパティ値を取得します。取得するプロパティ値は整数型(long・bool・datetime・enum型)です。関数の呼び出し方法には 2つの型があります。
ChartGetDouble(4)double
bool
指定したチャートの指定したプロパティ値を取得します。取得するプロパティ値は、実数型(double型)です。
ChartGetString(3)string
bool
指定したチャートの指定したプロパティ値を取得します。取得するプロパティ値は、文字列型(string型)です。
ChartNavigate(3)boolチャート内の指定した位置を基準にして、指定したバーの数だけ、チャートのシフトを実行します。
ChartIndicatorDelete(3)bool指定したチャートウィンドウから指定した名前のインジケーターを削除します。
ChartIndicatorName(3)string指定したチャートウィンドウのインジケータリストの数字でインジケータの短縮名を返します。
ChartIndicatorsTotal(2)int指定したチャートウィンドウに適用したすべてのインジケーターの数を返します。
ChartWindowOnDropped(0)intEAスクリプトを挿入したチャートのウィンドウ番号(インデックス値)を取得します。
ChartPriceOnDropped(0)doubleEAスクリプトをチャートへ挿入した箇所に対応するY軸位置(価格等)の値を取得します。
ChartTimeOnDropped(0)datetimeEAスクリプトをチャートへ挿入した箇所に対応するX軸位置(日時)の値を取得します。
ChartXOnDropped(0)intEAスクリプトをチャートへ挿入した箇所に対応するX軸座標(単位:ピクセル)を取得します。
ChartYOnDropped(0)intEAスクリプトをチャートへ挿入した箇所に対応するY軸座標(単位:ピクセル)を取得します。
ChartSetSymbolPeriod(3)bool指定したチャートの通貨ペア名と時間軸を変更します。
ChartScreenShot(5)bool現在のチャートのスクリーンショットを拡張子 GIF、PNG、BMP形式のいずれかを指定してファイル保存します。
Period(0)int現在のチャートの時間軸を取得します。
システム変数「_Period」と同じ。
Symbol(0)string現在のチャートの通貨ペア名を取得します。
システム変数「_Symbol」と同じ。
WindowBarsPerChart(0)intチャートに表示されるバーの数を取得します。
WindowExpertName(0)string実行した EA、スクリプト、カスタムインジケータ または ライブラリの名前を取得します。
WindowFind(1)int指定したインジケータが存在するウィンドウのインデックスを取得します。
WindowFirstVisibleBar(0)intチャートに表示されている最初(左端)のバーのインデックス値を取得します。
WindowHandle(2)intチャートウィンドウのシステムハンドルを取得します。
WindowIsVisible(1)int指定したチャートサブウィンドウの表示有無を確認します。
WindowOnDropped(0)intEAやカスタムインジケータ、スクリプトを挿入したチャートのウィンドウ番号(インデックス値)を取得します。
WindowPriceMax(1)int現在のチャートの指定したウィンドウの垂直スケール(Y軸)の最大値を取得します。
WindowPriceMin(1)int現在のチャートの指定したウィンドウの垂直スケール(Y軸)の最小値を取得します。
WindowPriceOnDropped(0)doubleEAやスクリプトをチャートへ挿入した箇所に対応するY軸位置(価格等)の値を取得します。
WindowRedraw(0)void現在のチャートを強制的に再描画します。通常、オブジェクトのプロパティが変更された後に使用されます。
WindowScreenShot(6)bool現在のチャートのスクリーンショットを拡張子 GIF形式のファイルで保存します。
WindowTimeOnDropped(0)datetimeEAやスクリプトをチャートへ挿入した箇所に対応するX軸位置(日時)の値を取得します。
WindowsTotal(0)intチャート上の表示ウィンドウの総数を取得します。
WindowXOnDropped(0)intEAやスクリプトをチャートへ挿入した箇所に対応するX軸座標(単位:ピクセル)を取得します。
WindowYOnDropped(0)intEAやスクリプトをチャートへ挿入した箇所に対応するY軸座標(単位:ピクセル)を取得します。
※()内の数字は引数の最大数。

取引関数 [25]

取引をするための関数です。新規注文や決済注文などができます。

関数データ型説明
OrderSend(11)int新規注文をします。
OrderClose(5)bool決済注文をします。
OrderCloseBy(3)bool両建てポジションを同時に決済します。
OrderDelete(2)bool注文を削除します。
OrderModify(6)bool注文番号で選択した注文の内容を変更します。
OrdersTotal(0)int現在のポジションとオーダーの総数を取得します。
OrdersHistoryTotal(0)intターミナルにロードされたアカウント履歴がある決済された注文の数を取得します。
OrderSelect(3)bool処理する注文を選択します。
OrderPrint(0)void選択した注文の情報をログ出力します。
OrderTicket(0)int選択した注文のチケット番号を取得します。
OrderOpenTime(0)datetime選択した注文の注文した時間を取得します。
OrderType(0)int選択した注文の注文タイプを取得します。
OrderLots(0)double選択した注文のロット数を取得します。
OrderSymbol(0)string選択した注文の通貨ペア名を取得します。
OrderOpenPrice(0)double選択した注文の注文価格を取得します。約定してポジション化されているものは約定した時の価格、オーダー中のものは指値価格が取得されます。
OrderStopLoss(0)double選択した注文のストップロス(指値損切)価格を取得します。
OrderTakeProfit(0)double選択した注文のリミット(指値決済)価格を取得します。
OrderCloseTime(0)datetime選択した注文の決済した時間を取得します。
OrderClosePrice(0)double選択した注文の決済した価格を取得します。
OrderCommission(0)double選択した注文の手数料を取得します。
OrderSwap(0)double選択した注文のスワップ損益を取得します。
OrderProfit(0)double選択した注文の損益を取得します。未決済の注文はその時の含み損益を取得します。この損益にスワップや手数料は含みません。
OrderComment(0)string選択した注文のコメントを取得します。
OrderMagicNumber(0)int選択した注文のマジックナンバーを取得します。
OrderExpiration(0)datetime選択した保留中注文の有効期限を取得します。
※()内の数字は引数の最大数。

トレードシグナル関数 [12]

トレードシグナルを管理する関数です。コピートレードなどに使うことができます。

関数データ型説明
SignalBaseGetInteger(1)long選択したシグナルの整数型のプロパティ値を取得します。
SignalBaseGetDouble(1)double選択したシグナルの double型のプロパティ値を取得します。
SignalBaseGetString(1)string選択したシグナルの文字列型のプロパティ値を取得します。
SignalBaseSelect(1)bool用意されているシグナルの中からシグナルを選択して、MT4で操作ができるようにします。
SignalBaseTotal(0)intMT4で利用可能なシグナルの総数を取得します。
SignalInfoGetInteger(1)long取引シグナルのコピートレードで設定している整数型のプロパティ値を取得します。
SignalInfoGetDouble(1)double取引シグナルのコピートレードで設定している実数(double)型のプロパティ値を取得します。
SignalInfoGetString(1)string取引シグナルのコピートレードで設定している文字列(string)型のプロパティ値を取得します。
SignalInfoSetInteger(2)bool取引シグナルのコピートレードで設定している整数型のプロパティ値を再設定します。
SignalInfoSetDouble(2)bool取引シグナルのコピートレードで設定している実数(double)型のプロパティ値を再設定します。
SignalSubscribe(1)boolMT4で利用可能な取引シグナルを購読(コピートレード)します。
SignalUnsubscribe(0)boolMT4で利用中の取引シグナルの購読(コピートレード)を解除します。
※()内の数字は引数の最大数。

グローバル変数の関数 [11]

クライアントターミナルのグローバル変数を操作する関数です。クライアントターミナルのグローバル変数は、グローバルレベルで宣言された変数とは違いますのでご注意ください。

関数データ型説明
GlobalVariableCheck(1)bool指定した名前のクライアントターミナルのグローバル変数の有無を確認します。
GlobalVariableTime(1)datetime指定したクライアントターミナルのグローバル変数の最終アクセス時刻を取得します。
GlobalVariableDel(1)bool指定したクライアントターミナルのグローバル変数を削除します。
GlobalVariableGet(2)double, bool指定したクライアントターミナルのグローバル変数名に格納されている値を取得します。
GlobalVariableName(1)stringインデックス番号で指定したクライアントターミナルのグローバル変数名を取得します。
GlobalVariableSet(2)datetime指定したクライアントターミナルのグローバル変数に新しい値を設定します。
GlobalVariablesFlush(0)voidすべてのクライアントターミナルのグローバル変数の内容をディスクに強制保存します。
GlobalVariableTemp(1)bool一時的なクライアントターミナルのグローバル変数を作成します。
GlobalVariableSetOnCondition(3)bool指定した現在のクライアントターミナルのグローバル変数の値と3番目の引数が等しい場合、そのグローバル変数に新しい値を設定して trueを取得します。
GlobalVariablesDeleteAll(2)int指定したクライアントターミナルのグローバル変数を一括削除して、削除したグローバル変数の数を取得します。
GlobalVariablesTotal(0)intクライアントターミナルのグローバル変数の総数を取得します。
※()内の数字は引数の最大数。

ファイル関数 [38]

ファイルを操作する関数です。

関数データ型説明
FileFindFirst(3)long指定したフィルタに従って、指定したフォルダ内のファイル および サブフォルダを検索します。
FileFindNext(2)boolFileFindFirst関数によって開始した検索を続行します。
FileFindClose(1)voidFileFindFirst関数によって開始した検索を終了させます。
FileOpen(4)int指定したファイルとフラグ(設定)でファイルを開きます。ファイルが存在しない時は、新規にファイルが作成されます。
FileDelete(2)bool指定したフォルダの中にある、指定したファイルを削除します。
FileFlush(1)voidファイルに書き込まれたデータを強制的にディスクに保存するために使用されます。
FileGetInteger(3)longファイルの整数型のプロパティ値を取得します。
FileIsEnding(1)bool開いているファイルのファイルポインタの位置が文末に置かれているかどうかをチェックします。
FileIsLineEnding(1)bool開いている txtファイル または csvファイルのファイルポインタの位置が行末に置かれているかどうかをチェックします。
FileClose(1)voidFileOpen関数で開かれたファイルを閉じます。
FileIsExist(2)bool指定したファイルが、指定したフォルダの中に存在するかを確認します。
FileCopy(4)bool指定したフォルダの中にある、指定したファイルをコピーして、指定したフォルダにペーストします。
FileMove(4)bool指定したフォルダの中にある、指定したファイルを移動 および ファイル名を変更することができます。
FileReadArray(4)uint開いているbinファイルのファイルポインタの現在位置から配列データ(文字列データを除く)を読み取ります。
FileReadBool(1)boolcsvファイルのファイルポインタの現在位置から区切りまで(またはテキスト文字列の末尾まで)の文字列を読み取り、読み取った文字列を bool型の値に変換します。
FileReadDatetime(1)datetimecsvファイルから「YYYY.MM.DD HH:MM:SS」、「YYYY.MM.DD」、「HH:MM:SS」のいずれかの形式の文字列を読み取り、それを datetime型にします。
FileReadDouble(2)double開いている binファイルのファイルポインタの現在位置から double型の値を読み取ります。
FileReadFloat(1)float開いている binファイルのファイルポインタの現在位置から float型の値を読み取ります。
FileReadInteger(2)int開いているファイルのファイルポインタの現在位置から int、short、char型の値を読み取ります。
FileReadLong(1)long開いているファイルのファイルポインタの現在位置から long型の値(8バイト)を読み取ります。
FileReadNumber(1)doublecsvファイルのファイルポインタの現在位置から区切りまで(またはテキスト文字列の末尾まで)の文字列を読み取り、読み取った文字列を double型の値に変換します。
FileReadString(2)string開いているファイル内のファイルポインタの現在位置からの文字列を読み取ります。
FileReadStruct(3)uintbinファイルからパラメータとして渡された構造体に、ファイルポインタの現在位置から構造体データ(文字列、動的配列、仮想関数を除く)の内容を読み取ります。
FileSeek(3)bool開いているファイルのファイルポインタの現在位置を指定したバイト数だけ移動します。
FileSize(1)ulong指定したファイルのサイズをバイト単位で取得します。
FileTell(1)ulong開いているファイルのファイルポインタの現在位置をバイト単位で取得します。
FileWrite(64)uint指定した csvファイル または txtファイルへデータを書き込みます。
FileWriteArray(4)uint開いている binファイルのファイルポインタの現在位置から指定した配列データ(文字列データを除く)を書き込みます。
FileWriteDouble(2)uint開いているファイルのファイルポインタの現在位置から double型の値をファイルに書き込みます。
FileWriteFloat(2)uint開いている binファイルのファイルポインタの現在位置から float型の値を書き込みます。
FileWriteInteger(3)uint開いている binファイルのファイルポインタの現在位置から int型の値を書き込みます。
FileWriteLong(2)uint開いている binファイルのファイルポインタの現在位置から long型の値を書き込みます。
FileWriteString(3)uint開いているファイル(bin、csv、txt形式)のファイルポインタの現在位置から文字列を書き込みます。
FileWriteStruct(3)uint開いている binファイルのファイルポインタの現在位置から指定した構造体データ(文字列、動的配列、仮想関数を除く)を書き込みます。
FolderCreate(2)boolFilesファルダ内に新規フォルダを作成します。
FolderDelete(2)boolFilesファルダ内にある指定したフォルダを削除します。フォルダ内が空でない場合は削除できません。
FolderClean(2)boolFilesファルダ内にある指定したフォルダ内にあるファイルを削除します。ファイル以外に空のフォルダであればフォルダも削除します。
FileOpenHistory(3)inthistoryフォルダ または そのサブフォルダにあるファイルを開きます。
※()内の数字は引数の最大数。

カスタムインジケータ関数 [17]

インジケータを取り扱う関数です。

関数データ型説明
HideTestIndicators(1)voidストラテジーテスターのテストで、EAに呼び出されるインジケータの表示・非表示を設定します。
IndicatorSetInteger(3)bool対応するインジケータの int(整数)型 または color(カラー)型のプロパティ値を設定します。
IndicatorSetDouble(3)bool対応するインジケータの double(実数)型のプロパティ値を設定します。
IndicatorSetString(3)bool対応するインジケータの string(文字列)型のプロパティ値を設定します。
IndicatorBuffers(1)boolインジケータの計算に使用されるバッファ数を設定します。
IndicatorCounted(0)intインジケータが起動後に変化していなかったバーの数を取得します。
IndicatorDigits(1)voidインジケータの価格データの精度(小数点以下の桁数)を設定します。
IndicatorShortName(1)voidデータウィンドウとチャートサブウィンドウに表示されるカスタムインジケータの短縮名を設定します。
SetIndexBuffer(2)bool指定したインジケータバッファーをdouble型の配列データに結び付けます。
SetIndexArrow(2)voidインジケータライン(DRAW_ARROW)の矢印記号を設定します。
SetIndexDrawBegin(2)void指定したインジケータラインの開始位置を設定します。
SetIndexEmptyValue(2)voidインジケータのデータを空の値に設定します。
SetIndexLabel(2)voidデータウィンドウ および ツールチップに表示するインジケータラインの説明を設定します。
SetIndexShift(2)voidインジケータラインのオフセットを設定します。
SetIndexStyle(5)void指定したインジケータラインのタイプ、スタイル、線幅、色を設定します。
SetLevelStyle(3)voidサブウィンドウにプロットされるインジケータの水平レベル線(補助線)のスタイル、線幅、色を設定します。
SetLevelValue(2)voidサブウィンドウにプロットされるインジケータの水平レベル線(補助線)位置の値を設定します。
※()内の数字は引数の最大数。

オブジェクト関数 [27]

オブジェクトを操作する関数です。

関数データ型説明
ObjectCreate(64)bool指定したチャートに指定したタイプのオブジェクトを作成します。
ObjectName(1)stringオブジェクトリスト内のインデックスからオブジェクト名を取得します。
ObjectType(1)intオブジェクトのタイプを取得します。
ObjectDescription(1)stringオブジェクトの説明を取得します。
ObjectFind(2)int指定した名前のオブジェクトを検索します。
ObjectMove(4)bool指定したオブジェクトの基準座標を変更します。
ObjectsTotal(3)int指定したタイプのオブジェクトの数を取得します。
ObjectDelete(2)bool指定したオブジェクトを削除します。
ObjectsDeleteAll(4)int指定したチャートウィンドウから、指定したオブジェクトを削除します。
ObjectSet(3)bool指定したオブジェクトのプロパティ値を変更します。
ObjectSetInteger(5)bool対応するオブジェクトプロパティ値を設定します。(整数型)
ObjectSetDouble(5)bool対応するオブジェクトプロパティ値を設定します。(実数型)
ObjectSetString(5)bool対応するオブジェクトプロパティ値を設定します。(string型)
ObjectSetText(5)boolオブジェクトの説明を変更します。
ObjectSetFiboDescription(3)boolフィボナッチオブジェクトのレベル(水平線)に説明文を設定します。
ObjectGet(2)double指定したオブジェクトのプロパティ値を取得します。
ObjectGetInteger(5)long, bool対応するオブジェクトプロパティ値を取得します。(整数型)
ObjectGetDouble(5)double, bool対応するオブジェクトプロパティ値を取得します。(実数型)
ObjectGetString(5)string, bool対応するオブジェクトプロパティ値を取得します。(string型)
ObjectGetFiboDescription(2)stringフィボナッチオブジェクトのレベル(水平線)に表示されている説明文を取得します。
ObjectGetTimeByValue(4)datetime指定したオブジェクト価格の時間を取得します。
ObjectGetValueByTime(4)double指定したオブジェクト時間の価格を取得します。
ObjectGetShiftByValue(2)intオブジェクト中の指定した価格のバーインデックス値を取得します。
ObjectGetValueByShift(2)double指定したバーインデックス値にあるオブジェクトの価格を取得します。
TextOut(9)bool取引チャート上に直接テキストを出力します。
TextSetFont(4)boolチャート上のテキストオブジェクトのフォントスタイルを設定します。
TextGetSize(3)boolTextSetFont関数で設定されているチャート上に出力されたテキストの幅と高さを取得します。
※()内の数字は引数の最大数。

テクニカルインジケータ関数 [37]

一般的に使われいるインジケータ (移動平均線など) を呼び出す関数です。
テクニカルインジケータのデータ型はすべて「double型」です。

関数データ型分類説明
iAlligator(12)doubleトレンドAlligator (アリゲーター)。
iBWMFI(3)doubleボリュームBWMFI (Bill Williams Market Facilitation Index [ビル・ウィリアムズの市場簡素化指数])。
iEnvelopes(9)doubleトレンドエンベロープ (Envelopes)。
iEnvelopesOnArray(8)doubleトレンド配列格納データのエンベロープ。
iFractals(4)doubleトレンドFractals (フラクタル)。
iIchimoku(7)doubleトレンド一目均衡表。
iMA(7)doubleトレンド移動平均 (Moving Average)。
iMAOnArray(6)doubleトレンド配列格納データの移動平均。
iMomentum(5)doubleトレンドモメンタム (Momentum)。
iMomentumOnArray(4)doubleトレンド配列格納データのモメンタム。
iSAR(5)doubleトレンドSAR (Parabolic Stop And Reversal system [パラボリック ストップ アンド リバーサル システム])。
iStdDev(7)doubleトレンド標準偏差 (Standard Deviation)。
iStdDevOnArray(6)doubleトレンド配列格納データの標準偏差。
iADX(6)doubleトレンド
オシレータ
ADX (Average Directional Movement Index [平均方向性指数])。
iBands(8)doubleトレンド
オシレータ
ボリンジャーバンド (Bollinger Bands)。
iBandsOnArray(7)doubleトレンド
オシレータ
配列格納データのボリンジャーバンド。
iCCI(5)doubleトレンド
オシレータ
CCI (Commodity Channel Index [コモディティチャネルインデックス])。
iCCIOnArray(4)doubleトレンド
オシレータ
配列格納データのCCI。
iMACD(8)doubleトレンド
オシレータ
MACD (Moving Average Convergence Divergence [移動平均 収束 分岐])。
通称で「マックデー」とも言われます。
iAC(3)doubleオシレータAC (Accelerator/Decelerator Oscillator [アクセラレータ / ディセラレータ オシレータ])。
iAO(3)doubleオシレータAO (Awesome Oscillator [オーサム オシレータ])。
iATR(4)doubleオシレータATR (Average True Range)。
iBearsPower(5)doubleオシレータBearsPower(ベアーズパワー)。
iBullsPower(5)doubleオシレータBullsPower(ブルズパワー)。
iDeMarker(4)doubleオシレータDeMarker(デマーカー)。
iForce(6)doubleオシレータForce Index (フォースインデックス [勢い指数])。
iGator(12)doubleオシレータGatorOscillator (ゲーターオシレータ)。
iOsMA(7)doubleオシレータOsMA (Moving Average of Oscillator [オシレータの移動平均])。
iRSI(5)doubleオシレータRSI (Relative Strength Index [相対強度指数])。
iRSIOnArray(4)doubleオシレータ配列格納データのRSI。
iRVI(5)doubleオシレータRVI(Relative Vigor Index [相対活力指数])。
iStochastic(9)doubleオシレータStochastic (ストキャスティクス)。
iWPR(4)doubleオシレータWPR(Williams’ Percent Range [ウィリアムズ パーセント レンジ])。
iMFI(4)doubleオシレータ
ボリューム
MFI (Money Flow Index [マネーフローインデックス])。
iAD(3)doubleボリュームAD (Accumulation/Distribution [累積/分散])。
iOBV(4)doubleボリュームOBV (On Balance Volume [オン バランス ボリューム])。
iCustom(64)double指定したカスタムインジケータ(作成 または 外部のインジケータを組み込んだもの)を計算して、その値を取得します。
※()内の数字は引数の最大数。

イベント操作関数 [4]

 イベントを操作する関数です。

関数データ型説明
EventSetMillisecondTimer(1)boolタイマーをミリ秒単位(1000ミリ秒 = 1秒)で設定します。EA または インジケータで使用することができます。
EventSetTimer(1)boolタイマーを秒単位で設定します。EA または インジケータで使用することができます。
EventKillTimer(0) void  EventSetTimer関数で設定されたイベントタイマーを停止するために使われます。
EventChartCustom(5)bool指定したグラフのカスタムイベントを生成します。
※()内の数字は引数の最大数。

MQL4 基礎 [85]

項目説明
データ型 [16]変数が整数、小数、文字なのかをデータ型を宣言することで識別します。
演算子 [15]足し算、引き算、掛け算、割り算を行なうためのものが数学演算子です。その他、関係、論理演算子があります。
処理 [13]if文(条件分岐)やfor文(繰り返し)などがあります。これらの処理を組み合わせることで複雑な自動取引も可能になります。
機能 [7]すべてのタスクはサブタスクに分割でき、各サブタスクはコード形式で直接表すことも、より小さなサブタスクに分割することもできます。
変数 [4]数値や文字などのデータを自分で設定した文字列へ一時的に入れておくものです。計算結果によって変更させることができます。
プリプロセッサ [30]プリプロセッサは、プログラムがコンパイルされる直前にプログラムソースコードを準備するための MQL4 コンパイラの特別なサブシステムです。

MQL4 (MetaQuotes Language 4) は、さまざまな金融市場を分析するための自動取引システムやカスタムテクニカルインジケーターを作成することを目的としたオブジェクト指向型の高水準プログラミング言語です。リアルタイムで動作するように設計されたさまざまなエキスパートシステムを作成できるだけでなく、取引の意思決定を支援する独自のグラフィカル ツールを作成することもできます。

MQL4は、人気のあるプログラミング言語 C++の概念に基づいています。この言語には、列挙、構造、クラス、およびイベント処理があります。埋め込まれたメインタイプの数を増やすことにより、DLLを介した MQL4の実行可能プログラムと他のアプリケーションとの連携が可能です。MQL4構文は C++の構文に似ているのでC++をやったことがある人は比較的簡単にMQL4プログラミングができるようになるでしょう。

データ型 [16]

整数型・実数型・文字列型 [16]

データ型型名サイズ説明
char整数型1設定可能範囲:-128 ~ 127
short整数型2設定可能範囲:-32,768 ~ 32,767
int整数型4設定可能範囲:-2,147,483,648 ~ 2,147,483,647
long整数型8設定可能範囲:
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
uchar整数型1設定可能範囲:0 ~ 255
ushort整数型,
リテラル
2設定可能範囲:0 ~ 65,535
文字列型の1文字のみを整数に変換します。
uint整数型4設定可能範囲:0 ~ 4,294,967,295
ulong整数型8設定可能範囲:0 ~ 18,446,744,073,709,551,615
float実数型4MQL4では浮動小数点型が使われています。
範囲:1.175494351e-38 ~ 3.402823466e38
double実数型8MQL4では浮動小数点型が使われています。
設定可能範囲:
2.2250738585072014e-308 ~ 1.7976931348623158e308
bool整数型,
論理型
1ブーリアン型とも言います。
true 又は false の真偽で表示します。数値でも表示が可能です。
真 = true = 1。 偽 = false = 0
string文字列型12「ABCあいう」等の文字表示に使用します。
color整数型,
カラー型
4カラー(色)を表示するための型です。10進数、16進数、Webカラー名の3つの方法で設定できます。Webカラーは、全140種類のカラーが用意されています。
datetime整数型,
日時型
81970年1月1日 0時0分0秒からの経過秒数を表示。例えば、
1970年1月1日 0時0分0秒 = 0
1970年1月2日 0時0分1秒 = 86,401
2022年1月1日 0時0分2秒 = 1,640,995,202 となります。
設定可能範囲:
0(1970.01.01 0:00:00)~32,535,244,799(3000.12.31 23:59:59)
関数の引数で日時データとして使用する場合は以下の書き方になります。
datetime dt = D’2023.02.01 12:34:56′; または
datetime dt = StringToTime(“2023.02.01 12:34:56”);
enum整数型,
列挙型
4列挙型は、複数のデータをコンマで区切ってセットされたものになります。1番目のデータが0、2番目が1、3番目が2 として割り当てられます。
void無属性型型が無い型。void型関数はその関数内だけで処理を行ない、データを取得しません。
データを取得する必要が無い関数に使われます。

変数が整数、小数、文字なのかをデータ型を宣言することで識別します。

関数内で使われる引数のデータ型の後ろに「& (ampersand [アンパサンド]) 」が付く場合、その引数は参照渡しでデータが渡されます。詳しくは次の関数例を参考にしてください。関数例1 関数例2

サイズの単位は「byte」。
整数型は小数点が無い数値型、実数型は小数点が有る数値型のことです。

サイズの byte数はメモリ容量を表します。小さいほどメモリを消費しないのでシステムの処理速度が速くなります。

例えば、long型は整数の範囲が広く、char型、short型、int型の範囲も含むので long型のみを使っても動きますが、byte数が大きい分、動きが遅くなります。long型の変数の数が少なければ問題になりませんが、long型の変数の数が多くなってしまうと処理速度に差が出てきます。

構造体、クラス、インターフェイス

構造体 (struct)

structは、複数の異なるデータ型 (voidを除く) をまとめて一つのデータとして取り扱うことができます。MQL4言語には、3個の定義済みの構造体があります。
構造体名は識別子(変数や関数の名前)として使用できません。

struct 構造体名
{
   要素の説明
};
クラス (class)

classは、次の点で構造体と異なります。

  • キーワードクラスは宣言で使用されます。
  • デフォルトでは、特に指定がない限り、すべてのクラスメンバーはアクセス指定子 privateを持ちます。特に明記しない限り、構造体のデータメンバーには、publicとしての既定のアクセスタイプがあります。
  • クラスで仮想関数が宣言されていなくても、クラスオブジェクトには常に仮想関数のテーブルがあります。構造体は仮想関数を持つことができません。 
  • new演算子はクラスオブジェクトに適用できます。この演算子は構造体には適用できません。
  • クラスはクラスからのみ継承でき、構造は構造からのみ継承できます。

クラスと構造体は、明示的なコンストラクタとデストラクタを持つことができます。コンストラクタが明示的に定義されている場合、初期化シーケンスを使用した構造体 または クラス変数の初期化はできません。 

コンストラクタとデストラクタの概念は、一部の関数に特殊な役割があたえられていることを指します。これらの関数は特定のタイミングで自動的に呼び出され、それぞれが特定の目的を果たします。

コンストラクタ

MQL4ではOnInit関数がコンストラクタの役割を果たします。これは、スクリプトインジケータ、またはEAがチャートにロードされたときに一度だけ呼び出される関数です。これは通常、初期設定や変数の初期化など、コードが実行される前に必要なセットアップのために使用されます。

デストラクタ

OnDeinit関数はMQL4でデストラクタの役割を果たします。これは、スクリプト、インジケータ、またはEAがチャートから削除されるとき、またはMetaTraderが閉じられるときに呼び出されます。デストラクタは、リソースの解放、ファイルの閉じる操作、一部のクリーンアップ作業など、コードが完全に停止する前に行うべき任意の作業のために使用されます。

このように、MQL4のコンストラクタ(OnInit関数)とデストラクタ(OnDeinit関数)は、コードのライフサイクルの始めと終わりに関連する特別な任務を処理するためのものです。


動的配列オブジェクト

動的配列

最大 4次元の配列を宣言できます。動的配列(角かっこの最初のペアで指定されていない値の配列) を宣言すると、コンパイラは上記の構造の変数 (動的配列オブジェクト) を自動的に作成し、正しい初期化のためのコードを提供します。
動的配列は、宣言されているブロックの可視領域を超えると自動的に解放されます。

静的配列

すべての有効な次元配列が明示的に指定されている場合、コンパイラは必要なメモリ サイズを事前に割り当てます。このような配列は静的と呼ばれます。それにもかかわらず、コンパイラは、事前に割り当てられた静的バッファ (配列を格納するためのメモリ部分) に関連付けられている動的配列のオブジェクトに追加のメモリを割り当てます。

動的配列オブジェクトを作成するのは、この静的配列をパラメーターとして何らかの関数に渡す必要の可能性があるためです。

構造体の配列

静的配列が構造体のメンバーとして宣言されている場合、動的配列オブジェクトは作成されません。これは、Windows API で使用されるデータ構造の互換性を確保するために行われます。

ただし、構造体のメンバーとして宣言された静的配列も MQL5関数に渡すことができます。この場合、パラメータを渡すと、動的配列の一時オブジェクトが作成されます。このようなオブジェクトは、静的配列 (構造体のメンバー) にリンクされます。


オブジェクトポインタ

オブジェクトポインタとは、クラスを作成し、メインの関数などでオブジェクトを宣言する時にポインタを用いることです。ここで言うポインタとは、変数のアドレス(メモリ上の番号)を記憶する変数になります。

MQL4では、new演算子を使って複合型のオブジェクトを動的に作成することがあります。new演算子は作成したオブジェクト記述子を返します。この記述子の大きさは 8バイトです。構文的には MQL4のオブジェクト記述子は C++のポインタに類似しています。


演算子 [15]

足し算、引き算、掛け算、割り算を行なうためのものが数学演算子です。その他、関係、論理演算子があります。

数学演算子説明
+変数や数値の加算(足し算)。
変数や数値の減算(引き算)。
*変数や数値の乗算(掛け算)。
/変数や数値の除算(割り算)。
%変数や数値の除算の余り。
++変数に1を加算。
– –変数に1を減算。
※乗数や平方根、対数計算などは数学関数にあります。
関係演算子説明
==a == b; a と b が等しければ true。それ以外は false。
!=a != b; a と b が等しくなければ true。それ以外は false。
<=a <= b; a が b 以下なら true。それ以外は false。
>=a >= b; a が b 以上なら true。それ以外は false。
<a < b; a が b 未満なら true。それ以外は false。
>a > b; a が b より大きいなら true。それ以外は false。
論理演算子説明
&&a && b; 条件 a と条件 b の両方の条件が trueであること。
||a || b; 条件 a と条件 b のどちらかの条件が trueであること。

処理 [13]

if文 (条件分岐) やfor文 (繰り返し) などがあります。これらの処理を組み合わせることで複雑な自動取引も可能になります。

処理名説明
if文条件処理。条件判定をして条件ごとに処理を行ないます。
switch文条件処理。条件判定をして条件ごとに処理を行ないます。条件判定が多い時に使用するとコードが見やすくなります。但し、条件判定は整数、1文字の文字列 (ushort型) での2つのみです。
for文繰り返し処理。条件が満たされるまで繰り返し処理を行ないます。
while文繰り返し処理。条件が満たされるまで繰り返し処理を行ないます。
do while文繰り返し処理。条件が満たされるまで繰り返し処理を行ないます。
continue繰り返し処理の始まりへ移動。現在の繰り返し処理の始めに戻って現在の繰り返し処理の続きを行ないます。
break処理の終了。現在の処理 (条件分岐・繰り返し処理) から抜けて次の処理を行ないます。
return現在の関数処理の終了。処理結果の内容を返します。関数が整数型、実数型の時に必要です。
{}複合演算子。1つ以上の演算は中カッコ{}で囲んで使用します。
;1つの式の終了を意味します。
?:三項演算子。if文の代わり使われることがあります。
newnew演算子。新しいクラスオブジェクトを作成します。
オブジェクトコンストラクタを呼び出して、作成されたオブジェクトの記述子を返します。失敗した場合、NULLを返します。
new演算子は、クラスオブジェクトにのみ適用できます。構造体には適用できません。
オブジェクトの配列を作成するために演算子を使用してはなりません。これを行うには、ArrayResize関数を使用します。
deletedelete演算子。new演算子で作成されたクラスオブジェクトを削除します。
対応する終了処理関数を呼び出して、オブジェクトが占有していたメモリを解放します。既存のオブジェクトの実記述子がオペランドとして使用されます。削除操作の実行後、オブジェクトポインタは無効になります。

機能 [7]

すべてのタスクはサブタスクに分割でき、各サブタスクはコード形式で直接表すことも、より小さなサブタスクに分割することもできます。関数は、解決するサブタスクのコードを記述するために使用されます。関数の機能を記述するコードは、関数定義と呼ばれます。

イベント処理関数 [7]

イベント発生時に動作する関数です。
MT4でのイベントとは、MT4の相場の状況変化で、例えば「EAがチャートに挿入された」「チャート上の価格が更新された」などのことをイベントと言います。そして、それらのイベントの発生する都度実行される関数をイベントハンドラと言います。

イベントハンドラデータ型説明
OnInit(0)void, int①プログラムをチャートに挿入するなどロードした時
②再コンパイルした時
③通貨ペアやチャート時間軸を変更した時
④パラメーターの入力を変更した時
①~④のいずれかが発生した時に実行されます。別名「初期化関数」とも言われます。
OnDeinit(1) void①プログラムをチャートから削除するなどアンロードした時
②チャートが閉じられた時
①②のいずれかが発生した時に実行されます。主にチャート上に描画がある時にアンロードと同時に削除する関数が組み込まれます。別名「終了関数」とも言われます。
OnTick(0)voidTick(価格変動)の都度実行されます。EAのみに使われる関数です。EAプログラムのメインがここに記載されることになります。
OnTimer(0)voidタイマーイベントが発生すると呼び出され、命令を実行します。EAとインジケータに使える関数で、スクリプトは使用不可。タイマーイベントは、EventSetTimer関数と EventSetMillisecondTimer関数によって発生して、EventKillTimer関数でタイマーイベントを解除します。
OnCalculate(10)intこの関数は、カスタムインジケータのインジケータ値を計算する必要がある場合にのみ呼び出されます。計算は、プログラムがチャートに挿入された直後と Tick(価格変動)の都度実行されます。OnCalculate関数の戻り値は int型です。
OnTester(0)doubleExpert Advisorのストラテジーテスターが終了した後に自動的に実行されます。
OnChartEvent(4)voidChartEventイベントグループのハンドラーで、チャートイベントを実行します。
※()内の数字は引数の最大数。

変数 [4]

項目説明
アクセス指定子 [1]コンパイラが変数、構造体またはクラスのメンバーにアクセスする方法を定義します。
ストレージクラス [3]ストレージクラスの修飾子は、対応する変数が事前に割り当てられたメモリ領域 (グローバルプール) に分散されていることをコンパイラに示します。又、これらの修飾子は、変数データの特別な処理を表します。

数値や文字などのデータを自分で設定した文字列へ一時的に入れておくものです。計算結果によって変更させることができます。

任意設定可能な変数は、ローマ字で始まる1字以上の文字列で作成することができます。ローマ字の大文字と小文字は区別されます。2字目以降であればローマ字、数字、_ (アンダーバー) を使うことができます。

但し、MQL上で役割を持つ文字列 (「データ型」や「定数」、次の「定義済変数」など) は、新規に変数の文字列として作成する変数とすることはできません。

アクセス指定子 [1]

アクセス指定子は、コンパイラが変数、構造体またはクラスのメンバーにアクセスする方法を定義します。

指定子説明
 const 変数を定数として宣言します。
故に、初期化する時(最初)に変数の値を決定した後、プログラム処理中この変数を変更することができなくなります。

構造体とクラスのメンバーにアクセスするには、次の修飾子を使用します。

修飾子説明
public変数 または クラスメソッドへの無制限のアクセスを許可します。
protectedこのクラスのメソッドからのアクセスとパブリックに継承されたクラスのメソッドからのアクセスを許可します。他のアクセスは不可能です。
private同じクラスのメソッドからのみ、変数とクラスメソッドへのアクセスを許可します。
virtualクラスメソッドにのみ適用され(構造体のメソッドには適用されません)、このメソッドをクラスの仮想関数のテーブルに配置する必要があることをコンパイラに伝えます。

ストレージクラス [3]

ストレージクラスのこれらの修飾子は、対応する変数が事前に割り当てられたメモリ領域 (グローバルプール) に分散されていることをコンパイラに示します。又、これらの修飾子は、変数データの特別な処理を表します。
ローカルレベルで宣言された変数が静的変数でない場合、そのような変数のメモリはプログラムスタックで自動的に割り当てられます。配列が宣言されているブロックの可視領域を超えると、非静的配列に割り当てられたメモリの解放も自動的に実行されます。

修飾子説明
static静的変数を定義します。
static修飾子は、データ型の前に書きます。
input外部変数を定義します。
input修飾子は、データ型の前に書きます。
input修飾子の変数は、mql4プログラム内で変更はできません。
読取専用でアクセスすることはできません。
input変数の値は、ユーザーがプログラムプロパティウィンドウから変更できます。
外部変数は常に、OnInit関数が呼び出される直前に再初期化されます。
extern外部変数を定義します。
extern修飾子は、データ型の前に書きます。
こちらは input修飾子とは違い mql4プログラム内で変数の変更ができます。

ローカル変数

関数内で宣言された変数はローカルです。ローカル変数の有効範囲は、それが宣言されている関数の範囲に限定されます。ローカル変数は、任意の式の結果によって初期化できます。関数を呼び出すたびに、ローカル変数が初期化されます。ローカル変数は、対応する関数のメモリ領域に格納されます。

int somefunc()
  {
   int ret_code=0;
   ...
   return(ret_code);
  }

変数の有効範囲は、変数を参照できるプログラム部分です。ブロック内 (内部レベル) で宣言された変数は、ブロック内が有効範囲になります。ブロックの有効範囲は、変数宣言で始まり、最後の右中括弧で終わります。

関数の先頭で宣言されたローカル変数にもブロックの有効範囲があり、ローカル変数である関数パラメータもあります。どのブロックにも変数の宣言を含めることができます。ブロックがネストされ、外部ブロックの識別子が内部ブロックの識別子と同じ名前を持つ場合、外部ブロックの識別子は、内部ブロックの操作が終了するまで隠されます。

ローカル変数とグローバル変数はプログラム上で混ざらないように注意する必要があります。詳しくはこちらを参考にしてください。

仮パラメータ

関数に渡されるパラメータはローカルです。有効範囲は関数ブロック内です。仮パラメータは、1つの関数内で定義された外部変数およびローカル変数とは異なる名前にする必要があります。一部の値は、関数ブロックの仮パラメータに割り当てることができます。仮パラメータが const修飾子で宣言されている場合、その値は関数内で変更できません。

void func(const int & x[], double y, bool z)
  {
   if(y>0.0 && !z)
      Print(x[0]);
   ...
  }

仮パラメータは定数で初期化できます。この場合、初期値はデフォルト値と見なされます。初期化されたパラメータの隣にあるパラメータも初期化する必要があります。

静的変数

staticのストレージクラスは、静的変数を定義します。static修飾子は、データ型の前に示されます。

int somefunc()
  {
   static int flag=10;
   ...
   return(flag);
  }

静的変数は、任意の式で初期化できる単純なローカル変数とは異なり、その型に対応する定数または定数式で初期化できます。

静的変数は、プログラムの実行時から存在し、プログラムのロード後に一度だけ初期化されます。初期値が指定されていない場合、静的ストレージクラスの変数は 0の初期値を取ります。静的変数の有効範囲は、グローバル変数と同じ、MQL4プログラムの有効期間です。静的変数の有効範囲は、変数が定義されているブロックに対してローカルです。

staticキーワードで宣言されたローカル変数は、関数の有効期間を通じて値を保持します。次の各関数呼び出しでは、そのようなローカル変数には、前回の呼び出し時に保持されていた値が含まれます。

関数の仮パラメータを除く、ブロック内のすべての変数は、静的として定義できます。ローカル レベルで宣言された変数が静的変数でない場合、そのような変数のメモリはプログラムスタックで自動的に割り当てられます。

グローバル変数

グローバル変数は、変数の宣言を関数の外に置くことによって作成されます。グローバル変数は、関数と同じレベルで定義されます。つまり、どのブロックでもローカルではありません。

int  GlobalFlag = 10; // グローバル変数
void OnInit(){    ...   } 

グローバル変数の有効範囲は本プログラムが書かれている全体です。グローバル変数は、プログラムで定義されたすべての関数からアクセスできます。別の初期値が定義されていない場合は 0で表示されます。グローバル変数は、その型に対応する定数または定数式によってのみ初期化できます。

グローバル変数は、プログラムがクライアントターミナルメモリにロードされた後、OnInitイベントの最初の処理の前に 1回だけ初期化されます。クラスオブジェクトを表すグローバル変数の場合、初期化中に対応するコンストラクタが呼び出されます。

グローバル変数の有効範囲は、静的変数と同じ、MQL4プログラムの有効期間です。

グローバル変数とローカル変数はプログラム上で混ざらないように注意する必要があります。詳しくはこちらを参考にしてください。

(注) 上記のように宣言された変数は、GlobalVariable…関数を使用してアクセスできるクライアントターミナルのグローバル変数とは違いますので注意してください。これらのグローバル変数の違いについてはこちらを参考にしてください。


プリプロセッサ [30]

プリプロセッサは、プログラムがコンパイルされる直前にプログラムソースコードを準備するための MQL4コンパイラの特別なサブシステムです。
プリプロセッサにより、ソースコードの可読性が向上します。コードは、MQL4プログラムのソースコードを含む特定のファイルを含めることによって構造化できます。特定の定数にニーモニック名を割り当てることができるため、コードの可読性が向上します。
プリプロセッサは、MQL4プログラムの特定のパラメータを決定することもできます。

マクロ置換 [2]

マクロ置換 (#define、#undef)は、コードをより効率的な管理をするために使用されます。

#define

#define は、コード中に一貫した値または表現を維持する便利なツールです。定数にニーモニックを割り当てることができます。#defineには、2つの形式があります。

#define identifier expression                // パラメータ無しの形式
#define identifier(par1,... par8) expression // パラメトリックな形式

パラメータ無しの形式

これは、特定の値を名前に関連付けるために使われます。これはプログラム全体で一貫した値を維持するのに役立ちます。例えば、#define PI 3.14159と書くと、コード全体でPIを使うと3.14159と解釈されます。これは、コードの可読性を向上させ、値の変更が必要な場合に一箇所で変更できるという利点があります。

パラメトリックな形式

これは、指定したパラメータを持つ一種のマクロとして機能します。例えば、

#define A 2+3
#define B 5-1
#define MUL(a, b) ((a)*(b))
 
double c = MUL(A,B);

とすると、c=((2+3)*(5-1)) を計算することになります。これは複雑な表現や頻繁に使うコードスニペットを短く、簡単にするのに便利です。これは複雑な表現や頻繁に使うコードスニペットを短く、簡単にするのに便利です。パラメトリック な形式を使用する場合、最大 8つのパラメータまで持つことができます。

#undef

#undef は、#defineで定義したマクロを取り消すために使われます。例えば、#define PI 3.14159と定義した後で、「#undef PI」を使うと、PIは 3.14159とは解釈されなくなります。

#define  PI 3.14159 // 値の定義
#undef   PI         // 値の取消

注意点として、「#define」や「#undef」などのプリプロセッサは、一般的なコードとは異なり、行の最後にセミコロン(;) をつける必要はありません。また、これらのプリプロセッサはコードのどこにでも置くことができますが、通常はコードの最初に置くことが一般的です。

プログラムのプロパティ [28]

プログラムのプロパティ(#property)を設定します。
すべての MQL4プログラムは、#propertyの特定パラメーターを指定することができます。これは、明示的に起動する必要はなく、クライアント端末がプログラムの適切なサービスを提供するためのものです。第一に、これはインジケータの外部設定に関するものです。includeインクルードファイルに記述されているプロパティは完全に無視されます。この #propertyは、メインの MQL4ファイルで指定しなければなりません。

プロパティデータ型説明
strict厳格なコンパイルを行ないます。通常は設定するようにしてください。又、これを設定した場合、EAのパラメータの入力の変数に日本語が使用できるようになります。
iconstringex4プログラムのアイコン画像ファイルへのパスを指定します。パスの指定ルールはリソースの場合と同じです。プロパティは、MQL4ソースコードを使用してメインモジュールで指定します。アイコンファイルは ico形式です。
linkstring作成者や会社のウェブサイトへのリンクを記載します。
copyrightstring作成者名や会社名を記載します。
versionstringプログラムのバージョンを記載します。最大31文字までです。
descriptionstringMQL4プログラムの簡単な説明文を記載します。複数行で記載できます。全説明文の合計の長さは、改行を含めて 511文字までです。
stacksizeintMQL4プログラムのスタックサイズを指定します。
チャート上でスクリプトまたは EAを起動すると、最低 8MB のスタックが割り当てられます。インジケータの場合、スタックサイズは常に 1MB固定されています。
ストラテジーテスターでプログラムが起動されると、常に 8MBのスタックが割り当てられます。
librarystart関数に割り当てられていない export修飾子を持つ関数は、他の MQL4プログラムにインポートすることができます。
indicator_chart_windowチャートウィンドウにインジケーターを表示させます。
indicator_separate_windowインジケータを別のウィンドウに表示させます。
indicator_heightintインジケータサブウィンドウをピクセル単位で固定して高さ (プロパティINDICATOR_HEIGHT )を設定。
indicator_buffersintインジケータ計算用バッファ数を設定。
indicator_minimumdoubleサブインジケータウィンドウの下限スケール設定。
indicator_maximumdoubleサブインジケータウィンドウの上限スケール設定。
indicator_labelNstringデータウィンドウに表示される N番目のラベルを設定。
indicator_colorNcolorデータウィンドウに表示される N番目の色を設定。
indicator_widthNintデータウィンドウに表示される N番目の線の太さを 1~5で設定。
indicator_styleNintデータウィンドウに表示される N番目の線の種類を設定。
indicator_typeNintデータウィンドウに表示される N番目のインジケータ描画スタイルのタイプを設定。
indicator_levelNdoubleサブインジケータウィンドウに N番目の水平レベルを表示。
indicator_levelcolorcolorインジケータの水平レベルの色。
indicator_levelwidthintインジケータの水平レベルの線の太さ。
indicator_levelstyleintインジケーターの水平レベルの線のスタイル。
script_show_confirmスクリプトを実行する前に確認を表示。
script_show_inputsスクリプトを実行する前にプロパティウィンドウを表示し、この確認ウィンドウを無効にします
tester_filestring仮想サーバーに送信される <terminal_data_folder>\MQL4\Files\ からのファイル名
tester_indicatorstring仮想サーバーに送信される <terminal_data_folder>\MQL4\Indicators\ からのインジケータファイル名
tester_librarystring仮想サーバーに送信される <terminal_data_folder>\MQL4\Libraries\ のライブラリファイル名

ファイルのインクルード

「#include」は include インクルードファイルをシステムに組み込ませる時に使います。「#include」はプログラム内のどこにでも配置できますが、通常はソースコードの先頭に配置されます。

#include <WinUser32.mqh>
#include "mylib.mqh"

プリプロセッサは、#include <file_name>行をWinUser32.mqh ファイルの内容に置き換えます。山括弧は、WinUser32.mqh ファイルが標準ディレクトリ (通常は、terminal_installation_directory\MQL4\Include ) から取得されることを示します。現在のディレクトリは検索に含まれません。

ファイル名が “”(引用符)で囲まれている場合は、現在のディレクトリ (メインソースファイルを含む) で検索が行われます。標準ディレクトリは検索に含まれません。

定数・列挙・構造体 [1443]

プログラムの記述を簡素化し、プログラムのテキストを認識しやすくするために、MQL4言語は定義済みの標準定数と列挙値があります。標準定数はマクロに似ており、int型です。定数は、目的別にグループ化されています。

項目説明
チャート定数 [87]チャートの様々なプロパティを記述する定数です。
オブジェクト定数 [370]価格チャートに表示できる 40個のグラフィカルオブジェクトがあり、それを作成します。オブジェクト定数は 9つに分類されます。
インジケータ定数 [54]標準及びカスタムインジケータを操作するために使用されます。
環境ステータス定数 [247]MQL4プログラムのプロパティからクライアントターミナル、金融商品、アカウントに関する情報を表示します。
トレード定数 [40]取引の過程で様々な情報を指定する定数です。
名前付き定数 [82]MQL4言語の定数です。
データ構造 [3]MQL4言語は、8個の定義済み構造を使用できます。
エラーと警告のコード [524]コンパイルのメッセージと取引リクエストに対する取引サーバーの応答内容です。
入出力定数 [36]ファイル関数を操作して MessageBox関数によって画面にメッセージを表示します。
MQL4定義enum型一覧MQL4で定義されている enum型(列挙型)の一覧です。

チャート定数 [87]

チャートの様々なプロパティを記述する定数です。

項目説明
チャートイベントの種類 [12]定義済みの OnChartEvent関数を使用して処理できるイベントです。
ENUM_CHART_EVENT [12]
チャートの時間軸 [10]チャート時間軸の識別子。
ENUM_TIMEFRAMES [10]
チャートプロパティ [57]チャートプロパティ列挙の識別子は、チャートを操作するための関数のパラメーターとして使用されます。
ENUM_CHART_PROPERTY_INTEGER [49]
ENUM_CHART_PROPERTY_DOUBLE [7]
ENUM_CHART_PROPERTY_STRING [1]
チャート位置定数 [3]ChartNavigate関数の位置パラメーターの値です。
ENUM_CHART_POSITION [3]
チャートの表示 [5]価格チャートは、次の 3つの方法で表示可能です。
バー(Bars)、ローソク足(Candles)、線(Line)
又、この価格チャートはモードの切り替えで Tick回数にもできます。
価格チャートは ChartSetInteger関数で表示させます。
ENUM_CHART_MODE [3]
ENUM_CHART_VOLUME_MODE [2]

オブジェクト定数 [370]

価格チャートに表示できる 40個のグラフィカルオブジェクトがあり、それを作成します。オブジェクト定数は 9つに分類されます。

項目説明
オブジェクトタイプ [40]オブジェクトタイプの識別子です。
ObjectCreate関数を使用してグラフィカルオブジェクトを作成する場合、作成するオブジェクトのタイプを指定する必要があります。これは、ENUM_OBJECT 列挙値の 1つにすることができます。オブジェクト型識別子は、ObjectCreate関数、ObjectsDeleteAll関数、およびObjectType関数で使用されます。
グラフィカルオブジェクトを操作する関数を使用してオブジェクトプロパティを更に指定することができます。
ENUM_OBJECT [40]
オブジェクトプロパティ [79]オブジェクトのプロパティの設定と取得をします。
グラフィカルオブジェクトは、オブジェクトタイプに応じて様々なプロパティを持つことができます。テクニカル分析で使用されるすべてのオブジェクトは、時間と価格の座標に関連しています。 しかし、チャート上の表示に関連するユーザーインターフェイスを改善することを目的とした補助オブジェクトが複数あります。
オブジェクトインデックス値 [26]
ENUM_OBJECT_PROPERTY_INTEGER [35]
ENUM_OBJECT_PROPERTY_DOUBLE [5]
ENUM_OBJECT_PROPERTY_STRING [7]
ENUM_BORDER_TYPE [3]
ENUM_ALIGN_MODE [3]
オブジェクトバインディングのメソッド [11]チャート内オブジェクト配置の定数。
オブジェクトバインディングのメソッド [11]
チャートコーナー [4]オブジェクトがチャート上に配置されるコーナーを設定。
チャートコーナー [4]
Wingdings文字 [224]OBJ_ARROWオブジェクトで使用される Wingdingsの文字コード。
Wingdings文字コード [224]
矢印コード [12]矢印記号のコード。
事前定義された矢印コード [6]
価格と時間を正確に示す特別な矢印コード [6]

オブジェクトのプロパティ

オブジェクトインデックス値 [26]

ObjectGet関数、ObjectSet関数で使用されます。

定数データ型説明
0OBJPROP_TIME1datetime1番目の座標時刻部分を設定/取得。
1OBJPROP_PRICE1double1番目の座標の価格部分を設定/取得。
2OBJPROP_TIME2datetime2番目の座標時刻部分を設定/取得。
3OBJPROP_PRICE2double2番目の座標の価格部分を設定/取得。
4OBJPROP_TIME3datetime3番目の座標時刻部分を設定/取得。
5OBJPROP_PRICE3double3番目の座標の価格部分を設定/取得。
6OBJPROP_COLORcolorオブジェクトの色を設定/取得。
7OBJPROP_STYLEintオブジェクトの線スタイルを設定/取得。
ENUM_LINE_STYLE 列挙値で設定。
8OBJPROP_WIDTHintオブジェクトの線幅を 1~5の範囲で設定/取得。
9OBJPROP_BACKboolオブジェクトの背景表示を設定/取得。
10OBJPROP_RAYboolオブジェクト線の延長を設定/取得。
11OBJPROP_ELLIPSEboolフィボナッチアークの楕円フラグを設定/取得。
12OBJPROP_SCALEdoubleスケールオブジェクトプロパティを設定/取得。
13OBJPROP_ANGLEdouble角度オブジェクトプロパティを度単位で設定/取得。
14OBJPROP_ARROWCODEuchar矢印のコードオブジェクトプロパティを設定/取得。
15OBJPROP_TIMEFRAMESint時間軸オブジェクトプロパティの可視設定をビット単位で設定/取得。
16OBJPROP_DEVIATIONdouble標準偏差オブジェクトの偏差プロパティを設定/取得。
100OBJPROP_FONTSIZEintテキストオブジェクトのフォント サイズを設定/取得。
101OBJPROP_CORNERintラベルオブジェクトのアンカーコーナー プロパティを設定/取得。ENUM_BASE_CORNER 列挙値で設定。
102OBJPROP_XDISTANCEint固定するX軸距離オブジェクトプロパティをピクセル単位で設定/取得。
103OBJPROP_YDISTANCEint固定するY軸距離オブジェクトプロパティをピクセル単位で設定/取得。
200OBJPROP_FIBOLEVELSintフィボナッチオブジェクトレベルカウントを 0~32の範囲で設定/取得。
201OBJPROP_LEVELCOLORcolorオブジェクトレベルの線の色を設定/取得。
202OBJPROP_LEVELSTYLEintオブジェクトレベルのラインスタイルを設定/取得。ENUM_LINE_STYLE 列挙値で設定。
203OBJPROP_LEVELWIDTHintオブジェクトレベルの線幅を 1~5の範囲で設定/取得。
210+nOBJPROP_FIRSTLEVEL+nintインデックス n のフィボナッチオブジェクトレベルの値を 0~31の範囲で設定/取得。

オブジェクトバインディングのメソッド [11]

項目説明
ENUM_ANCHOR_POINT [9]ObjectSetInteger関数で使用される列挙値。
ENUM_ARROW_ANCHOR [2]グラフィカルオブジェクトの矢印(OBJ_ARROW)の座標にリンクする方法。
オブジェクト定数X/Y幅高日時
価格
テキストOBJ_TEXT
ラベルOBJ_LABEL
ボタンOBJ_BUTTON
ビットマップOBJ_BITMAP
ビットマップラベルOBJ_BITMAP_LABEL
編集OBJ_EDIT
長方形ラベルOBJ_RECTANGLE_LABEL
  • X/Y:チャートの角を基準としたピクセル単位で指定されたアンカーポイントの座標。
  • 幅高:〇は「読み取り専用」。オブジェクトには幅と高さがあります。「読み取り専用」の場合、幅と高さの値は、オブジェクトがグラフにレンダリングされた時にのみ計算されます。
  • 日時価格:アンカーポイントの座標は、日時と価格の値を使用して指定されます。
  • OBJPROP_CORNER:アンカーポイントの座標が指定されるチャートコーナーを定義します。ENUM_BASE_CORNER 列挙値の 4つの値から選択します。
  • OBJPROP_ANCHOR:オブジェクト自体のアンカーポイントを定義し、ENUM_ANCHOR_POINT 列挙値の 9つの値から選択します。ピクセル単位の座標は、この点から選択されたチャートコーナーまで指定されます。
  • OBJPROP_ANGLE:オブジェクトの反時計回りの回転角度を定義します。

上記オブジェクトの テキスト、ラベル、ビットマップ、ビットマップラベルは、ENUM_ANCHOR_POINT 列挙値によって定義された 9つの異なる座標バインド方法のいずれかを持つことができます。

チャートコーナー [4]

項目説明
ENUM_BASE_CORNER [4]ObjectSetInteger関数で使用されます。

座標がピクセル単位で指定されるチャートコーナーを設定できるグラフィカルオブジェクトが多数あります。これらは、次のタイプのオブジェクトです。

オブジェクト定数X/Y幅高日時
価格
テキストOBJ_TEXT
ラベルOBJ_LABEL
ボタンOBJ_BUTTON
ビットマップOBJ_BITMAP
ビットマップラベルOBJ_BITMAP_LABEL
編集OBJ_EDIT
長方形ラベルOBJ_RECTANGLE_LABEL
  • X/Y:チャートの角を基準としたピクセル単位で指定されたアンカーポイントの座標。
  • 幅高:〇は「読み取り専用」。オブジェクトには幅と高さがあります。「読み取り専用」の場合、幅と高さの値は、オブジェクトがグラフにレンダリングされた時にのみ計算されます。
  • 日時価格:アンカーポイントの座標は、日時と価格の値を使用して指定されます。
  • OBJPROP_CORNER:アンカーポイントの座標が指定されるチャートコーナーを定義します。ENUM_BASE_CORNER 列挙値の 4つの値から選択します。
  • OBJPROP_ANCHOR:オブジェクト自体のアンカーポイントを定義し、ENUM_ANCHOR_POINT 列挙値の 9つの値から選択します。ピクセル単位の座標は、この点から選択されたチャートコーナーまで指定されます。
  • OBJPROP_ANGLE:オブジェクトの反時計回りの回転角度を定義します。

Wingdings文字コード [224]

OBJ_ARROWオブジェクトで使用される Wingdingsの文字コードです。全部で 224個ありますが、mql4では表示できない記号もあるので使用する時は表示確認の上、ご使用ください。

矢印コード [12]

事前定義された矢印コード [6]

IDで定義されている矢印コードです。

ID説明
67SYMBOL_THUMBSUP サムズアップ記号。
68SYMBOL_THUMBSDOWNサムズダウン記号。
241SYMBOL_ARROWUP上矢印記号。
242SYMBOL_ARROWDOWN下矢印記号。
251SYMBOL_STOPSIGN一時停止の標識記号。※mql4では表示できません。
252SYMBOL_CHECKSIGNチェック記号。

価格と時間を正確に示す特別な矢印コード [6]

IDで定義されている矢印コードですが、次の記号については、mql4で表示することができません。

ID説明
1先端が右上向き矢印
2先端が右下向き矢印
3左向き三角形
4ダッシュ記号
5SYMBOL_LEFTPRICE左側の価格ラベル
6SYMBOL_RIGHTPRICE右側の価格ラベル

インジケータ定数 [54]

インジケータ定数は、MQL4に備えられている標準及びカスタムインジケータを操作するための引数として使用されます。 

項目説明
価格定数 [7]計算に適用する価格[始値、高値、安値、終値]の定数。
ENUM_APPLIED_PRICE [7]
時系列配列識別子 [6]ArrayCopySeries関数、iHighest関数 および iLowest関数で使用される時系列配列識別子。
時系列配列識別子 [6]
移動平均方法 [4]移動平均の方法を表す定数。
ENUM_MA_METHOD [4]
インジケータライン識別子 [15]iMACD関数、iRVI関数、iStochastic関数 [2]
iADX関数 [3]
iBands関数、iEnvelopes関数、iEnvelopesOnArray関数、iFractals関数、iGator関数 [2]
iAlligator関数 [3]
iIchimoku関数 [5]
描画スタイル [11]線と描画スタイルを設定。
SetIndexStyle関数の描画スタイル [6]
ENUM_LINE_STYLE [5]
カスタムインジケータのプロパティ [11]カスタムインジケータのプロパティ情報の列挙値。
ENUM_CUSTOMIND_PROPERTY_INTEGER [6]
ENUM_CUSTOMIND_PROPERTY_DOUBLE [3]
ENUM_CUSTOMIND_PROPERTY_STRING [2]

時系列配列識別子 [6]

ArrayCopySeries関数、iHighest関数 および iLowest関数で使用される時系列配列識別子です。

定数説明
0MODE_OPEN始値
1MODE_LOW安値
2MODE_HIGH高値
3MODE_CLOSE終値
4MODE_VOLUME出来高
iLowest関数、iHighest関数で使用
5MODE_TIMEバーの開始時間
ArrayCopySeries関数で使用

インジケータライン識別子 [15]

iMACD関数、iRVI関数、iStochastic関数で使用されるインジケータライン識別子。

ID説明
0MODE_MAINベースライン。
1MODE_SIGNALシグナルライン。

iADX関数で使用されるインジケータライン識別子。

ID説明
0MODE_MAINベースライン。
1MODE_PLUSDI+DIインジケータライン。
2MODE_MINUSDI-DIインジケータライン。

iBands関数、iEnvelopes関数、iEnvelopesOnArray関数、iFractals関数、iGator関数で使用されるインジケータライン識別子。

ID説明
0MODE_MAINベースライン。
1MODE_UPPER上のライン。
2MODE_LOWER下のライン。

iAlligator関数で使用されるインジケータライン識別子。

ID説明
1MODE_GATORJAWJaw(顎)ライン。
2MODE_GATORTEETHTeeth(歯)ライン。
3MODE_GATORLIPSLips(唇)ライン。

要求されたデータのソースとして iIchimoku関数の呼び出しで使用される一目均衡表識別子。

ID説明
1MODE_TENKANSEN転換線。
2MODE_KIJUNSEN基準線。
3MODE_SENKOUSPANA先行スパンA。
4MODE_SENKOUSPANB先行スパンB。
5MODE_CHIKOUSPAN遅行線。

 

描画スタイル

SetIndexStyle関数の描画スタイル [6]

SetLevelStyle関数の描画スタイル列挙値。いずれかの値を指定します。width=1 の場合に有効です。

定数説明
0DRAW_LINE線を描画します。
1DRAW_SECTIONセクションを描画します。
2DRAW_HISTOGRAMヒストグラムを描画します。
3DRAW_ARROW矢印(記号)を描画します。
4DRAW_ZIGZAG奇数と偶数のインジケータバッファ間のセクションを描画します。
12DRAW_NONE描画しません。

環境ステータス定数 [247]

MQL4プログラムのプロパティからクライアントターミナル、金融商品、アカウントに関する情報を表示します。MQL4プログラムの現在のランタイム環境を表示する定数は、次のグループに分けられます。

項目説明
クライアントターミナルプロパティ [46]クライアントターミナルに関する情報を取得します。
ENUM_TERMINAL_INFO_INTEGER [39]
ENUM_TERMINAL_INFO_DOUBLE [1]
ENUM_TERMINAL_INFO_STRING [6]
MQL4プログラムのプロパティ [21]実行中のMQL4プログラムのプロパティを取得します。実行を制御するのに使われます。
ENUM_MQL_INFO_INTEGER [12]
ENUM_MQL_INFO_STRING [2]
ENUM_PROGRAM_TYPE [3]
ENUM_LICENSE_TYPE [4]
シンボルプロパティ [113]通貨ペアに関する情報を取得します。
マーケット情報識別子(MarketInfo関数用) [29]
ENUM_SYMBOL_INFO_INTEGER [24]
ENUM_SYMBOL_INFO_DOUBLE [39]
ENUM_SYMBOL_INFO_STRING [5]
ENUM_SYMBOL_TRADE_MODE [5]
ENUM_SYMBOL_TRADE_EXECUTION [4]
ENUM_DAY_OF_WEEK [7]
アカウントプロパティ [30]現在のアカウントに関する情報を取得します。
ENUM_ACCOUNT_INFO_INTEGER [7]
ENUM_ACCOUNT_INFO_DOUBLE [14]
ENUM_ACCOUNT_INFO_STRING [4]
ENUM_ACCOUNT_TRADE_MODE [3]
ENUM_ACCOUNT_STOPOUT_MODE [2]
テスト統計 [37]Expert Advisorのストラテジーテスターの結果を取得します。
ENUM_STATISTICS [37]

マーケット情報識別子 [29]

MarketInfo関数で使用されるマーケット情報を取得する識別子です。

識別子説明
1MODE_LOW当日の安値。
2MODE_HIGH当日の高値。
5MODE_TIME直近に受信した Tickの時間 。(サーバー時間)
9MODE_BID直近の売値。
10MODE_ASK直近の買値。
11MODE_POINT通貨ペアの最小値。
12MODE_DIGITS通貨ペアの小数点以下の桁数。
13MODE_SPREADスプレッド。(単位:Point)
14MODE_STOPLEVELストップレベル。(単位:Point)
15MODE_LOTSIZE1ロットあたりの通貨量。
16MODE_TICKVALUE決済通貨Tick
17MODE_TICKSIZETickの最小値。
18MODE_SWAPLONG買いポジションスワップ。1日あたり付与されるスワップ額の計算は各社によって違いますのでご注意ください。
19MODE_SWAPSHORT売りポジションスワップ。1日あたり付与されるスワップ額の計算は各社によって違いますのでご注意ください。
20MODE_STARTINGマーケット開始日。(通常は先物取引で使用する)
21MODE_EXPIRATIONマーケット期日。(通常は先物取引で使用する)
22MODE_TRADEALLOWEDトレード可能な通貨ペア。
可能な場合は 1(true)、それ以外は 0(false)
23MODE_MINLOTロットの最小値。
24MODE_LOTSTEPロットのステップ。ロットで設定ができる最小単位。
25MODE_MAXLOT注文可能な最大ロット数。
26MODE_SWAPTYPEスワップ計算方法。次の 0~3で表示。
0:Point、1:基軸通貨、2:金利、3:証拠金通貨(決済通貨)
27MODE_PROFITCALCMODE損益計算モード。次の 0~2で表示。
0:FX、1:CFD、2:先物
28MODE_MARGINCALCMODE証拠金計算モード。次の 0~3で表示。
0:FX、1:CFD、2:先物、 3:CFDインデックス
29MODE_MARGININIT1ロットの初期証拠金。
30MODE_MARGINMAINTENANCE1ロットをオーダーする時の初期証拠金。
31MODE_MARGINHEDGED1ロットの必要証拠金。
32MODE_MARGINREQUIRED1ロットの購入に必要な余剰証拠金。
33MODE_FREEZELEVELPointでの注文凍結レベル。約定価格が凍結レベルの範囲内にある場合は、決済・キャンセルができません。
注文凍結レベル範囲内の場合は 1(true)、それ以外は 0(false)
34MODE_CLOSEBY_ALLOWEDOrderCloseBy関数を使用して両建てポジション同時決済の可否。
可能な場合は 1(true)、それ以外は 0(false)
「値」は「識別子」を整数型に変換した時の数字になります。途中、値が飛んでいるので注意。「識別子」の代わりに「値」を引数にしても良いです。

トレード定数 [40]

取引の過程で様々な情報を指定する定数です。

項目説明
ヒストリカルデータのプロパティ [4]時系列とインジケータへのアクセス関数を使用する時の追加の通貨ペア情報の列挙値。SeriesInfoInteger関数で使用されます。
ENUM_SERIES_INFO_INTEGER [4]
注文のプロパティ [6]OrderSend関数で注文するの時の種類です。
オーダープロパティ [6]
シグナルのプロパティ [30]トレードシグナルとシグナルコピー設定のプロパティの列挙値です。
ENUM_SIGNAL_BASE_INTEGER [9]
ENUM_SIGNAL_BASE_DOUBLE [6]
ENUM_SIGNAL_BASE_STRING [5]
ENUM_SIGNAL_INFO_INTEGER [6]
ENUM_SIGNAL_INFO_DOUBLE [3]
ENUM_SIGNAL_INFO_STRING [1]

オーダープロパティ [6]

定数説明
0OP_BUY買いの成行注文。
1OP_SELL売りの成行注文。
2OP_BUYLIMIT買いの指値注文。
3OP_SELLLIMIT売りの指値注文。
4OP_BUYSTOP買いの逆指値注文。
5OP_SELLSTOP売りの逆指値注文。

名前付き定数 [82]

MQL4言語の定数です。MQL4言語で設定された定数の文字列には値も定義されています。

項目説明
定義済みマクロ置換 [8]MQL4プログラム操作に関する情報を取得するためのマクロ定数です。値はコンパイル時に設定されます。
定義済みマクロ置換 [8]
数学定数 [13]予め用意された数学定数です。プログラムの任意の場所で使用可能です。
数学定数 [13]
数値型定数 [30]それぞれの単純な数値タイプは、特定のタイプのタスクを対象としており、正しく使用するとMQL4 プログラムの動作を最適化できます。
数値型定数 [30]
初期化解除の理由コード [10]UninitializeReason関数によって、初期化解除の理由コードが取得されます。
初期化解除の理由コード [10]
オブジェクトポインタの確認 [3]オブジェクトポインタのタイプを確認するため CheckPointer関数が使用されます。この関数は、ENUM_POINTER_TYPE 列挙値を取得します。間違ったポインタを使用するとプログラムの実行は直ちに終了します。
ENUM_POINTER_TYPE [3]
その他の定数 [18]パラメータと変数の状態を示すため、特別な定数が使用されます。
その他の定数 [10]
ENUM_CRYPT_METHOD(暗号化方法) [8]

定義済みマクロ置換 [8]

MQL4プログラム操作に関する情報を取得するためのマクロ定数です。値はコンパイル時に設定されます。

定数型  名  説明
__DATE__日時型ファイルのコンパイル日を取得。
__DATETIME__日時型ファイルのコンパイル日時を取得。
__LINE__整数型マクロが配置されているソースコード内の行番号を取得。
__FILE__文字列型現在コンパイルされているファイル名を取得。
__PATH__文字列型現在コンパイル中のファイルの絶対パスを取得。
__FUNCTION__文字列型マクロが配置されている関数名を取得。
__FUNCSIG__文字列型マクロが配置されている関数名と関数の型を取得。
__MQLBUILD__, __MQL4BUILD__整数型コンパイラのビルド番号を取得。

数学定数 [13]

予め用意された数学定数です。プログラムの任意の場所で使用可能です。

定数説明
M_E2.718281828459045自然対数関数の底(ネイピア数):e
M_LOG2E1.442695040888963対数:log2(e)
M_LOG10E0.4342944819032518対数:log10(e)
M_LN20.6931471805599453自然対数:ln(2)
M_LN102.302585092994046自然対数:ln(10)
M_PI3.141592653589793円周率:π
M_PI_21.570796326794897円周率:π/2
M_PI_40.7853981633974483円周率:π/4
M_1_PI0.3183098861837907円周率:1/π
M_2_PI0.6366197723675814円周率:2/π
M_2_SQRTPI1.128379167095513平方根:2/sqrt(pi)
M_SQRT21.414213562373095平方根:sqrt(2)
M_SQRT1_20.7071067811865476平方根:1/sqrt(2)

数値型定数 [30]

定数説明
CHAR_MIN-128char型の最小値
CHAR_MAX127char型の最大値
UCHAR_MAX255uchar型の最大値
SHORT_MIN-32768short型の最小値
SHORT_MAX32767short型の最大値
USHORT_MAX65535ushort型の最大値
INT_MIN-2147483648int型の最小値
INT_MAX2147483647int型の最大値
UINT_MAX4294967295uint型のる最大値
LONG_MIN-9223372036854775808long型の最小値
LONG_MAX9223372036854775807long型の最大値
ULONG_MAX18446744073709551615ulong型の最大値
DBL_MIN2.2250738585072014e-308double型の最小の正の値
DBL_MAX1.7976931348623158e+308double型の最大値
DBL_EPSILON2.2204460492503131e-016条件を満たす最小値:
1.0+DBL_EPSILON != 1.0 (double型の場合)
DBL_DIG15double型の10進数の有効桁数
DBL_MANT_DIG53double型の仮数部のビット数
DBL_MAX_10_EXP308double型の指数次数の10進数の最大値
DBL_MAX_EXP1024double型の指数次数の最大バイナリ値
DBL_MIN_10_EXP(-307)double型の指数次数の10進数の最小値
DBL_MIN_EXP(-1021)double型の指数次数の最小バイナリ値
FLT_MIN1.175494351e-38float型で表現できる正の最小値
FLT_MAX3.402823466e+38float型で表現できる最大値
FLT_EPSILON1.192092896e-07条件を満たす最小値:
1.0+DBL_EPSILON != 1.0 (float型の場合)
FLT_DIG6float型の有効桁数
FLT_MANT_DIG24float型の仮数のビット数
FLT_MAX_10_EXP38float型の指数次数の10進数の最大値
FLT_MAX_EXP128float型の指数次数の最大バイナリ値
LT_MIN_10_EXP-37float型の指数次数の10進数の最小値
FLT_MIN_EXP(-125)float型の指数次数の最小バイナリ値

それぞれの単純な数値タイプは、特定のタイプのタスクを対象としており、正しく使用するとMQL4 プログラムの動作を最適化できます。

初期化解除の理由コード [10]

UninitializeReason関数によって、初期化解除の理由コード(値 or 定数)が取得されます。
初期化されていない理由コードは、所定の関数 OnDeinit(const int reason)のパラメータとしても渡されます。
値 1(REASON_REMOVE)と 2(REASON_RECOMPILE)はインジケータ用に実装されています。

定数説明
0REASON_PROGRAMEAは ExpertRemove関数を呼び出して操作を終了しました。
1REASON_REMOVEプログラムがチャートから削除されました。
2REASON_RECOMPILEプログラムが再コンパイルされました。
3REASON_CHARTCHANGEシンボル又はチャート時間が変更されました。
4REASON_CHARTCLOSEチャートが閉じられました。
5REASON_PARAMETERS入力パラメータがユーザーによって変更されました。
6REASON_ACCOUNTアカウント設定の変更により、別のアカウントがアクティブ化されたか、取引サーバーへの再接続が発生しました。
7REASON_TEMPLATE新しいテンプレートが適用されました。
8REASON_INITFAILEDこの値は、OnInit()ハンドラーがゼロ以外の値を返したことを意味します。
9REASON_CLOSEターミナルは閉鎖されました。

その他の定数 [10]

パラメータと変数の状態を示すため、特別な定数が使用されます。次のいずれかの値を指定できます。

定数説明
NULLどのタイプでも 0。文字列の空の状態も示します。0
EMPTYパラメータの空の状態を示します-1
EMPTY_VALUEインジケーターバッファーの値が空です。デフォルトのカスタムインジケータの空の値。2147483647
(0x7FFFFFFF)
CLR_NONE,
clrNONE
色が無い状態を示します。-1
CHARTS_MAXターミナルで同時に開くことができるチャートの最大数。100
INVALID_HANDLE不適切なハンドル。-1
IS_DEBUG_MODEMQL4プログラムがデバッグ モードで動作することを示すフラグデバッグモードは 0以外、
デバッグモード以外は 0。
IS_PROFILE_MODEMQL4プログラムがプロファイリング モードで動作することを示すフラグプロファイリングモードは 0以外、
プロファイリングモード以外は 0。
WHOLE_ARRAY配列関数で使用。すべての配列要素が処理されることを示します。0
WRONG_VALUE定数は、任意の列挙型に暗黙的にキャストできます。1

データ構造 [3]

MQL4言語は、3個の定義済み構造を使用できます。

日付型の構造 (MqlDatetime)

日付型構造体には、8個の日付情報(int型)が格納されます。
使い方はこちらのページを参考にしてください。

struct MqlDatetime
{
   int year;         // 西暦 年
   int mon;          // 西暦 月
   int day;          // 西暦 日
   int hour;         // 時間(時)
   int min;          // 時間(分)
   int sec;          // 時間(秒)
   int day_of_week;  // 曜日(0~6で表示。0=日, 1=月, 2=火, 3=水, 4=木, 5=金, 6=土)
   int day_of_year;  // 本年の経過日数(1月1日は0)
};

 

ヒストリーデータ構造 (MqlRates)

MqlRatesの構造体には、各バーの価格、出来高、スプレッドに関する情報が格納されます。
使い方はこちらのページを参考にしてください。

struct MqlRates
{
   datetime time;         // 開始時間
   double   open;         // 始値
   double   high;         // 高値
   double   low;          // 安値
   double   close;        // 終値
   long     tick_volume;  // Tick数
   int      spread;       // スプレッド
   long     real_volume;  // 出来高
};

現在の価格の構造 (MqlTick)

MqlTickは、通貨ペアの最新の価格を格納するための構造体です。現在の価格に関する最も要求の高い情報をすばやく取得できるように設計されています。
MqlTickタイプの変数を使用すると、SymbolInfoTick関数を 1回呼び出すだけで、買値、売値、直近の取引価格、出来高の値を取得できます。使い方はこちらのページを参考にしてください。

struct MqlTick
{
   datetime time;    // 更新時間
   double   bid;     // 売値
   double   ask;     // 買値
   double   last;    // 直近の取引価格
   ulong    volume;  // 直近の出来高
};

エラーと警告のコード [524]

項目説明
取引サーバーの取得コード [32]OrderSend関数で送信した取引リクエストの結果を取得します。
コンパイルワーニング [63]コンパイル時に表示される警告メッセージのコードです。エラーではありません。
コンパイルエラー [268]コンパイルが失敗した時に表示されるエラーのメッセージコードです。
ランタイムエラー [161]GetLastError関数を使用して取得できる MQL4プログラムの実行中のエラーコードです。

入出力定数 [36]

項目説明
ファイルオープニングフラグ [11]ファイルを開くフラグの値は、ファイルアクセス モードを指定します。
ファイルオープニングフラグ [11]
ファイルプロパティ [15]FileGetInteger関数で、ファイルプロパティを取得するために使用されます。
ENUM_FILE_PROPERTY_INTEGER [15]
ファイル内位置 [3]多くのファイル機能は、データの読み取り/書き込み操作に関連付けられています。同時に、FileSeek関数を使用して、次の読み取り または 書き込み操作が実行されるファイル内の位置へのファイルポインタの位置を指定できます。ENUM_FILE_POSITION 列挙値には、次の操作のシフトを byte単位で指定できる有効なポインタ位置が含まれています。
ENUM_FILE_POSITION [3]
コードページの使用 [7]文字列変数を char型の配列に変換して戻す場合、デフォルトで WindowsOSの現在の ANSI(CP_ACP)に対応するエンコードが MQL4で使用されます。別のタイプのエンコードを指定する場合は、CharArrayToString関数、StringToCharArray関数、FileOpen関数の追加パラメーターとして設定できます。
コードページの使用 [7]
メッセージボックスこのセクションには、MessageBox関数の戻りコードが含まれています。メッセージウィンドウに [キャンセル] ボタンがある場合、ESCキーまたは [キャンセル] ボタンが押された場合、関数は IDCANCEL を返します。メッセージウィンドウに [キャンセル] ボタンがない場合は、ESCを押しても何の効果もありません。

ファイルオープニングフラグ [11]

ファイルを開くフラグの値は、ファイルアクセス モードを指定します。

識別子説明
1FILE_READファイルは読み取り用で開かれます。フラグとして FileOpen関数で使用されます。ファイルを開くときは、FILE_WRITE、FILE_READ の指定が必要です。
2FILE_WRITEファイルは書き込み用で開かれています。フラグは FileOpen関数で使用されます。ファイルを開くときは、FILE_WRITE、FILE_READ の指定が必要です。
4FILE_BINバイナリファイル読取/書込モード (文字列から文字列への変換なし)。フラグは FileOpen関数で使用されます。
8FILE_CSVCSVファイル (すべての要素は、適切なタイプ (Unicode または ANSI) の文字列に変換され、セパレータで区切られます)。フラグは FileOpen関数で使用されます。
16FILE_TXT単純なテキストファイル(csvファイルと同じですが、区切り記号は考慮されません)。フラグは FileOpen関数で使用されます。
32FILE_ANSIANSI型の文字列(1バイト記号)。フラグは FileOpen関数で使用されます。
64FILE_UNICODEUnicodeの文字列(2バイト記号)。フラグは FileOpen関数で使用されます。
128FILE_SHARE_READ複数のプログラムから読み取るための共有アクセス。フラグは FileOpen関数で使用されますが、ファイルを開くときに FILE_WRITE、FILE_READ フラグを置き換えるものではありません。
256FILE_SHARE_WRITE複数のプログラムから書き込むための共有アクセス。フラグは FileOpen関数で使用されますが、ファイルを開くときに FILE_WRITE、FILE_READ フラグを置き換えるものではありません。
512FILE_REWRITEFileCopy関数 および FileMove関数を使用したファイル書き換えを行なうことがあるファイル。ファイルが存在するか、書き込み用に開かれている必要があります。そうでない場合、ファイルは開かれません。
4096FILE_COMMONすべてのクライアントターミナルの共通フォルダー内のファイルパス「\Terminal\Common\Files」 。フラグは FileOpen関数、FileCopy関数、FileMove関数、FileIsExist関数で使用されます。

コードページの使用 [7]

文字列変数を char型の配列に変換して戻す場合、デフォルトで WindowsOSの現在の ANSI(CP_ACP)に対応するエンコードが MQL4で使用されます。別のタイプのエンコードを指定する場合は、 CharArrayToString関数 、StringToCharArray関数、FileOpen関数の追加パラメーターとして設定できます。

定数説明
0CP_ACP現在の Windows ANSI コードページ。
1CP_OEMCP現在のシステム OEM コードページ。
2CP_MACCP現在のシステム Macintosh コードページ。
注:最近の Macintosh コンピュータはエンコードに Unicodeを使用しているため、この値は主に以前に作成されたプログラムコードで使用され、現在は使用されていません。
3CP_THREAD_ACP現在のスレッドの Windows ANSI コードページ。
42CP_SYMBOLシンボル コードページ。
65000CP_UTF7UTF-7 コードページ。
65001CP_UTF8UTF-8 コードページ。

定義済み変数 [19]

項目説明
定義済変数 [5]定義済変数は、単独で対応した値が取得されます。
配列変数 [6]配列変数は、変数の後ろに「[]」が付いた定義済変数になります。[]内に整数を入れることでバーの位置を指定できます。0が現在(最新)のバー、1が一つ前のバーを表します。
システム変数 [8]システム変数は、引数無しで単独で対応した値が取得されます。
システム変数は、変数の前に「_」が付いた定義済変数です。

実行可能なMQL4プログラムごとに、MQL4プログラム(EA、スクリプト、カスタムインジケータ)が開始される瞬間までの現在の価格チャートの状態を反映する一連の定義済み変数がサポートされています。

定義済み変数の値は、MQL4プログラムが開始される前にクライアントターミナルによって設定されます。定義済み変数は定数であり、MQL4プログラムから変更することはできません。例外として、ResetLastError関数によって 0にリセットできる特別な変数 _LastError があります。

定義済変数 [5]

これらの定義済変数は、単独で対応した値が取得されます。

定義済変数データ型説明
Askdouble現在の通貨ペアの買値を取得。
Biddouble現在の通貨ペアの売値を取得。
Digitsint現在の通貨ペアでの価格の小数点以下の有効桁数を取得。
システム変数「_Digits」、チェック関数「Digits()」と同じ。
Pointdouble現在の通貨ペアでの価格の最小値を取得。
システム変数「_Point」、チェック関数「Point()」と同じ。
Barsint現在のチャートでの時間足の総数を取得。
ヒストリーセンターのデータを含みます。

配列変数 [6]

配列変数は、変数の後ろに [] が付いた定義済変数になります。[]内に整数を入れることでバーの位置を指定できます。0が現在 (最新) のバー、1が一つ前のバーを表します。

配列変数データ型説明
Open[]doubleチャートの各バーの始値の配列。
High[]doubleチャートの各バーの高値の配列。
Low[]doubleチャートの各バーの安値の配列。
Close[]doubleチャートの各バーの終値の配列。
Time[]datetimeチャートの各バーの開始時間の配列。
Volume[]longチャートの各バーのティック数の配列。

システム変数 [8]

これらのシステム変数は、引数無しで単独で対応した値が取得されます。
システム変数は、変数の前に「_」が付いた定義済変数です。

システム変数データ型説明
_Digitsint現在の通貨ペアでの価格の小数点以下の有効桁数を取得。
定義済変数「Digits」、関数「Digits()」と同じ。
_Pointdouble現在の通貨ペアでの価格の最小値を取得。
定義済変数「Point」、関数「Point()」と同じ。
_Symbolstring現在のチャートでの通貨ペア名を取得。
関数「Symbol()」と同じ。
_Periodint現在のチャートでの時間軸を分単位で取得。
関数「Period()」と同じ。
_LastErrorint直近のエラーコードを取得。
_RandomSeed整数の疑似乱数を取得。
_StopFlagboolMQL4プログラム停止のフラグを取得します。
_UninitReasonintUnInitの理由コードを取得。
チェック関数「UninitializeReason」と同じ。
タイトルとURLをコピーしました