MQL5への願い - ページ 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

このようなやり方は意味があるのでしょうか?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2 です。
SK.は(a)を書いた。

あと、if()勘弁して ほしい。

一般的なプログラミング言語では、そういうものは見たことがないのですが......。

О.それだ、正にその通りだ。

この文の中の「他の言語でなければ悪い」という肯定的な言葉は、「外国のものであり、不必要なものである」という意味です。

私の考えでは、それは全く違います。

私もそう思います。しかし、より高いレベルの便宜上も状況を見なければならない。MQの優先順位は、そして私たちの優先順位も(!)、自動売買の言語としての MQLを改善し、その取引と 分析の 可能性を発展させることなのです。そして、MQはこの方向でまだ多くの未解決の問題を抱えています。


また、取引とは関係のない非標準的なプログラミング構造の実装など、MQLはそのために作られたものではありません。もし、開発者が何とかして他の言語の中でひねり出したい、目立ちたいと思ったのなら、C++ではなく、例えばPrologを使ったはずだ。:)(個人的にはPrologファンとして、見ていて面白かったのですが。:))


ここでいくらプログラマーがブレイキフを 要求しても、MQはそれに時間を割くことはないと思うのです。そして、私の意見では、彼らは正しいことをするはずです。そして、自動売買言語としてのMQLの改善という、より差し迫った課題から目をそらすような要求でMQを悩ませないよう、皆さんに提案します。

SK.は(a)を書いた。

複雑な構成は、ループやリストをベースに形成されるだけではありません。また、ifを ベースに形成されている。そこで、外付けのクロージングブラケットへの移行をコントロールすることが有効です。

私はgotoに 賛成です。:)


このようなプログラムのロジックは、より透明性の高いものになるでしょう。結局のところ、breakifは ifコンストラクションからの 早期終了です。他の早期終了と同様に、何らかの条件、つまりもう一つのifの 内部で実行される必要があります。このように、breakifは 1つのifに対してではなく2つ(!)のifに対しての 終了演算子という話になり、プログラムの論理の理解が複雑になるし、1つの 構成に対してのみ終了する演算子としてのbreak(breakfor,breakwhileなど)の一般概念からも外れることになる。だから、他の言語の開発者は、いまだにこのような怪しげな演算子を導入していないのかもしれない......。

 
ds2 писал (а):
そして、自動売買言語としてのMQLの改善という、より差し迫った課題から目をそらすような要求でMQを悩ませないよう、皆さんに提案します。


大賛成です。:)このようなプログラムのロジックは、より透明性の高いものになるでしょう。

開発者の皆様へ自動売買言語としてのMQLの改良という、より緊急性の高い課題から」目をそらさないでください。

もうご迷惑をおかけすることはありません。

やはりds2の意見を取り入れるしかないでしょう。

 

Skeptic Filozovの 記事に触発されて - あ、 テストレポートに平均損益をpipsで入力、最大・最小トレードも入力します。

 

読み取り専用を 要求


機能を入力するか、現在の機能で端末のすべてのサブフォルダーにアクセスできるようにする

げんきん

read only」モード。


Plan another folder \services

DMからの様々な情報が一元的に書き込まれる場所。

例えば、自動更新のカレンダーファイル、ニュースの "数字 "などです。


リクエストの内容を明確にする必要がある場合は、問題ありません。;)

 

グラフでは、太さ1の線が粗く見えるので、
1.ヘアラインはあった方が良いと思います。

2.Digits+2の 四捨五入で行が表示されると良い。

今はツールのDigitに線が丸まっていて、それが段差に繋がっています。

-現代のグラフィック製品の環境では、これは顕著であり、実際にはもはや便利ではありません。

 
アドバイザーが顧客のスケジュールに奉仕できるため、「技術的な刻み」が非常に必要とされている
形など
int servis() 
{
return(0);
}

これもStartと同じように受信/起動しますが、サーバーからではなく、端末のローカルタイマーからです。
技術的なダニの必要期間は誰にも害を与えません:1秒から3秒まで。
この変更は、第5版を待たずに直接MQL-4に導入することが可能です。つまり、テストのため、ビジネスのためということです。
 
Korey:

METALANGのERROR

extern double  Lot=0.2;
int start()
{ double   Lot; }

ダブル変数開始は、エラーや警告を出さずにコンパイルを通過します。


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

ローカル変数が グローバル変数を覆い隠す。エラーはありません。

 

コリー まさに外部変数がマスキングされているからこそのゼロ。

double Lot;

- は、start()関数内部でのローカル 変数の未初期化宣言です。デフォルトでは0に初期化される。start()で呼び出され、入力パラメータLotを持つすべての関数は、外部変数ではなく、ローカル 変数の値を受け取ります。唯一の例外は、init()内の関数がstart()の前に実行される場合である。そこでは、Lotパラメータは(同様にマスクされていない場合)外部変数の値、すなわち0.2を取得しなければならない。


間違った、または不完全なコードを引用した。my_funck()はどこから呼び出すのですか?

 
Korey:

もしマスキングであれば、なぜ他の関数は0になり、externで規定されている0.2.にならないのでしょうか?


自分で明細を確認する必要がある。以下は簡単なスクリプトです。

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


スクリプトの 結果を表示します。