1
3

More than 3 years have passed since last update.

MQL5言語 基礎(メモ)

Posted at

基本的に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  基本クラス名
 {                                    
   クラスメンバの宣言
 };
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3