記事"MQL5をプログラミングの基礎: ターミナルのグローバル変数"についてのディスカッション - ページ 2

 
Andrey F. Zelinsky:

記事からは明確な説明が期待された:

1.-- グローバル変数が どこにどのように格納されているか(メモリ上、ディスク上)。

2.-- これらのグローバル変数が読み出される頻度

-- など。

残念ながら、この記事には答えが見つからなかった。


1.これについては、「GlobalVariablesFlush関数」のセクションに少し書いてある。

2.禁止されていないものはすべて許可されている。

 
Dmitry Fedoseev:

1.これについては「GlobalVariablesFlush関数」のセクションに少し書いてある。

2.禁止されていないものは何でも許される。

操作中に変数がどのように保存されるのか -- メモリ/ディスク -- と、変数の書き込み/読み出しの頻度がディスクにとってどの程度重要なのかに興味がある。

端末が突然シャットダウンされたとき、変数はどうなるのか。

要するに、このような疑問は、記事の中で、あるいはここでのディスカッションの中で、明確にしていただけると非常に助かります。

このことについては、フォーラムで何か書かれていたように記憶していますが、いつ、どこで、何が書かれていたのかわかりません。

 
Glob.variablesは良いが、もっと良いものが欲しい :-)類似のものが欲しいのだが、チャートの名前空間にある。
 
Andrey F. Zelinsky:

動作中に変数がどのように保存されるのか(メモリー/ディスク)、変数の書き込み/読み出しの頻度がディスクにとってどれほど重要なのかに興味がある。

端末が突然シャットダウンされたとき、変数はどうなるのか。

要するに、このような疑問は、記事の中で、あるいはここでのディスカッションの中で、明確にしていただけると非常に助かります。

このことについては、フォーラムで何かが語られていたように記憶していますが、いつ、どこで、何が語られていたのかがわかりません。

ここには 何かがある。著者はそこで何かをテストしているようだが...。

Основы программирования на MQL5 - Глобальные переменные терминала
Основы программирования на MQL5 - Глобальные переменные терминала
  • 2014.11.03
  • //www.mql5.com/ru/users/denkir">
  • www.mql5.com
В данной статье демонстрируются объектно-ориентированные возможности языка MQL5 по созданию объектов, отвечающих за работу с глобальными переменными терминала. В качестве практического примера рассматривается ситуация, когда глобальные переменные могут использоваться как контрольные точки выполнения этапов программы.
 
Dennis Kirichenko:

ここに 何かがある。著者はそこで何かをテストしている......。

サイト上に同じ記事が2つもある?

しかも同じタイトルで?

и


 
Andrey F. Zelinsky:

動作中に変数がどのように保存されるのか(メモリー/ディスク)、変数の書き込み/読み出しの頻度がディスクにとってどれほど重要なのかに興味がある。

端末が突然シャットダウンされたとき、変数はどうなるのか。

要するに、このような疑問は、記事の中で、あるいはここでのディスカッションの中で、明確にしていただけると非常に助かります。

このことについては、フォーラムで何か書かれていたように記憶しているのですが、いつ、どこで、何が書かれていたのかわかりません。

GlobalVariablesFlush関数」の セクションにそれについての記述があります。

それらはファイルに保存されます。端末がシャットダウンされるか、GlobalVariablesFlush()が呼ばれると、ディスクにリセットされます。

ハードディスクの寿命についてはさまざまな意見があり、170年以上という意見もある。コンピュータで音楽を聴いたりビデオを見たりするときに、同じ疑問について考えるだろうか。グローバル変数を使っても、音楽やビデオを再生するときに起こるディスクへの負荷のほんの一部すら実現できない。また、インターネットを使ってリンクをクリックすると、どれだけのファイルが即座にディスクに保存されるか知っているだろうか?しかし、インターネットを使うとき、ディスクへの負荷について考える人はいない。

定期的なデフラグは、ディスクへの負荷を大幅に軽減します。また、安定した電源供給(しかし、ノートパソコンにはそのような問題はない)、温度調節(しかし、それについては何もできない)。

***

フォーラムではGlobalVariablesFlushについて議論され、ターミナル開発者はそこで何かを無効にしたと書いたが、誤解されていたようだ。彼らはディスクへの直接リセットを無効にしました。以前は、リセットはオペレーティングシステムを通してディスクに直接実行されていました。今はオペレーティング・システムを通してリセットされる。これにより、ファンクションコールがあったときに即座にリセットを実行するのではなく、オペレーティングシステムがリセットを実行すると決めたときに実行できるようになった。コンピュータの電源が突然落ちるというのは、今では非現実的な現象だ。

 
Maxim Kuznetsov:
Glob.variablesは良いが、もっと良いものが欲しい :-)類似のものが欲しい。
グローバル変数の 接頭辞で解決できます。
 
Andrey F. Zelinsky:

同じ記事が2つも掲載されているなんて。

奇跡だ!
 
Andrey F. Zelinsky:

フェドセーエフの記事とあなたの記事。

フェドセーエフの記事とあなたの記事、しかもタイトルまで同じ?

初めて見たよ。

ドミトリー、いつもながらシステマティックで詳細だ。リスペクト

 
Maxim Kuznetsov:
Glob.variablesは良いが、もっと良いものが欲しい :-)チャート・ネームスペースに類似したものをお望みなのですね。

それなら、名前空間レベルで使ってください。)

私は少し違う実装をしていますが、かなり使えます:

//===============================================================================================
//----------------------- グローバル変数の名前を作成し、返す -----------------------+
//===============================================================================================
string GetGlobalVariableName(string name="", string symb="0") {
 if(symb=="0") { symb=_Symbol;}
  if(!IsTesting()) {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_"+name);
  } else {
   return(prefix+symb+"_"+(string)AccountInfoInteger(ACCOUNT_LOGIN)+"_"+WindowExpertName()+"_tester"+"_"+name);
 }}

適用するのは簡単です:

// ここでは、必要なものを名前で書く。
if(если больше то) {
 GlobalVariableSet(GetGlobalVariableName("LastAmountPos"),с);
}
// ここでは、名前によって同じものを得る
int pos_count = GlobalVariableGet(GetGlobalVariableName("LastAmountPos"));

pos_count " の名前レベルであれば、最終的に どこでも値を指定できます

一般的に、アプリケーションに制限はなく、非常にシンプルで、速く、便利です!