エラー、バグ、質問 - ページ 1524

 
Slawa:

何を記録するか?"兄弟よ、リラックスして、好きなように初期化しろ。開発者がそれを許したのです。

しかし、ターミナルを閉じると、すでにドキュメントで具体的に言及されている、厳しい条件が発動します。そして、次にターミナルを開いたときには、決められた時間内に保存できていないため、チャートを開いて いない可能性があります。

これと何の関係があるのですか?

無限ループでログを溢れさせてみて、どの程度の速度で成長していくのか、64MBでどのように重複レコードをカットし、ログの先頭を切り捨てていくのかを確認することができます。プロテクトがないって断言してるのは大袈裟だな。ホスティングサイトの全ドライブがとっくに詰んでいただろうに。

ドキュメントをそのままにするか、ドキュメント通りにするか...。OK、それはあなたのビジネスです。

試しに、パソコンの健康状態に合わせて、フィルレート〜1.5GB/分。しかし、4.と比較してターミナルがハングアップすることはありません)。

 
-Aleks-:

うっ、バグは復活してないんですね~、ターミナルを閉じて、すべてのチャートが保存されていることを確認してください。

端末を閉じる ときに、3秒後に強制終了するようになったとのことです。現在も、そしてこれからも、こうして機能していくのです。ターミナルを終了させずに、プログラムをチャートから削除したときに強制終了を返さないようにするのです。
 
Slawa:

元々はループ状のインジケーターのことだったんです。というのは、断じてお勧めできません。イラストとしても

ループするインジケータではなく、サイクル内でIsStoppedをチェック しないインジケータについて話しています。複雑な指標を構築するサイクルは長くなりますから。もちろん、この問題は無限ループのため、私にとってはそれほど現実的ではなく、ただ、ソースコードをレイアウトすることができず、面倒なので無駄になってしまいます。
 

どのような指標でも、少なくとも1サイクルは使用します。

IsStoppedチェックのないループは、このループを無限にする可能性があります。なぜなら、配列には何百万もの価格データが存在する可能性があり、各反復は非最適に書き込まれる可能性があるからです。

意図的に無限ループを作るプログラマは、ドキュメントの情報不足を訴えてはならない。さらに、ドキュメントには次のように明示されて いる。

В одном потоке с индикаторами также последовательно выполняются остальные действия по данному символу - обработка тиков и синхронизация истории. Это означает, что если в индикаторе выполняется бесконечное действие, все остальные события по его символу никогда не выполнятся.

意識の高いプログラマーは、この場合、インジケータの効率に責任があるのは自分であり、ドキュメントではないことをすぐに理解する。さらに、このテーマについて多くの議論や記事があります

 
Slawa:

良心的なプログラマーは、この場合、ドキュメントではなく、インジケータの効率に責任があることをすぐに理解します。さらに、このテーマに関する議論や論文も数多く発表されている

正直なところ、IsStoppedのチェックを入れて いなかったので、自分のミスだけで複雑なインジケータの構築が中断してしまうという問題がありました。しかし、その一方で、プログラムの作業とドキュメントの作成が一致しなければならないことにも慣れました。
 
Ilya Malev:
端末を閉じたときに、すでに3秒後にプログラムが強制終了されると言いました。現在も、そしてこれからも、こうして機能していくのです。ターミナルを終了させずにプログラムをチャートから削除すると強制終了するのを復活させたくないのでしょう。
ええと、私は4倍について指摘しました。以前はEAでチャートを失うことがあったのに、今はすべて正しく終了して閉じているようです。
 
Ilya Malev:
これはすべて正しいのですが、IsStoppedのチェックをしていなかったため、私の責任だけで複雑なインジケータの構築が中断される問題が発生したことを悔やんでいます。しかし、一方で、プログラムの仕事とドキュメントの仕事は一致させるべきだということにも慣れました。

ドキュメントでは、すべてのニュアンスを考慮することはできません。特に、秒、GHz、メガバイトなど、測定可能だが環境に強く依存する値について話すとき

ドキュメントの空白を埋めようとする(内心、良心的な推定を期待しているが)

 
-Aleks-:
あの、4倍速についてコメントしたのですが、今はちゃんと完結して閉じているようですが、以前はEAでチャートを失うことがあったんです。

4人は、各チャートの終値のプロセスを並列に表示した。そのため、1つ1つのタイムアウトを長くすることができたのです。

従来は、チャートを1枚ずつ記憶し、それぞれに同じタイムアウトを与えていました。チャートの数が多く、その上で阻害されるEAが多いほど、クロージングに時間がかかりました。

 
Slawa:

4人は、各チャートの終値のプロセスを並列に表示した。そのため、1つ1つのタイムアウトを長くすることができたのです。

従来は、チャートを1枚ずつ記憶し、それぞれに同じタイムアウトを与えていました。チャートやオンが多いほど、決算が長引いた。

大まかには理解できた。

遅いかどうかはハードウェアとEAが実行するタスクに大きく依存しますし、プログラムはしばしばプロのプログラマーによって書かれているわけではない、という事実を考慮しなければなりません。

 

MT4です。ここでもう一度、プログラムのグローバル変数の初期化の 特殊性に注目したい。

グローバル変数は、プログラムをチャートにインストールしたときや、コードをリコンパイルしたときに一度だけ初期化されます。

タイムフレーム、シンボル、入力パラメータを変更する場合、グローバル変数は再初期化されず(例えば、クリアされず)、以前のタイムフレーム、シンボル、入力パラメータでの作業中に得られた値が維持されます。

input int c;
int a,b;
void OnInit() {
 a++; Print(" a=",a," b=",b," c=",c); }

プログラム的にすべてのグローバル変数をクリアしないと、TF、計測器、入力パラメータを変更したときに、コードが以前の値で、つまり間違って動作してしまうことが判明したのです。

それは合理的ですか?ストラテジーテスターでやった方がいいのでは?そこでは、TF、機器、入力パラメータを変更するたびに、グローバル変数が再初期化されます。