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

 
komposter:

もちろん、すべてにおいて正確です。

ご指摘ありがとうございます。OnTimer()のことをすっかり忘れていました。通してやったので、満足です )
 
Rosh:
使えるものは、これでもかというほど受け取った。そういう理解でいいんです。使用可能な履歴の深さを確認します。データを要求する前に、データが利用可能であることを確認する。最近、月単位の時間軸をコピーするバグを修正したので、これが原因かもしれません。
どのビルドで修正が必要ですか?489にはバグがあります。
 
marketeer:
つまり、チェックが甘いか、Expert Advisorがマルチカレンシーではなく、異なるシンボルで動作する可能性があります。理由は簡単で、刻みが異なる時間に異なる記号に来ることを知っているからです。したがって、例えばEURUSDをonTickしているEAが、GBPUSDをチェックしたり、EURUSDの代わりにGBPUSDのティック変化だけをチェックした場合、結果は異なってきます。特に、EURUSDで形成されたバーは、GBPUSDで同じ時刻のバーが形成される前に発生する可能性があります。同じバーで2回GBPUSDを取引した場合:前のGBPUSDバーはまだ新しいバー(ゼロ)とみなされます。多通貨の指標については、すべてクリアしています。基本を学ぶ。

どういう計算なんだ、1ペアでティックが入ったが、2回目のティックが遅くてファ...

すなわち,新しいバーが出現した瞬間の価格と,ティック

すべてのシンボルで新しいバーの発生に関与しているわけではありませんが、それはからの

戦略は、スキャルパーでない場合は、依存します。

 

iCustom()関数を動作可能な状態にする予定があるのか、MQチームに改めてお聞きしたいのですが。

現時点では、Expert Advisorの開発者は、iCustom()を使用した普遍的なソリューションを提供することができません。

エキスパートアドバイザーで使用する外部インジケータの名前を指定することができます。

そのためには、Expert Advisorのソースコードが必要であり、Expert Advisorのコードに各インジケータ名を手入力する必要があり、非常に不便である。

また、インジケーターバッファセルの 値を明示することが義務付けられている問題もある。

インジケータ・テキストのインジケータ・バッファ・セルに明示的に値(空または非空)が割り当てられていない場合、iCustom()関数はExpert Advisorの指示されたセルに以下を記入することができます。

どんなゴミでもこのような機能の運用は、正しいとは言えないと思います。

 
MoneyJinn:

iCustom()関数を動作可能な状態にする予定があるのか、MQチームに改めてお聞きしたいです。

現時点では、Expert Advisorの開発者は、iCustom()を使用した普遍的なソリューションを提供することができません。

エキスパートアドバイザーで使用する外部インジケータの名前を指定することができます。

そのためには、Expert Advisorのソースコードが必要であり、Expert Advisorのコードに各インジケータ名を手入力する必要があり、控えめに言ってもかなり不便である。

iCustomでは呼び出されたインジケータの動的な名前を渡すことができますが、カスタムインジケータごとにパラメータのセットは異なります。

残念ながら、「何がどのようなパラメータで 呼び出される のか分からないまま、コードを触らずに 安全に実装するにはどうしたらよいか」という問いに対する普遍的な解は分かっていない。

もし私の理解が正しければ、サードパーティユーザーがEAの設定でパラメータ付きの任意のインディケータ名(例えば「MyIndicator(10,20,50,100)」)を設定する場合のプラグインシステムを作りたいのですよね?このような名前の形式が厳格な場合は、自分で文字列を解析してパラメータのブロックを形成し、別のパラメータのセットでiCustomの動的な呼び出しをラッパークラスとして実装することができます。言い換えれば、パラメータのセットや数が異なる複数のiCustomコールのバリエーションが内部に隠されていることになります。


また、インジケーターバッファセルの 値を明示することが義務付けられている問題もある。

インジケータ・テキストのインジケータ・バッファ・セルに明示的に値(空または非空)が割り当てられていない場合、iCustom()関数はExpert Advisorの指示されたセルを次のように埋めることができます。

どんなゴミでもこのような機能の運用は、正しいとは言えないと思います。

与えられたバッファを埋めないのは、開発者の不謹慎であり、まさに怠慢である。

ランタイムシステムは、あなたがどのようにインジケータバッファを使用しているかを知らないので、特に大量のアロケーション(ページングやチャート更新)が発生する瞬間、バッファをいくつかの値で埋める権利がありません。OnCalculate(...,const int prev_calculated,...) 関数とパラメータ prev_calculated によって、再計算が必要なすべてのケースについて、インジケータは必ず通知されます。

 
Renat:

iCustomでは、呼び出すインジケータの動的な名前を渡すことができますが、カスタムインジケータはそれぞれ独自のパラメータを持っています。

残念ながら、「何がどのようなパラメータで 呼び出される のか分からない状態で、コードを乱す ことなく安全に実装するにはどうすればよいか」という問いに対する普遍的な解答は分かっていない。

もし私の理解が正しければ、サードパーティユーザーがEAの 設定でパラメータ付きの任意のインディケータ名(例えば「MyIndicator(10,20,50,100)」)を設定 する場合のプラグインシステムを作りたいのですよね?このような名前の形式が厳格な場合は、自分で文字列を解析してパラメータのブロックを形成し、別のパラメータのセットでiCustomの動的な呼び出しをラッパークラスとして実装することができます。言い換えれば、パラメータのセットや数が異なる複数のiCustomコールのバリエーションが内部に隠されていることになります。

コードを変更する必要があるという問題意識から、テスト時にインジケータ名を明示的に指定する必要があるという意味です

を#property tester_indicator "Name.ex5 "の形式で、インジケータのパラメータ数が異ならないようにしてください。

インジケータは、対応する信号のインジケータバッファの数だけを選択することで、デフォルトのパラメータで使用することができます。

レナット

これは、開発者が自由に使えるバッファを埋めないという不謹慎さであり、怠慢さである。

ランタイムシステムは、あなたがどのようにインジケータバッファを使用しているかを知らないので、特に大量のアロケーション(ページングやチャート更新)が発生する瞬間、バッファをいくつかの値で埋める権利がありません。OnCalculate(...,const int prev_calculated,...) 関数とパラメータ prev_calculated を介して,再計算が必要なすべてのケースについて必ずインジケータに通知される.

iCustom()で未使用のセルにスタックからのゴミを詰まらせる代わりにEmpty_Valueを割り当てるのは本当に難しいのでしょうか?

https://www.mql5.com/ru/forum/1111/72233#comment_72233

なお、バッファセルの実際の値はEmptyのままである。改ざんを行うのはiCustom()です。

 
MoneyJinn:

問題視されているコード変更の必要性というのは、テスト時に明示的にインジケータ名を指定する必要性のことです

を#property tester_indicator "Name.ex5 "の形式で、インジケータのパラメータ数が異ならないようにしてください。

さらに解決していく......というニュアンスがあります。

iCustom()で未使用のセルにスタックからゴミを入れる代わりにEmpty_Valueを割り当てるのは本当に難しいのでしょうか?

https://www.mql5.com/ru/forum/1111/72233#comment_72233

これはできない。もう一度、私の回答をお読みください。
 
Renat:

これはやってはいけないことです。私の答えをもう一度読んでみてください。

iCustom()が、実際には何も入っていないバッファセルに任意の値を割り当てる理由も、それをどうにかして回避できない理由も、私には不明です。

インジケータ・バッファ・ データの配列に対応するメモリの割り当てと関係があるのでしょう。

データの出所や真偽を判断することが不可能なiCustom()のこのような操作は、私には許されないと思いますし、ユーザーにとってさらなるリスクを生むことになります。

iCustom()が任意の、実値と矛盾する値をとにかくバッファセルに割り当てる場合。

MT4で実装されているように、これらのセルにEmpty_Valueと等しい値を割り当てないのはなぜですか?

そうすれば、少なくとも彼らの地位は明らかになるはずだ。

 
反論しない。
kPeriod2 = kPeriod1 * nextPriod;

Warning : possible loss of data due to type conversion
しかし、このように
kPeriod2 = round(kPeriod1 * nextPriod - 0.5);

Warning : possible loss of data due to type conversion 
は四捨五入がありますが、それでもそう言うのでしょうか?
 
Lodar:
反論しない。
しかし、このように
四捨五入がまだ残っているのですが、このままで良いのでしょうか?


すべての変数が同じタイプであるかどうかを確認します。そして、タイプ変換の 項目です。この警告は暗黙の型変換により発生し、コンパイル時に検出されます。
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5