記事"Expert AdvisorプログラミングにおけるMQL5標準トレードクラスライブラリの使用"についてのディスカッション - ページ 2

削除済み  
Trolls:

入札が印刷されないのはなぜですか?

以下は作業ログです。


2011.01.31 20:20:18 00 (eurusd,m1) eurusd 0

コード



my_symbol.Refresh();の代わりにmy_symbol.RefreshRates();を使ってください。するとうまくいきます!
 
-Alexey-:
"my_symbol.Refresh() "の代わりに "my_symbol.RefreshRates() "を使ってください。そうすればうまくいきます!

ありがとうございます。

これは開発者かヘルプを書いている人への質問でしょう。

記事には

mysymbol.Refresh()
リフレッシュするために使用されます。 シンボルのすべてのデータ シンボルのすべてのデータを更新するために使用されます。クラスに新しいシンボル名を指定すると、自動的に呼び出されます。


mysymbol.RefreshRates()
相場を更新するのに使用。新しいシンボルが設定されると、自動的に呼び出されます。

1.すべてのデータではないことが判明。

2.新しいシンボルを指定することと、新しいシンボルを設定することの違いは何ですか?

3.自動的にという言葉がよくわかりません。my_symbol.Name(_Symbol)というコマンドでシンボルを設定したようなのですが、更新が行われませんでした。

 
Trolls:

記事にはこうある。

mysymbol.Refresh()
すべてのデータをリフレッシュするために使用される。 すべてのデータ シンボルのすべてのデータを更新するために使用されます。クラスに新しいシンボル名が指定されると、自動的に呼び出されます。

mysymbol.RefreshRates()
相場を更新するために使用されます。新しいシンボルが設定されると、自動的に呼び出されます。

1.すべてのデータ?

2.新しい文字を指定することと、新しい文字を設定することの違いは何ですか?

3.自動的にという言葉がよくわかりません。my_symbol.Name(_Symbol)というコマンドでシンボルを設定したようなのですが、更新が行われませんでした...。

記事の著者や参考書の著者からの回答を待たなくてもいい、貴重な瞬間だ :)RefreshRates()は SymbolInfoTick() 関数と完全に重複しており、「指定されたシンボルの現在の価格をMqlTick 型の変数に返す 関数であることは、ソースコードを見れば十分わかる したがって、著者が「相場の更新について」と言っているのは、実際にはMqlTick型の変数の値の更新について言っているのである。

2.ソースコードにこのような行がある。

void  Name(string name)  { m_name=name; Refresh();}
これは、Name()関数を呼び出すと、Refresh()関数だけが自動的にアクティブになることを示しています。Name()関数を呼び出すとRefreshRates()関数が自動的に起動するという情報は見つかりませんでした。従って、"今日現在"、Name()関数のシンボルを変更しても、RefreshRates()関数は自動的に起動しないことが判明した。MqlTick型の変数("refresh quotes")の値を独立して強制的に更新しなければならない。
 
Trolls:

ビッドが表示されないのはなぜですか?以下は作業ログです 2011.01.31 20:20:18 00 (EURUSD,M1) EURUSD 0

コード

void OnTick()
  {
   my_symbol.Name(_Symbol);
   my_symbol.Refresh();
   Print(_Symbol," ",my_symbol.Bid());
  }

Bidの値が0と表示される理由は以下の通りです。ソースコードを見ると、Bid()関数は以下の行で記述されています。

double  Bid()  const { return(m_tick.bid);}

このように、Bid()関数の値は、MqlTick 型の変数の要素の1つの値にバインドされています。そしてこの変数は、シンボルが変更されたときに自動的に更新されるのではなく、RefreshRates()関数の追加呼び出しによって更新されます。あなたのコードでは、Refresh()関数が呼び出され、実際には(Name()関数のボディを考慮して)2回呼び出され、RefreshRates()関数は1回も呼び出されません。

削除済み  
おそらく、Refresh() の最後の部分にRefresh()の呼び出しを 追加することで、コードを改善できるだろう
 
Interesting:
おそらく、Refresh() の最後の部分に RefreshRates ()コールを 追加することで、コードを改善することができるでしょう
Name()関数にRefreshRates() コールを追加しました。しかしそれでも、これらは個々のユーザーのニーズに合わせたパッチです。
削除済み  
Yedelkin:
Name()関数にRefreshRates() コールを追加した。しかし、それでもなお、これらは個々のユーザーのニーズに対するパッチである。

しかし、もし開発者が他の場所にRefresh()を置くなら(彼らの裁量で)、それはほとんどのユーザーにとって普通の解決策になるでしょう。

もしRefreshが全てのデータを更新 すると言うのであれば、全てのデータは本当に更新されるべきです。IMHO


 
Interesting:

しかし、開発者がそれをRefresh()や他の場所に(彼らの裁量で)置けば、ほとんどのユーザーにとって普通の解決策になるだろう。

もしRefreshがすべてのデータを更新 すると言うのであれば、本当にすべてのデータが更新されるべきです。IMHO

それに異論はない。しかし、それでも、ユーザーにとっての普通の解決策は、 利用可能な デザインとそのプロパティの明確で理解しやすい説明 でしょう。そうすれば、ユーザー自身がこれらの構成要素の使い方を理解することができます。そして、そのような解決策は様々な理由から実現が難しいので、自分自身や他の人に追加の質問をする人が前に進むでしょう :)
削除済み  
Yedelkin:
それに異論はない。しかし、それでも、ユーザーにとっての通常の解決策は、 利用可能な デザインとその特性についての明確で理解しやすい説明 だろう。そうすれば、これらの構造をどのように使うかは、ユーザー自身が考えることになる。そして、そのような解決策は様々な理由から実現が難しいので、自分自身や他の人に追加的な質問をする人が前に進むことになる)

僕は標準ライブラリは 勉強のためにしか使わないからわからない。自分のプロジェクトはすべて自分のコンポーネントで書いている。

コンストラクタがもっと便利になるまで待って、それから標準ライブラリは完全にあきらめるよ...。

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

ところで、CHistoryOrderInfo クラスには次のような行がいくつかあることがわかった。

return(FormatType(str,Type()));
...
FormatType(type,Type())

しかし、このクラスにはType()関数がない。