MQLの勉強メモ (2) 基礎部分

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で定義された変数。
スクリーンショット 2014-09-23 16.02.39
スクリプト実行するとき、値の再設定ができます。
実行時に細かく設定したい変数は外部変数として設定します。

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);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>