MQL4プログラミングでは、ロット数やマジックナンバーに関する変数の値をユーザーに設定して欲しい場面があります。
これらの変数は外部パラメータとして用意することで、EAやインジケーターのプロパティウィンドウからユーザーが自由に変更が可能となります。
外部パラメータを利用するには変数宣言時に、型名の前に「extern」を付けます。
extern int MagicNumber = 123456;
extern double Lots = 0.1;
extern double SLpips = 100;
extern double TPpips = 100;
extern int Slippage = 1;
変数は基本的にアルファベットで入力しますが、日本語ユーザー向けにパラメータ名を日本語で設定したい場合があります。
外部パラメータを宣言した行の最後に「//」でコメントを付ける事で、パラメータ名を変更することが可能です。
extern int MagicNumber = 123456; //マジックナンバー
extern double Lots = 0.1; //ロット数
extern double SLpips = 100; //損切り
extern double TPpips = 100; //利食い
extern int Slippage = 1; //スリッページ
外部パラメータをユーザーに利用してもらう際、誤った入力を避けるために用意した候補の中から選択してもらいたい場合などがあります。
「enum」を利用して列挙型の宣言を行うことで作成することが可能です。
//新しい列挙型の作成
enum currency{
USD = 0,
JPY = 1,
EUR = 2
};
//初期値を定数の名前で指定
extern currency currency_1 = USD;
//初期値を割り振った数値で指定
extern currency currency_2 = 1;
//パラメータ名を日本語へ
extern currency currency_3 = 2;//通貨3
列挙型の外部パラメータの選択肢を日本語化することも可能です。
日本語化するには定数を宣言した行の最後に「//」でコメントとして付けます。
enum currency{
USD = 0, //ドル
JPY = 1, //円
EUR = 2 //ユーロ
};
extern currency currency_1 = USD;
externの代わりにinputをつけることでもユーザーに設定可能な外部パラメータとして表示されます。
input int MagicNumber = 123456; //マジックナンバー
input double Lots = 0.1; //ロット数
input double SLpips = 100; //損切り
input double TPpips = 100; //利食い
input int Slippage = 1; //スリッページ
この二つには違いがあります。
externで作成した外部パラメータは、プログラム内の処理によって変更可能です。
例えば以下の処理では入力されたロット数をプログラム内で変更しております。
パラメータに0を指定して実行すると、Lotsの値が0.01に修正されます。
extern double Lots = 0.1; //ロット数
void OnTick(){
if(Lots < 0.01){
Lots = 0.01;
Comment(Lots);
}
}
inputを使用した外部パラメータの値は変更ができません。
先ほどの例と同じ処理をinputで作成しますと、コンパイルエラーが発生します。
input double Lots = 0.1; //ロット数
void OnTick(){
if(Lots < 0.01){
Lots = 0.01; //外部パラメータの値を変更しているのでエラーとなる
Comment(Lots);
}
}
検索結果がありません。 |
検索結果がありません。 |
日本語の外部パラメータを利用する方法
上記を試しましたが日本語化出来ませんでした。
どうすれば出来るでしょうか?
日本語の外部パラメーターをご利用の場合は
#property strict
を記述する必要がございます。下記のようにプロパティを追加後、再度コンパイルしてご確認いただければ幸いでございます。
変更前
変更後
日本語化やってみたのですがエラーで出来ませんでした。
何が悪いでしょうか?
undeclared indetifier
のエラーが表示されている状況でございました。お手数ですが、該当箇所について、下記のように修正をお願いいたします。
修正前
for(i = 0;
修正後
for(int i = 0;
ご回答ありがとうございます。
しかしながらコンパイルできませんでした。
再度お願いします。
WEB版だと問題おきないのでしょうか?
undeclared indetifier
のエラーが表示されている状況でございました。お手数ですが、該当箇所について、下記のように修正をお願いいたします。
修正前
修正後
本修正でコンパイルできるかと存じます。大変お手数をおかけしました。
なお、EAつくーるWeb版の場合は、
#property strict
の記述がございますので差し支えなければ、Web版をご利用いただければ幸いでございます。
ご質問失礼いたします。
画像のTralingStopとNanpinの項目を日本語化したいのですがエラーとなってしまいます。
どの部分を編集したら日本語化できますか?
画像が参照でない状況で恐れ入りますが
Web版をご利用いただければ日本語化が可能でございます。
ご参考いただけますと幸いです。何卒よろしくお願い申し上げます。