トップ  >  MQL4リファレンス  >  基本  >  変数  >  input変数
スポンサーリンク
検索

↑の検索エンジンが表示されない人は、
↓の古い検索エンジンを使用して下さい。
カスタム検索
MQL4リファレンスツリー
input変数


input記憶域クラスはグローバル変数で宣言します。

input修飾子はデータ型の前に書きます。
input修飾子で宣言された変数は、プログラム内部で変更する事で出来ません。
読み取り専用でアクセスする事は出来ません。

input変数の値は、プログラムのプロパティウインドウからユーザーによって変更する事が出来ます。
input変数はプログラムの入力パラメータを決定します。


"パラメータの入力"タブの"変数"の名称を別の表示に設定する事が出来ます。
この名称は、同じ行の後に書かれたコメントの文字列が使われます。
これでユーザーにとって分かり易い名前を表示させる事が出来ます。
サンプルソース:
#property strict

input int              MA_Period = 5;           // 移動平均期間
input int              MA_Shift  = 0;
input ENUM_MA_METHOD MA_Method  = MODE_SMA;  // 移動平均の種類



カスタムインジケータのプロパティ:


注意
構造体クラス配列はinput変数として使えません。
input変数の文字列コメントは63文字を超える事は出来ません。

管理人の勝手なコメント:
#property strictを使用していない場合、文字列コメントは使われません。
また全角63文字で正しく表示されました。



MQL4プログラムでカスタムインジケータを呼び出した時の引数渡し
カスタムインジケータはiCustom()関数を使用して呼ばれます。
nameの後の値は、カスタムインジケータのinput変数宣言に厳密に従う必要があります。
カスタムインジケータで宣言されたinput変数よりも少ない場合、不足分の値は宣言時に指定した値が使用されます。

カスタムインジケータがOnCalcutale関数の第1引数(現在の表示バー数)を使用する場合は、
カスタムインジケータを呼び出す時にENUM_APPLIED_PRICEの値か、他インジケータのハンドルを使用する必要があります。

input変数に対応する全ての引数の値は、明確に示さなければなりません。

列挙型の入力パラメータ

MQL4が提供している列挙型だけでなく、ユーザー定義の変数をinput変数として使用する事が出来ます。
サンプルソース:
#property strict

enum dow_enum {

    Sun = 0,   // 日曜日
    Mon,       // 月曜日
    Tue,       // 火曜日
    Wed,       // 水曜日
    Thu,       // 木曜日
    Fri,       // 金曜日
    SAt        // 土曜日

};

input dow_enum dow_input = Sun;   // 曜日設定


カスタムインジケータのプロパティ:



スクリプト起動時にプロパティウインドウを表示させて値を選択出来るようにする為には、
#property script_show_inputsを使用する必要があります。

サンプルソース(スクリプト用):
#property strict
#property script_show_inputs

enum dow_enum {

    Sun = 0,   // 日曜日
    Mon,       // 月曜日
    Tue,       // 火曜日
    Wed,       
    Thu,       // 木曜日
    Fri,       // 金曜日
    SAt        // 土曜日

};

input dow_enum dow_input = Sun;   // 曜日設定

void OnStart() {
   
}



スクリプトのプロパティ:




列挙で使用出来る値が制限出来ます。
入力値は選択する為にドロップダウンリストが使用されます。
列挙メンバのニーモニック名がリストに表示されます。
コメントがニーモニック名に関連付けられている場合、ニーモニック名では無くコメントの名前が使用されます。
上の例ではWedメンバにコメントが無い為、ニーモニック名がドロップダウンリストに表示されています。

sinput修飾子

input修飾子を持った変数は、プログラムを起動する時に外部パラメータを設定するだけでは無く、
ストラテジーテスターでトレードストラテジーを最適化する際にも必要とされます。
文字列型以外の変数は最適化に使用する事が出来ます。

時々、一部の外部プログラムパラメータを除外する必要が出てきます。
sinput修飾子は、このような場合の為に導入されました。
sinputは静的外部変数の宣言(sinput = static input)です。

サンプルソース:
sinput       test1 = 0;
static input test2 = 0;

上記サンプルソースのtest1とtest2の静的外部変数の宣言は同じ意味になります。


sinput修飾子で宣言された変数は、MQL4プログラムの入力パラメータです。
プログラムが起動する時、このパラメータの値は変更する事が出来ます。
しかし、この値は入力パラメータの最適化には使用されません。
言い換えると、最適化パラメータを設定する項目にその値は表示されません。

サンプルソース(EA用):
#property strict

sinput       int test_sinput   = 0; // sinput変数
static input int test_st_input = 0; // static input変数
input        int test_inpuit   = 0; // input変数

ストラテジーテスターのエキスパート設定:


上記サンプルソースには3つの外部パラメータがあります。
sinput変数とstatic input変数は、最適化中に変更する事は出来ません。
最適化可能なinput変数は、スタート・ステップ・ストップ項目を入力出来ます。
sinput変数とstatic input変数は項目に入力する事が出来ません。

しかし、この規則には唯一の例外があります。
sinput変数はParameterSetRange()関数を使用して最適化タスクを変更する事が出来ます。
ParameterGetInput()関数は最適化の起動時(OnTesterInit()ハンドラ)にinput変数を受信し、
ステップ値と範囲を再設定する事が出来ます。

(ParameterSetRange()とParameterGetInput()はMQL5の関数です、MQL4では使用出来ません。)

このようにsinput修飾子で動作する2つの関数を組み合わせて、
別の入力パラメータに依存する入力パラメータの最適化間隔を設定させる事が出来ます。


スポンサーリンク
スポンサーリンク


Copyright ©2015 MT4でEA自作しちゃお~ All Rights Reserved.


Top

inserted by FC2 system