mql5言語の特徴、微妙なニュアンスとテクニック - ページ 182

 
Konstantin Nikitin:

例えば、VDS上の全てのオブジェクトを削除する。ただ、スケジュールをオーバーロードしたくないんです。そして、そこに必要なものはないのです。グローバルを使っています。だから、すべて状況次第なんです。

いいか、私が彼らを嫌いなのには理由があるんだ。

  1. それは、それらとの操作のアトミック性の問題です。ドキュメントでは黙殺されていますが、実際にはオブジェクトであり、それらとの演算はアトミックではありませんし、x86でのダブル自体の読み書きは、私の記憶違いでなければ、2命令です。
  2. プログラム外の変数にアクセスできること。
1の点がドキュメントの質に対する不平不満というより、2の点が深刻です。
 
Vladimir Simakov:

いいか、私が彼らを嫌うのには理由があるんだ。

  1. それらとの操作の原子性の問題。ドキュメントでは黙殺されていますが、実際には、オブジェクトであり、それらとの演算はアトミックではありませんし、x86でのダブル自体の読み書きは、私の記憶違いでなければ、2命令です。
  2. プログラム外の変数にアクセスできること。
1がドキュメントの品質に関する不満というより、2が深刻です。

まあ、読む必要はないんですけどね。GlobalVariableCheckを 使用すると、変数があるかどうかを確認することができます。オブジェクトでも同じことができます。
そのため、変数の作成/チェック/削除を行うだけでよいのです。

 

Vladimir Simakov:

2.プログラム外の変数の利用可能性。

グローバル変数を扱うすべての関数には、操作の結果である戻り値がありますから、問題ありません。

同期ツールがありますhttps://www.mql5.com/ru/docs/globals/globalvariablesetoncondition 、 それはあまりないですが、あなたが提供されるものを使用してください。

しかし、大きな欠点はデータ型がdoubleしかないことで、私はdoubleが好きではなく、少なくともulongは使えたはずで、名前/値 ---> 文字列/ doubleという構成は、データを文字列に、キーをdoubleに書き込んで、一つの操作でもっと書き/読みできるようなスワップ欲求を引き起こします。

とはいえ、これだけのものを見積もってバイナリファイルに書き込んでもよい。つまり、完全な自由と不確実性がないのだ。

使いこなせればいいんだろうけど。

@fxsaber があらゆるタイプの作業例を紹介https://www.mql5.com/ru/forum/320395/page6#comment_12910394

 
Konstantin Nikitin:

まあ、読む必要はないんですけどね。変数が存在するかどうかを確認するには、単純にGlobalVariableCheck を使用します。オブジェクトでも同じことをするんですね。
そのため、変数の作成/チェック/削除を行うだけでよい。

そう、些細な命名ミスで、他のロボットの文字列が

GlobalVariableDel(yourValueName);

は預金を失います))))

名前は唯一無二、他のロボットは絶対に存在しない、子供・妻・友人・酔っぱらいは絶対に戦闘端末に近づかない、と言ってください)))同意だが、確率はゼロではないので、コードの信頼性が低くなる。

 
Vladimir Simakov:

些細なネーミングの衝突で、相手のロボットのライン

を使うと、手持ちの資金を使い果たすことになります)))

名前は唯一無二、相手のロボットは絶対にいない、子供・妻・友人・酔っぱらい本人は戦闘端末に近づかない、と言うことでしょう)))同意だが、確率はゼロではないので、コードの信頼性が低くなる。

デタラメとファンタジー

お金のEAは、常に別のターミナルから、独自のVDS(あるいはサーバー)で実行され、誰もそれをいじらない。

 
Maxim Kuznetsov:

デタラメとファンタジー

EAは常に別のターミナルから、独自のVDS(またはサーバー)で実行され、誰もそれをいじらない。

ALWAYSってどういうこと?今日 - いつも、明日は違う計算をするかもしれません。そして、誰もがあなたに同意しているわけではないようです。

端末のグローバル変 数を使うことの本当の危険性を指摘しました。これは良いことでも悪いことでもなく、開発者が与えてくれたものであり、私たちはそれを意識し、考慮する必要があるだけなのです。

同じ文字列

GlobalVariablesDeleteAll();

...任意のスクリプトで作られ、おっと...

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

mql5の特性、ヒントとコツ

ウラジミール・シマコフ さん 2020.05.24 17:02

同じ文字列

GlobalVariablesDeleteAll();

...どのスクリプトで作っても、おっとっと。

グラフィカルなオブジェクトも同様です。

ObjectsDeleteAll(...


EAのリソースのみ、他のプログラムによって変更されることはありません。

 

同僚よ、可能な限り、マクロを作るのを手伝ってくれ。

2次元の配列を動的に宣言する必要があります。そして、2次元目も変えなければならない。このようなループのようなものです。

for(int would_be_size2=0;would_be_size2<5;would_be_size2++)
    {
     double d_array[][would_be_size2];
     int size2=ArrayRange(d_array,1);
    }

もちろん、コンパイラはこれを嫌がるだろう。

'[' - invalid index value       t7.mq5  20      22

以下のようなマクロが欲しいです。

#define  CREATE_MARRAY(type,arr_name,size2) (type arr_name[][##size2])

線の代わりに

double d_array[][would_be_size2];

ありがとうございます。

 
Denis Kirichenko:

同僚よ、可能な限り、マクロを作るのを手伝ってくれ。

2次元の配列を動的に宣言する必要があります。そして、2次元目も変えなければならない。このようなループのようなものです。

もちろん、コンパイラはこれを嫌がるだろう。

以下のようなマクロが欲しいです。

線の代わりに

ありがとうございます。

しかし、ループの外側で十分な(最大)サイズの配列を作成することは、政治的な妨げになるのです ?:-)

上記の方法(ループ内で毎回配列を再作成する)では、速度やメモリ消費量の点で何も勝てません。

 
Denis Kirichenko:

これに似たマクロが欲しいです。

うまくいかない。

理由: