基本的にC++に近いので、よく使われると思うところだけまとめます
コメント
//--- 一行コメント
/* 複数
行の // 入れ子にされた一行コメント
コメント
*/
データ型
整数型(char、short、int、long、uchar、ushort、uint、ulong)
論理型(bool)
リテラル型(ushort)
文字列型(string)
浮動小数点型(double、float)
カラー型(color)
日付時刻型(datetime)
列挙型(enum)
構造体(struct)
配列
ユーザー定義型(typedef)
オブジェクトポインタ
演算子
ブロック
if(x==0)
{
Print("invalid position x = ",x);
return;
}
If-Else 条件演算子
if (式)
演算子 1
else
演算子 2
三項演算子 ?:
式 1 ?式 2 : 式 3
Switch 演算子
switch(式)
{
case constant: operators
case constant: operators
...
default: operators
}
while反復演算子
while(式)
演算子;
For 反復演算子
for(式 1 ; 式 2 ; 式 3 )
演算子
do while 反復演算子
do
演算子;
while(式);
関数
外部関数の記述
別のモジュールで定義された外部関数は明示的に記述されるべきです。
#import "user32.dll"
int MessageBoxW(int hWnd ,string szText,string szCaption,int nType);
int SendMessageW(int hWnd,int Msg,int wParam,int lParam);
#import "lib.ex5"
double round(double value);
#import
関数のエクスポート
MQL5 プログラムで export 後置修飾語とともに宣言された関数は別の MQL5 プログラムで使用することが出来ます。
int Function() export
{
}
イベント処理の関数
OnStart:スクリプトの実行のみに自動的に生成されます。
OnInit:EA開始時の処理を記述する。
OnDeinit:EA終了時の処理を記述する。このサンプルでは処理なし。
OnTick:価格変動発生時の処理を記述する。
OnTimer:Timer イベントがエキスパートアドバイザーと指標のシステムタイマーによって生成される時に呼ばれます。
OnTrade:この関数は Trade イベントの発生時に呼ばれます。
OnTradeTransaction:取引口座にいくつかの明確なアクションを実行すると、状態が変更されます。
OnTester
OnTesterInit
OnTesterPass
OnTesterDeinit
OnBookEvent:BookEvent は板情報の変更時にエキスパートアドバイザーと指標のために生成されます。
OnChartEvent
OnCalculate
プリプロセッサ
マクロ代入( #define )
プリプロセッサディレクティブはコンパイルする前にソースコードを前処理するためにコンパイラによって使用されます。
#define 識別子式 // パラメータなしの形式
#define 識別子 (パラメータ1,... パラメータ8) 式 // パラメトリック形式
ディレクティブ(#undef) : 前に定義されたマクロ代入の宣言を解除します。
プログラムのプロパティ (#property)
全ての MQL5 プログラムは、明示的に起動せずにプログラムの中で適切なサービスを提供してクライアント端末を補助する #property という付加的な特定のパラメータを指定することが出来ます。
#property 識別子の値
ァイルの読み込み (#include)
#include <ファイル名>
#include "ファイル名"
関数のインポート (#import)
#import "file_name"
func1 define;
func2 define;
...
funcN define;
#import
条件付きコンパイル( #ifdef、#ifndef、#else、#endif )
#ifdef 識別子
//ここにあるコードは、識別子がすでに #define ディレクティブのプリプロセッサに定義されている場合にコンパイルされます。
#endif
#ifndef 識別子
// ここにあるコードは、識別子がすでに #define ディレクティブのプリプロセッサに定義されていない場合にコンパイルされます。
#endif
オブジェクト指向プログラミング
型の封裝と拡張
class CPerson
{
protected:
string m_name; // 名称
public:
void SetName(string n){m_name=n;}// 名称を付ける
string GetName(){return (m_name);} // 名称を返す
};
継承
class クラス名 :
(public | protected | private) opt 基本クラス名
{
クラスメンバの宣言
};