Какие проверки, условия, или задержки надо внести ДО и ПОСЛЕ CopyBuffer(), для того, чтоб, ГАРАНТИРОВАННО получить те 400(0) значений индикатора, которые необходимы сейчас(!
Please note that these Expert Advisors were created for educational purposes and do not constitute any financial advice. Before using the following EAs, please take into account the following: THE DOWNLOAD FILES ARE IN MOL5 FORMAT (MOLANIS 5 FORMAT - A .MOL5 FILE FOR THE EA VISUAL WIZARD). TO OBTAIN THE EA FOR MT5, DOWNLOAD THE STRATEGY...
ここで実用的な質問があります。
なぜCopyBuffer()を呼び出すたびに、インジケータハンドルが無効かどうかをチェックする必要があるのでしょうか?私のEAでは、このプロシージャを一度作成しました(最初のティックの到着で、データの同期を チェックした後)。 CSymTotal=7.ハンドルは配列で受信されました:
プリント・チェックによると、7つのH_Ind[0..6]はそれぞれ10~15、つまり-1とは異なる値を持っています。ハンドルは有効なようだが、CopyBuffer(H_Ind[0-6]...)に応答すると、CopyBuffer=-1, LastError=4807(!!) となる。正常なときもあれば、エラーが出るときもある。この記事のようなチェックを導入した、
今のところ全て正常に動いている。謎だ・・・。
自分の何が悪いのか理解できない・・・。そして何より、なぜ CopyBuffer() を使うたびに ハンドルの有効性をチェックし、再度作成する必要があるのか?Expert Advisorが作業を終えるまで保存されないのでしょうか?一般的に必要なことなのでしょうか、それとも例の便宜上のことなのでしょうか?
ここで実用的な質問があります。
なぜCopyBuffer()を呼び出すたびに、インジケータハンドルが無効かどうかをチェックする必要があるのでしょうか?私のEAでは、このプロシージャを一度作成しました(最初のティックの到着で、データの同期を チェックした後)。 CSymTotal=7.ハンドルは配列で受信されました:
プリント・チェックによると、7つのH_Ind[0..6]はそれぞれ10~15、つまり-1とは異なる値を持っています。ハンドルは有効なようだが、CopyBuffer(H_Ind[0-6]...)に応答すると、CopyBuffer=-1, LastError=4807(!!) となる。正常なときもあれば、エラーが出るときもある。この記事のようなチェックを導入した、
今のところ全て正常に動いている。謎だ・・・。
自分の何が悪いのか理解できない・・・。そして何より、なぜ CopyBuffer() を使うたびに ハンドルの有効性をチェックし、再度作成する必要があるのか?Expert Advisorが作業を終えるまで保存されないのでしょうか?それは全く必要なことなのでしょうか、それとも例の便宜上のことなのでしょうか?
一般的に、この質問はもっと広く定式化されるべきである:
CopyBuffer()の 前後で、どのようなチェック、条件、遅延を導入すれば、最高速度条件(ループ内)で7台(10台)の計器で、今(!)必要な400(0)の指標値を確実に得ることができますか?
なぜなら、return(0) = "ああ、今はうまくいかなかったけど、次はうまくいくかも... "だからです。
ちなみに、Copyの残りはその隣にある...。
PS.すでにオフトピックかもしれない。まあ、この質問は筆者に対してではなく、明確にしてくれる皆に対してなのだが...。
私の例では、条件は次のようになります。ハンドルが有効であれば、データのコピーに進みます。有効でなければ、インジケータの計算に 時間がかかるため、インジケータを再度作成し、この関数を終了します。コピーでも同じことが起こり、コピー中にインジケータが再計算される可能性があるため、CopyBuffer()は-1を返します。
はい、セルゲイ、わかりました。この記事や著者を悪く言うつもりはなかったんだ。記事は素晴らしい。これは不満ではなく、答えを見つけようとしたものだ。ただ、このテーマについて私が見つけた最も近い議論だ。あなたももっと正確に答えを知りたいでしょう?)
別スレッドにした方がいいのでは?
別スレッドにしたら?
https://www.mql5.com/ru/forum/1880。
ほら、トピックに入れて。セルゲイ、記事の範囲を超えてしまって申し訳ない。喜んで...)))
どなたか、資金管理の ための20の方法を教えてください!
この記事に関しては、アイデアはとても良い。しかし、あなたはOOPとプログラミング全般のコンセプトである「抽象性」を忘れている。あなたの関数の中には、インジケータ、現在のシンボル、現在の期間、インジケータのパラメータがハードコードされている。アイデアは良いが、完全には実装されていない。例えば、異なるタイムフレーム、異なるシンボルのインジケータの クロスをチェックしたいのですが、それが1つです。第二に、端末が一時的にサーバーとの接続を失い、処理中の3つのバーを見逃した場合、機能はどうなりますか?シグナルはありますが、入力は見逃されています。信号のサーチはCHARGEで行うべきである。その後、信号がすでに処理されているかどうかを確認する。自分でも驚くほど多くの交差点があるかもしれない。パラメータ(指標番号、シンボル、時間枠、検索開始、検索終了、指標行...)を関数に渡すだけで十分です。- また、エキスパートアドバイザーは、異なるシンボルや異なるタイムフレームのラインの交点など、人間にはアクセスできないものを見ることができます。これは、ここで紹介した機能よりもはるかに優れています。また、変数に名前をつけるという概念についても解決する必要があります。意味のない名前の変数が少なすぎますが、これは別のトピックです。これはプログラミングのスタイルと呼ばれるものだ。人それぞれのスタイルがある。でも、私がMT4で使おうとした概念に少しずつ近づいているようですね。
この記事に関しては、アイデアはとても良い。しかし、あなたはOOPとプログラミング全般のコンセプトである「抽象性」を忘れている。あなたの関数の中には、インジケータ、現在のシンボル、現在の期間、インジケータのパラメータがハードコードされている。アイデアは良いが、完全には実装されていない。例えば、異なるタイムフレーム、異なるシンボルのインジケータの クロスをチェックしたいのですが、それが1つです。第二に、端末が一時的にサーバーとの接続を失い、処理中の3つのバーを見逃した場合、機能はどうなりますか?シグナルはありますが、入力は見逃されています。信号のサーチはCHARGEで行うべきである。その後、信号がすでに処理されているかどうかを確認する。自分でも驚くほど多くの交差点があるかもしれない。パラメータ(指標番号、シンボル、時間枠、検索開始、検索終了、指標行...)を関数に渡すだけで十分です。- また、エキスパートアドバイザーは、異なるシンボルや異なるタイムフレームのラインの交点など、人間にはアクセスできないものを見ることができます。これは、ここで紹介した機能よりもはるかに優れています。また、変数に名前をつけるという概念についても解決する必要があります。意味のない名前の変数が少なすぎますが、これは別のトピックです。これはプログラミングのスタイルと呼ばれるものだ。人それぞれのスタイルがある。しかし、私がMT4で使おうとした概念に少しずつ近づいてきているのがわかります。