MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 853

 
Priffekt:
こんにちは、全ての値を変更しましたが、EAの 設定で機能そのものを無効にすることが可能かどうか、興味があります。

おはようございます。

コードの一部を貼り付けるときは、</>ボタンを使用すると、より読みやすくなります。上で「この方法で貼り付けると良い」と書きました。

投稿8518で、すでにスイッチを追加したあなた自身のコードを送りました。1行目を入力変数に、2行目をOnTickに分離すればいいのです。

 
Sergey Voytsekhovsky:

もちろん、私はアドバイザーにはあまり向いていないのですが、この仕事は難しくなさそうです。

私はあなたのコード自体には触れないことに注意してください、私(ダミー)にとってさえ、あなたの関数がvoid型であるという事実から始まる多くの論争があります。 この型は、関数が値を返さない ことを示すか、関数パラメータとしてパラメータの不在を示す ために使用されます。そして、コードの最後にreturn(Exist)がありますね。

入力変数を宣言し、それを関数のパラメータとして書き、'この変数をFalseにした場合、関数を終了させる。

ハイライトは絶対に間違っています。グローバルに宣言された変数を扱うことを禁止している人はいない。

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
こんにちは、全ての値を変更しましたが、EAの 設定で機能そのものを無効にすることが可能かどうか、興味があります。

EAの設定で機能を無効化できるようにするには、変数フラグの設定

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
flag == trueのときのみ関数f()が実行される。
 
Alexey Viktorov:

これは絶対に間違っています。グローバルレベルで宣言された変数の処理を禁止するものはない。

不思議なことに、これはMQL5のハンドブックからの引用で、全文は次のようなものです。

"void型 "と "NULL定数 "です。

構文void 型は char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double, string 型と並ぶ基本型であり、int, uint, color, long, ulong, datetime, double, string 型と並ぶ基本型である。この型は、関数が値を返さない ことを示すために使われるか、または、パラメータがないことを示すために関数のパラメータとして 使われる。

定義済み定数変数NULL は void 型である。他の基本型の変数に変換せずに代入することができる。基本型の変数と値NULLとの 比較も許可されている


この断片を引用したのは、著者のテキストにある関数がvoid型であり、すなわち何も返さないはずだから、「.return(Exist);" とする。というのは、おそらく間違っていると思いませんか?

データの取り扱いに関する議論は、すべて通過することさえなかった。基本を学んでいるところなので、どこか間違っているかもしれませんが、とにかく情報をありがとうございました。

 
 
 
Alekseu Fedotov:

"...return(Exist);" とする。

戻り値、関数別

このように

そうですね、不注意で、この戻りを前の(上のどの)機能に帰着させてしまいましたね。

 
Alexey Viktorov:

そんなことより...。ハイライトされたものをよく読まなかっただけです。

ハイライトされたViodは、パラメータがないことを意味します。でも、書かなくてもいいんです。パラメータがないので、ドンマイ...

そうですね、私も不注意でした。

 

専門家に質問です。

EAを書こうとしているのですが、機能的に私のニーズに合ったスクリプトが見つかりました。それを関数にしたい、環境を整えたい、もちろん標準のライブラリでも 交錯がある。私はこれらのエントリの違いを理解したいし、記号 " * " それ自体で何か秘密の意味、将来の関数内で単一の型に名前を変更することは可能ですか?

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

ヘルプ、トレンドラインの最初の時間座標を 調べるにはどうしたらいいですか?

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ