mt4 (MetaTrader4)使い倒シストレ

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


にほんブログ村 為替ブログ FX システムトレード派へ
--/--/--(--) --:--:-- | スポンサー広告 | Trackback(-) | Comment(-)
Special functions (特殊関数)
MQL4内では定義済み関数が3つある。

init()はモジュール初期動作の時に呼ばれる関数である。
もし定義されていないならば、初期動作で呼ばれる関数はない。

start()は基本関数である。
エキスパートでは新しいティックが現れた時に呼ばれ、カスタムインジケータでは、チャート上に設置された後の再計算時、クライアント端末が開いた時 (もしチャート上に設置されていたら)、新しいティックが現れた時、等に呼ばれる。
スクリプトにおいてはチャート上に設置され、初期動作を行った後すぐに実行される。
もしstart()関数がモジュール (エキスパート、スクリプト、カスタムインジケータ)になければ、モジュールは開始されない。

deinit()はモジュールの終了動作の時に呼ばれる関数である。
もし定義されていないならば、終了動作で呼ばれる関数はない。

定義済み関数は変数を持つこともできる。
しかし、クライアント端末からこれらの関数が呼ばれた時、外部から変数を引き継ぐことはできない。
しかしデフォルト値は使える。
start()init()deinit()関数はその他の関数と同様に共通ルールに従ったモジュールの様々な場面で使うことができる。

init()からstart()を呼び出したり、モジュールの初期動作中の不完全なチャートのデータや市場価格を用いてトレードをすることはお勧めできない。
init()deinit()関数は可能な限り動作を早く終わらせなければならず、start()関数を呼び出す前に、十分な動作を開始させようとするような前処理をさせなければならない。

にほんブログ村 為替ブログ FX システムトレード派へ
スポンサーサイト
Function call (関数呼び出し)
もし式の中に定義されていない名前が現れ、その後に丸括弧が続いていれば、それが関数である。

function_name (x1, x2,..., xn)
独立変数(引数)は値として扱われる。
つまり式x1,...,xnは計算された後の値が関数へと渡される。
式の計算と値の読み込みは保証されている。
実行されている間、システムは引数の型と数値をチェックする。
関数へのアドレス指定によって値が呼び出される。
関数呼び出しは返り値の値である。
関数の型は返り値の型と一致していなければならない。
関数はグローバルスコープ上で、プログラムのある部分として宣言、実装することができる。
関数は他の関数内で宣言、実装することはできない。

Examples:
int start()
  {
   double some_array[4]={0.3, 1.4, 2.5, 3.6};
   double a=linfunc(some_array, 10.5, 8);
   //...
  }
double linfunc(double x[], double a, double b)
  {
   return (a*x[0] + b);
  }
デフォルト引数を持つ関数の呼び出しにおいて、最初のデフォルト引数以降の引数は省略することができる。

Examples:
void somefunc(double init,double sec=0.0001,int level=10);  // function prototype
        
somefunc();                   // 悪い呼び出し。最初の引数が示されていない
somefunc(3.14);               // 適切な呼び出し
somefunc(3.14, 0.0002);       // 適切な呼び出し
somefunc(3.14, 0.0002, 10);   // 適切な呼び出し
関数呼び出しの時、たとえデフォルト引数であっても途中の引数を省略することはできない。

somefunc(3.14, , 10);         // 悪い呼び出し。2番目の引数が飛ばされている


にほんブログ村 為替ブログ FX システムトレード派へ
Functions
関数とはプログラム内で、必要な時に何度でも呼び出すことのできるプログラムの固まりである。
関数は返り値、名前、引数、動作ブロックで成り立つ。
引数の数は限度があり、最大64個である。

Example:
double                       // 返り値の型
linfunc (double x, double a, double b) // 関数名と引数リスト
{
                             // 動作
   return (a + b);           // 返り値
 }
return文はカッコ中の式の値を返す。
もし必要ならば、式の値は関数結果の型へ変換することができる。
返り値の内関数はvoid型として定義しなければならない。

Example:
void errmesg(string s)
  {
   Print("error: "+s);
  }
関数の引数は、適切な型で定義された定数をデフォルト引数とすることができる。

Example:
int somefunc(double a, double d=0.0001, int n=5, bool b=true, string s="passed string")
  {
   Print("Required parameter a=",a);
   Print("The following parameters are transmitted: d=",d," n=",n," b=",b," s=",s);
   return (0);
  }
もしデフォルト引数を指定したならば、それ以下に続く引数もデフォルト引数でなければならない。

悪い宣言例:
int somefunc(double a, double d=0.0001, int n, bool b, string s="passed string")
  {
  }



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