MQL5言語をゼロから独学で学ぶ - ページ 34

 
Реter Konow:
見てください:あらかじめ(条件の前に)両方の変数をtrueに設定していますね。つまり、スクリプトを起動するたびに、常に真になるのです。では、なぜ条件が必要なのでしょうか?このプログラムでは、明示的にtrueで初期化された変数がtrueにならないことがあるのでしょうか?- いいえ!なぜなら、あなたはこの値を書き込んでしまったので、コードのどこでも変更することができないからです。

この場合、スクリプトの結果は常に「I will learn the language」という文字列になるので、条件は不要であり、変数自体も不要である。

しかし、追加の関数で変数値を計算させると、一方がtrueを、もう一方がfalseを返す、あるいは両方がfalseを、あるいは両方がtrueを返すなど、異なる組み合わせの結果を導くことができる......。この場合、変数の値によって異なる文字列が印刷される可能性があるため、書き込まれた条件は正当化されます。

ピーターさん、わかりやすい説明ありがとうございます

ウラジミールさん、ありがとうございます。

 
Valeriy Yastremskiy:

これらはスクリプトで設定された変数であるため、ロジックは存在しない。インスタンスを介してユーザーが設定する変数か、関数から派生したものであるべきで、その方がより論理的です。

つまり、スクリプトの効用は常にそこにあるべきものなのです。テキストを表示するスクリプトだけでは意味がない。そして、データ入力では、このスクリプトは、あなたが言語を学ぶことができるかどうかを教えてくれます)そして、関数では、彼らは単に存在しない、彼らは書かれていない、とあなたが書いた場合、例えば、数学の知識、他の言語の知識、どのくらいの自由時間、欲求のレベルと暗記する能力のレベルから計算し、関数は、計算に基づいて真または偽を返すように、有用性が高くなります))))))。

Valeryさん、詳しいお返事ありがとうございました。

敬具 ウラジミール

 

このスレッドを読んでいるかどうかわからない、スクリプトを初めて使う人のためのヒントを含む改訂版です。

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
#property script_show_inputs
//---
input bool достаточно_времени=true;
input bool достаточно_терпения=true;
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   if(достаточно_времени && достаточно_терпения)
     {
      Print("Я выучу язык MQL5!");
     }
   else
     {
      Print("Я не выучу язык MQL5!");
     }
  }
//+------------------------------------------------------------------+

スクリプトに追加されました。

  1. "スクリプトを実行する前にプロパティウィンドウを表示する"。
  2. 外部変数を変化させる能力

ウラジミールさん、ありがとうございます。

 
Реter Konow:
そう、この変形は構文的には正しいのですが、やはり論理性に欠けます。昨日、Vasiliyは関数についていろいろと書いていた。そこで必要とされているのが

bool Sufficient_time = Sufficient_time()。

bool Sufficient_patience = Sufficient_patience()です。

if(Sufficient_time && Sufficient_patience)Print("I will learn the language!");

else Print ("I won't.");

時間や忍耐力をデフォルトで設定するのではなく、条件に入れる前に計算する必要があります。なぜなら、条件を設定しても意味がないからです。

+1.その通りです。

 
Реter Konow:
"...デフォルトで設定するのではなく、時間や忍耐力を計算してから条件をつけると、条件をつける意味がなくなるので、"常にそうであること "が大切です。

しかし、私の「鍋」はすでに沸騰しているので、少し冷ます必要があるので、後で必ずそうします。

敬具 ウラジミール

 
MrBrooklin:

以下は、ヒントを考慮した修正版のスクリプトです。

スクリプトに追加されました。

  1. "スクリプトを実行する前にプロパティウィンドウを表示する"。
  2. 外部変数を変化させる能力

ウラジミールさん、ありがとうございます。

そうなんだ!そして、これらの変数の値を、他の外部変数の値に応じて計算する関数を書いてみてください。

つまり、関数Enough_time()は外部変数の値を取ることになる。

入力 datetime Days_training = 100;
入力 uchar Hour_in_day = 5;
...などなど...。

つまり、この関数は入力変数の値を受け取って計算を行い、その結果を変数Sufficient_timeとSufficient_patienceで返し、それを複数の選択肢を持つ条件に入れて、それぞれ別の文字列を表示するのです。

 
Реter Konow:
その通りです!そして、これらの変数の値を、他の外部変数の値に応じて計算する関数を書いてみてください。

つまり、Sufficient_time()は外部変数の値を取ることになる。

input datetime Days_training_day = 100;
入力 uchar Hour_in_day = 5;
...などなど...。

そして、関数が入力変数の値を受け取って計算を行い、その結果を変数Enough_timeとEnough_patienceに戻して、それを複数のオプションで条件に入れると、それぞれ異なる文字列が表示されます。

Peterさん、あなたの提案を私の自習プランに入れてください。結果は後日、コードスクリプトの形で掲載する予定です。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

しかし、私の「鍋」はすでに沸騰しているので、少し冷ます必要があるので、後で必ずそうします。

敬具 ウラジミール

もちろん、休んでください)。
 
Реter Konow:
そうなんだ!そして、これらの変数の値を、他の外部変数の値に応じて計算する関数を書いてみてください。

つまり、Sufficient_time()は外部変数の値を取ることになる。

input datetime Days_training_day = 100;
入力 uchar Hour_in_day = 5;
...などなど...

時間が経てば多少は分かるのですが、「Enough Patience」の変数がまだ問題です。何を入れればいいのでしょうか?忍耐力があるのかないのか?少なくともこの2つのパラメータは?考えないといけない。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

時間はだいたいわかるのですが、「十分な忍耐力」の変数が問題です。何を入れているのですか?忍耐があるのかないのか。少なくともこの2つのパラメータは?考えないといけない。

ウラジミールさん、ありがとうございます。

1.ムード(初期化された条件ユニットによる型の列挙)。

2.自己認識(同じもの)。

3.やる気指数。

4.FXの信念の係数

...

計算式をいくつか考えて、完成です)。