C・Javaそのままの部分
処理文
- 行末:;
- 処理ブロック:{ }
コメント
- 単数行://
- 複数行:/* */
演算子
- 算数演算:+ – * / %
- 論理演算:&& ||
- 比較演算:== != < > <= >=
- 代入演算:= += -= *= /= %=
続行処理
- 選択処理:if-else、switch-case
- 繰り返し処理:while、for、break、continue
関数定義
int testfunc1(int a, int b) { return a + b; } void testfunc2(string a) { MessageBox(a); }
データ型
- short, int, long, uchar, ushort, uint, ulong:整数型。
- 108
- double:小数点型
- 108.9
- bool:真偽型
- true、false
- char:文字
'A' //普通の文字 '\n' //改行 '\t' //平行タブ '\r' //行頭復帰 '\\' // \スラッシュ '\'' // ' クォート '\"' // " ダブルクオート
- string:文字列。
- “Hello World\n”
- color:色。(Cから始まるRGBが使える)
- C’256,0,0′
- C’0xFF,0x00,0x00′
- datetime:日時型
- D’2014.01.01 12:00:01′
- D’2014.01.01 12′ (=D’2014.01.01 12:00:00′)
datetime d1 = D'2014.01.01 12:00:01'; datetime d2 = D'2014.01.01 12:01:01'; MessageBox(d2-d1); //出力が「60」 MessageBox(D'2014.01.01 12:01:01' - D'2014.01.01 12:00:01'); //出力が「D'1970.01.01 00:01:00'」
MQLでは、強制データ型キャストがありません。暗黙キャストだけです。
各種変数
仮引数
仮引数が定義された関数の引数には、値を渡さなくてもよい。
testfunc(1,2);
int testfunc(int a, int b=2, int c=1) { return a + b; }
静的変数
静的変数は関数終了後にも、変数値を失いません。
static int val = 1;
グローバル変数
全部の関数外で定義します。特にglobe等で指定しなくてもよい。
外部変数
スクリプト作成時に、Parametersで定義された変数。
スクリプト実行するとき、値の再設定ができます。
実行時に細かく設定したい変数は外部変数として設定します。
input int Input1 = 30; // 生成最初はinputで指定されましたが、 extern int Input1 = 30; // externに変更してもよいようです。
Input1という変数が30に設定されます。
実際に実行するとき、40にも50にも設定することもできます。
プリプロセッサ(前処理)
プリプロセッサがどうやらCのマクロみたいなもので、
define・property・include・importの四種類があります。
define 定数定義
#difine VOL 10
property インジケータープロパティ
外部のインジケーターに関連するプロパティです。
#property version "1.00"
他のプロパティは公式のドキュメントを参考する。
include ファイル読み込み
読み込みファイルの内容をスクリプトに置き換える
#include <file_name> #include "file_name"
import 関数の引用
他のファイルで定義された関数を引用できます。
#import "lib1.dll" int libFunc1(int val1); #import "myscript1.ex4" string myFunc1(int str); #import
配列
配列定義と初期化
double arr1[10]; double arr2[] = {1.0, 5.0, 10.0}; //一次元配列 int mul_arr[][3] = { {1, 2, 3}, {10, 20, 30} }; //多次元配列
配列サイズの取得と変更
サイズ取得
int cnt = ArraySize(arr);
サイズ変更
(変更後に実際含まれる要素数を戻す)
int cnt = ArrayResize(arr, 5); //配列のサイズ定義し直す
検索
特定値の検索
配列arrでtarを検索、インデックスを戻す。
結果が0以下の場合が含んでいないこと。
int i = ArrayBsearch(arr, tar);
最大最小の検索
int maxInd = ArrayMaximum(arr); int minInd = ArrayMinimum(arr);
ソート
昇順
ArraySort(arr); //実際はArraySort(arr, ARRAY_WHOLE, 0, MODE_ASCEND);
降順
ArraySort(arr, ARRAY_WHOLE, 0, MODE_DESCEND);