CL 022:29:43.402 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::AddNewMA: MA(10) indicator (handle 10) added to the collection
OS 022:29:43.402 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::AddNewMA: MA(EURUSD,H1:10) indicator (handle 11) added to the collection
DQ 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
QL 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
IO 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
PQ 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
LN 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
KE 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
JH 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
RK 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
OD 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
CR 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
GE 022:30:04.495 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::OnTimer::MA(EURUSD,H1:10): Tick emulation. Attempt 1 of 3 ...
II 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
LD 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
DH 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
NH 022:30:34.093 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
RG 022:30:34.093 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
JM 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
KP 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
CD 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
FL 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
RK 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
OM 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for a new tick and when the indicator will be calculated...
PI 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Calculation not completed
ND 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
PN 222:30:39.604 TestMSTFMovingAverages (EURUSD,M15) array out of range in'TestMSTFMovingAverages.mq5' (211,34)
...При работе с данными не текущего графика для исключения "освобождения" таймсерии, необходимо не реже. чем раз в две минуты обращаться к этой таймсерии. В этом случае будет происходить "удержание" таймсерии, что ускорит к ней обращение (не нужно будет каждый раз дожидаться синхронизации данных)...
小さなストレステストを実施した。インターネットをオフにして、チャート上のパネルでインジケータを起動した。上記のパラメータはすでに提供しました。その後、インターネットをオンにしたところ、以下の結果が得られました:
インジケータがクラッシュした。
また、奇妙なことにも気づいた。USDCHFのM15チャート。
USDCHFのチャートというか、MA(USDCHF, H1)インディケータの赤い曲線を見ると、過去7時間、00分に次の値への移行が5回発生しています。私はそれを赤い縦線で強調しました。そして、最後の2時間だけはすべてが正常です。青い縦線。バッファ・フィルによる明らかなエラーである。
小さなストレステストを実施した。インターネットをオフにして、チャート上のパネルでインジケータを起動した。上記のパラメータはすでに提供しました。その後、インターネットをオンにしたところ、次のような結果が得られました:
インジケータがクラッシュしました。
私も奇妙なことに気づきました。USDCHFのM15チャート。
USDCHFのチャートというか、MA(USDCHF, H1)インディケータの赤い曲線を見ると、過去7時間、00分に次の値への移行が5回発生しています。私はそれを赤い縦線で強調しました。そして、最後の2時間だけはすべてが正常です。青い縦線。バッファ・フィルによる明らかなエラーである。
小さなストレステストを実施した。インターネットをオフにして、チャート上のパネルでインジケータを起動した。上記のパラメータはすでに提供しました。その後、インターネットをオンにしたところ、次のような結果が得られました:
インジケータがクラッシュしました。
211行目のカーソル位置34で、定義済みの配列time[] にアクセスしています:
DrawData(mouse_bar_index,time[mouse_bar_index]);配列に渡されたインデックスが正しくない ことが判明しました。
iBarShift()関数がOnChartEventハンドラで値を受け取り、-1を返すことがあるからです:
DrawData()では、無効なインデックス値はCopyRates()を呼び出すことで処理され、インデックスが負の場合、データは取得されず、DrawData()を終了します:
したがって、time[]配列にアクセスする前に、配列に渡されたバー・インデックスをチェックする必要があります(211行目):
一般論として。テーマの続き(マルチ・インディケーターのカラー・バッファなど)の開発で忙しいので、テストしていません。このトピックに関する次の記事が出版された後、私はそれをチェックし、テストします(p.211の変更で私より先にテストしなければ)。
211行目では、定義済みの配列time[] がカーソル位置34でアクセスされる:
配列のインデックスが正しく渡されていない ようです。
iBarShift()関数によってOnChartEventハンドラで値を受け取る ため、-1を返す可能性があるからです:
DrawData()では、無効なインデックス値はCopyRates()を呼び出すことで処理され、インデックスが負の場合、データは取得されず、DrawData()を終了します:
したがって、time[] 配列にアクセスする前に、配列に渡されたバー・インデックスをチェックする必要があります(211 行目):
一般論として。私はこのトピックの続き(マルチ・インディケータのカラー・バッファなど)を開発するのに忙しいので、まだテストしていません。このトピックに関する次の記事が出版された後、私はそれをチェックし、テストします(p.211の変更で私より先にテストしなければ)。
iBarShift()は0を返しますが、CopyRates()に1より小さい値を入れることはできません。小節番号と小節数は等しくないので、どのような変形でもiBarShift()+1と 書くべきでしょう。
iBarShift()は0を返しますが、CopyRates()に1より小さい値を入れることはできません。したがって、バー番号とバーの数は等しくないので、どのような変形でもiBarShift()+1と 書くべきでしょう。
この文脈では: インデックスは小節番号である。
この文脈では、インデックスは小節番号である。
アーテム、インデックスはゼロでもいいんだ。しかし、コピーされた要素の数
ゼロにすることはできない。
アイテム数やアイテムリストのインデックスと同じようにね。
アーテム、インデックスは......そう、ゼロでもいいんだ。しかし、コピーされた要素の数は
をゼロにすることはできない。
アイテム数やアイテムリストのインデックスと同じように...。
ここで
インデックスはどこを指すのか?
ここだよ:
インデックスはどこを指しているのか?
以上、黙ります。DrawData(mouse_bar_index,time)関数のコードを見ていなかった。
取引、自動取引システム、取引戦略のテストに関するフォーラム
マルチシンボル多期間インジケータの準備 "の記事についての議論
アルチョム・トリシキン, 2023.11.01 04:46 AM
...このトピックに関する次の記事を公開した後、私はチェックし、テストします(あなたが p.211の変更で先に私をテストしない 場合)。
何かをテスト するには、何が起こっているかのパラダイムにいる必要があります)。
私は、現在のアプローチに近くないので、私自身のバージョンをスケッチする方が簡単だと気づきました。特に、CIndMSTFクラスはある種のスーパークラスであるように思える。そして、それをベースにたくさんのインジケーター・クラスが 作られる。IndMSTF.mqhファイルは4,000行のコードです)。私はCIndicators クラスのインスタンスをインジケーター・コレクションとして使う方法をとった。これはとても便利だ。自転車を発明する必要はない。
では、なぜCIndMSTFクラスがバッファ(SBuffer m_buffers[])にデータを保存しなければならないのか?OnCalculate()で一度計算すれば十分だ。つまり、参照によってパラメータとして受け入れられ、計算され、与えられる...。
自分のバージョンが完成したら、反対意見については後で詳しく書きますが...。
そうだね、こういうメカニズムがあるのはいいね:
...При работе с данными не текущего графика для исключения "освобождения" таймсерии, необходимо не реже. чем раз в две минуты обращаться к этой таймсерии. В этом случае будет происходить "удержание" таймсерии, что ускорит к ней обращение (не нужно будет каждый раз дожидаться синхронизации данных)...
アルテム、もうひとつ。もし記事がマニュアルとして書かれていて、それを勉強したいという願望があるのなら、開発者が作成するクラスの関係のスキームが十分でないと思います。
それなら、なぜすべてのインジケータのコードを記事の素材にするのでしょうか?マルチシンボル・マルチ・ペリオド・インディケータのベース・クラスの全継承クラスの完全なリスト」 です。 何行のコードがあるのか見てみました。
これが始まりです:
そしてこれが最後だ:
ほぼ2,000行だ!