mt4 (MetaTrader4)使い倒シストレ

メタトレーダー、自作インジケータ、自作EAで完全自動売買。使えるものは何でも使え。
インジケーター、EA(自動売買システム)製作のご依頼はこちらへ
Googolyen FX Factory
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


にほんブログ村 為替ブログ FX システムトレード派へ
--/--/--(--) --:--:-- | スポンサー広告 | Trackback(-) | Comment(-)
Importing of functions (関数のインポート)
関数はコンパイル済みMQL4モジュール (*.ex4ファイル)やDLLモジュール (*.dllファイル)からインポートされる。
それらのモジュール名は#importコマンドによって指定される。
インポートされた関数を呼び出したり、変数を渡したりするためには、関数の全ての記述が必要となる。
関数の記述は#import "module name"のすぐ後に続ける。
その後の#importコマンドによってインポート関数の記述ブロックが完了する。

#import "file_name"
    func1 define;
    func2 define;
    ...
    funcN define;
#import
インポート関数の名前は重複してはならない。
同一名の関数は複数モジュールから同時にインポートすることができない。
インポート関数は標準関数の名前と同じにしない方がよい。

インポート関数がコンパイル済みモジュールになると、コンパイラは変数渡しの正確さをチェックできない。
それは実行時エラーを防ぐ為であり、型の整合性を宣言することや、変数の正確な指定が必要である。
インポート関数 (EX4、DLLモジュール)に渡される変数は初期値を持つことができない。

Examples:
#import "user32.dll"
   int    MessageBoxA(int hWnd, string lpText, string lpCaption, int uType);
#import "stdlib.ex4"
   string ErrorDescription(int error_code);
   int    RGB(int red_value, int green_value, int blue_value);
   bool   CompareDoubles(double number1, double number2);
   string DoubleToStrMorePrecision(double number, int precision);
   string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
   int    GetIntValue(int);
   double GetDoubleValue(double);
   string GetStringValue(string);
   double GetArrayItemValue(double arr[], int, int);
   bool   SetArrayItemValue(double& arr[], int,int, double);
   double GetRatesItemValue(double rates[][6], int, int, int);
   int    SortStringArray(string& arr[], int);
   int    ProcessStringArray(string& arr[], int);
#import
mql4プログラムの実行中に関数のインポートを行った場合、いわゆる遅延結合が起こる。
これはインポート関数が呼ばれるまでは、該当モジュールが読み込まれないことを意味する。

Drive:\Directory\FileName.Extにあるモジュールの条件付き名前は使わない方がよい。
MQL4ライブラリはterminal_dir\experts\librariesフォルダから読み込まれる。
もし該当するライブラリが見つからない場合、terminal_dir\expertsフォルダからライブラリの読み込みを行う。

にほんブログ村 為替ブログ FX システムトレード派へ
スポンサーサイト
Including of files (ファイルインクルード)
#includeコマンドはプログラム内の任意の場所に置くことができるが、普通全ての#includeコマンドはソースコードの最初に置く。
以下のように宣言する。

#include 
#include "file_name"

Examples:
#include 
#include "mylib.mqh"
プリプロセッサはその行をWinUser32.mqhファイルの内容と置き換える。 <>はWinUser32.mqhファイルがデフォルトディレクトリ (通常はterminal\directory\experts\include)に存在することを意味する。

もしファイル名がクオーテーションで囲まれていた場合、カレントディレクトリ内 (ソースコードのメインファイルが存在するディレクトリ)から検索される。デフォルトディレクトリ内は検索されない。

にほんブログ村 為替ブログ FX システムトレード派へ
Controlling compilation (コンパイラ制御)
全てのMQL4プログラムは、プログラムの動作においてクライアント端末を補助する#propertyで指定された追加特殊変数を指定することが可能である。
そのプログラムを起動している必要はない。
これらはまずインジケータの外部からのセッティングに関係する。

#property identifier value
定数 説明
link string 会社webサイトへのリンク
copyright string 会社名
stacksize int スタックメモリサイズ
library
ライブラリ化。start()関数は定義できず、使われない関数でも消さなくてもよい
indicator_chart_window void インジケータをチャートウィンドウに表示させる
indicator_separate_window void インジケータを別ウィンドウに表示させる
indicator_buffers int 計算用バッファの数、上限8
indicator_minimum double 別ウィンドウの下限値
indicator_maximum double 別ウィンドウの上限値
indicator_colorN color N番目のラインの表示色、Nは1~8
indicator_widthN int N番目のラインの太さ、Nは1~8
indicator_styleN int N番目のラインの線種、Nは1~8
indicator_levelN double 別ウィンドウインジケータ内のN番目のレベル表示、Nは1~8
indicator_levelcolor color レベル表示色
indicator_levelwidth int レベル表示の太さ
indicator_levelstyle int レベル表示の線種
show_confirm void スクリプトが実行される前に確認メッセージボックスが現れる
show_inputs void スクリプトが実行される前にスクリプトプロパティが現れる:show_comfirmプロパティの無効化

Examples:
#property link        "http://www.metaquotes.net"
#property copyright   "MetaQuotes Software Corp."
#property library
#property stacksize   1024
コンパイラは実行モジュールのセッティングで宣言値を作成する。

にほんブログ村 為替ブログ FX システムトレード派へ
Constant declaration (定数宣言)
#define構文を使えば、記号による名前や記号による定数をプログラム内で定義でき、特殊記号文字列となる。
コンパイル時にクオーテーション記号で囲まれた文字列を除く全ての同じ文字列で置換される。
実際には、その名前は完全な任意テキストによって置き換えられ、数字である必要はない。

#define identifier value
定数の識別は調整した変数名と同じルールに従う。
値はどんな型でもよい:

#define ABC          100
#define PI           0.314
#define COMPANY_NAME "MetaQuotes Software Corp."
...
void ShowCopyright()
  {
   Print("Copyright c 2001-2007, ",COMPANY_NAME);
   Print("http://www.metaquotes.net");
  }


にほんブログ村 為替ブログ FX システムトレード派へ
Preprocessor
プリプロセッサはプログラムコンパイルの直前に行われ、実行ファイルの生成を目的とするMQL4コンパイラの特別なシステムである。

プリプロセッサはソースコードの可読性を高める。
コードはMQL4プログラムのソースコードを含む特殊ファイル等で構成されている。
可読性を高める為の特殊定数に覚えやすい名前を当てはめることができる。

またプリプロセッサはMQL4プログラムの特殊変数を指定することができる。

もし#記号をプログラムの1列目に使えば、その行はプリプロセッサコマンドである。
プリプロセッサコマンドは改行によって終了する。



にほんブログ村 為替ブログ FX システムトレード派へ
Designed by aykm.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。