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

 
Rosh:

位置がある場合、無限ループになるのは

と同じです。

演算子の本体に区切りがないため、コード内でループから抜け出すことはできません。
ありがとうございました。
 

間違い(ビルド421、多分425で何か修正された、まだalpariから425へのアップデートはない)。

1.3D可視化に関するスレッドで既に書きましたが、3Dチャートのキャプション(スケール名とスケール値)は、チャートに表示するためのパラメータを変更しても変更されないそうです。

2.高速最適化 では、約10600回目のパスでグラフが一致します。つまり、最適化は50,51...60世代続きますが、グラフは移動せず、新しいパスが表示されることもありません。同時に、「設定」タブにはパス数ではなく「最適化の進捗状況:」と表示され、原因不明の状況でも、例えば12420/14400(数字は概算)と変化しています。

3.削除したエージェントはBusy状態になり、その状態を維持することができるので、私はそれらをオフにしたりオンにしたりして、その後、最適化を続けます。

また、最適化完了後ではなく、最適化中にグラフ表示(1D/2D/3D)を変更することは可能でしょうか?

 
PiramidaR:

間違い(ビルド421、多分425で何か修正された、まだalpariから425へのアップデートはない)。

同じターミナルで、MetaQuotesから口座を開くと、更新されます。その後、再び別のアカウントに切り替える
 
PiramidaR:

間違い(ビルド421、多分425で何か修正された、まだalpariから425へのアップデートはない)。

1.3D可視化に関するスレッドで既に書きましたが、3Dチャートのキャプション(スケール名とスケール値)は、チャートに表示するためのパラメータを変更しても変更されないそうです。

2.高速最適化では、約10600回目のパスでグラフが一致します。つまり、最適化は50,51...60世代続きますが、グラフは移動せず、新しいパスが表示されることもありません。同時に、「設定」タブにはパス数ではなく「最適化の進捗状況:」と表示され、原因不明の状況でも、例えば12420/14400(数字は概算)と変化しています。

3.削除したエージェントはBusy状態になり、その状態を維持することができるので、私はそれらをオフにしたりオンにしたりして、その後、最適化を続けます。

また、最適化完了後ではなく、最適化中にグラフィックビュー(1D/2D/3D)を変更することは可能でしょうか?

1,2 修正済み、ただし最新ビルドには含まれない

3 取り組んでいます。

そのような機能はありません

 
描画しない値を指定するだけでなく、描画する値も指定できるようにしてほしい。
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);

のみならず、この値で配列を 自動初期化できるようにすることです。インジケータが最後のバーに何も割り当てていない場合、デフォルトで

PLOT_EMPTY_VALUE

というか、まず空の値で初期化して、あとはインジケータに好きなように書かせる。

なぜなら、今はデフォルト値がゼロになりますが、多くの指標におけるゼロは、描画すべき重要な数値だからです。

HZさんは、このスレッドで解決していないようなので、希望は質問とみなして書き込みました。もしそうなら、どのように解決するのか教えてください。

 

Urain:

なぜなら、今はデフォルトの数字がゼロになりますが、多くの指標におけるゼロは、描くことに意味がある数字だからです。

実際、何でもありで、それがゼロになるのは、たいていラッキーなことなんです。記事MQL5でindicatorから 直接書いてあります。

インジケーターバッファの初期化は必要ですか?

MQL5の配列は、デフォルトでいかなる値でも初期化されません。これは、SetIndexBuffer()を使用してインジケータ・バッファに割り当てられた配列にも確実に当てはまります。配列がインジケータバッファの場合、そのサイズは OnCalculate()ハンドラのrates_total パラメータに依存する。

ArrayInitialize() 関数を使用して、例えばOnCalculate()の最初に一度、すべてのインジケータ・バッファをEMPTY_VALUEという空の値で初期化する誘惑があるかもしれない。
//--- если это первый вызов OnCalculate() 
   if(prev_calculated==0)
     {
      ArrayInitialize(TSIBuffer,EMPTY_VALUE);
     }

しかし、次の理由から、これを行うことは推奨されません。端末の動作中に、インジケータが計算されるデータに基づいて、シンボルの相場が受信されるからです。 したがって、バーの数は時間の経過とともに増加し、端末はインジケータ・バッファのために追加のメモリを割り当てることになります。

しかし、新たに取り付けた配列の要素の値は、任意の値を持つことになります。なぜなら、どの 配列に対しても、メモリを再割り当てするときには、初期化が行われないからです。そして、この初期化によって、明示的に値を代入していない配列のすべての要素が、最初に配列を初期化したときと同じ値で満たされるという、誤解を招く確信を持つことができるのです。また、変数や配列の要素が望みの値で初期化されることに依存してはならない。

インジケータ・バッファの各要素に値を設定する必要があり、このバーのインジケータ値が定義されていない(インジケータに実装されているアルゴリズムに従って計算されていない)場合、そのような場合のために明示的に空の値を設定 する必要があります。 例えば、インジケータ・バッファ値は除算演算を使って計算されており、ある時点で除算器がゼロに等しいことが判明するかも知れません。
 
Rosh:

実は何でもありなんです。ただ、ゼロであることは通常、幸運なことなんです。 MQL5のIndicatorからIndicatorの記事には、そのように明示されています。


最後の値を初期化すると、エラーが発生する可能性のあるコードを追加で書かなければならないので、これはまさに私が言語レベルで解決したい問題なのです。

こうすることで、正確な値があることを確認でき、これを基にさらにアルゴリズムを構築することができます。

 
Urain:

最後の値の初期化には、エラーを含む可能性のある追加のコード行が必要になるため、これはまさに言語レベルで解決したい問題です。

こうすることで、正確な値があることを確認でき、これを基にさらにアルゴリズムを構築することができます。

私もこの問題に直面しました。支持する:言語レベルでの解決策を作る。
 
Lizar:
私もこれに遭遇したことがあります。支持する:言語レベルで解決するようにする。
+1
 

ビルド425

テスターで、同じ条件で何度もEAを実行するのですが、実行結果が異なるという状況に戸惑っています。その差はわずかですが...

2台のマシンで確認したところ、ほぼ同じ確率で2種類の結果が得られました。それはどういうことでしょうか?