汎用クラスライブラリ - バグ、説明、質問、使用上の特徴、提案 - ページ 28 1...212223242526272829303132333435...38 新しいコメント Artyom Trishkin 2019.08.16 04:16 #271 Alexey Volchanskiy: また何やってんだ?LinkedListの投稿を完全に削除している。ヨーロッパのどこかで匿名のモデレーターが、憎きロシア人の書き込みを削除して、悪戯に笑っている姿が目に浮かぶようです。書きたくなくなるような、そんなゴミです。 風車と戦うのはやめてください - このスレッドから削除された投稿はありません。 Alexey Volchanskiy 2019.08.16 04:30 #272 Artyom Trishkin:風車と戦うのはやめてください - このスレッドから削除された投稿はありません。 アルテム、私は酔っているわけでも、飲酒運転をしているわけでもない。MQLではLinkedListはリングバッファとして 実装されており、記載されている動作はごく普通のものであることを30分前に短く回答しました。そして、私のフィルターには、配列を使ってリングバッファを実装しています。その後、.NETのソースにアクセスして実装を見たのですが、30分後には私のメッセージは削除されていました。初めてやったんですよ。 ロシアのモデレーターについて、私はちょうど考えていません。 ここでは、FIRを使ったフィルタクラス、ウォッチダブルFilterTick(double tick)関数を紹介します。リングバッファは、入力刻みと出力フィルタリングされた値の2つがあります。リンクリストとの違いは、可能性は低くなりますが、一桁速くなることで、これは私にとって重要なことです。 #ifndef Filter #define Filter //+------------------------------------------------------------------+ //| Filter.mqh | //| Alexey Volchanskiy | //| https://mql4.wordpress.com/ | //+------------------------------------------------------------------+ #property copyright "Alexey Volchanskiy" #property link "https://mql4.wordpress.com/" #property version "1.04" #property strict #include <Object.mqh> #include <AvLib-4-5\coeff.mqh> #include <AvLib-4-5\Errors.mqh> /* Формат массива или файла коэффициентов фильтра double coeff[] = {FiltersCount, FilterAddr, FilterLen, FilterAddr, FilterLen..., coeff1, coeff2, coeff3...}; */ enum EErrors {EOk, ENumFilterOutOfRange}; class CFilter : CObject { #define TICK_BUF_SIZE 0x1000 // 4096 #define TICK_BUF_MAX_IDX (TICK_BUF_SIZE - 1) // 0xFFF #define OUT_BUF_SIZE 0x10000 // 65536 #define OUT_BUF_MAX_IDX (OUT_BUF_SIZE - 1) // 0xFFFF private: double TickBuf[TICK_BUF_SIZE]; // промежуточный кольцевой буфер для хранения тиков double OutBuf[OUT_BUF_SIZE]; // выходной кольцевой буфер double Coeff[]; // массив коэффициентов int TickBufIdx; // индекс для нового входящего тика в TickBuf int OutBufIdx; // индекс для выходного буфера public: enum Errors {OK, NUM_FILTER_OUT_OF_RANGE }; public: CFilter() {} ~CFilter() { ArrayFree(Coeff); } double GetOutBuf(const int idx) { int tmp = OutBufIdx-idx-1; double out = tmp >= 0 ? OutBuf[tmp] : OutBuf[OUT_BUF_SIZE+(tmp)]; return out; } void Init() { TickBufIdx = TICK_BUF_MAX_IDX; OutBufIdx = 0; for(int n = 0; n < TICK_BUF_SIZE; n++) TickBuf[n] = 0; for(int n = 0; n < OUT_BUF_SIZE; n++) OutBuf[n] = 0; } EErrors LoadCoeffFromArray(int numFilter, double &coeffArray[]) { if(numFilter >= coeffArray[0]) // количество фильтров в массиве return ENumFilterOutOfRange; uint addr = (uint)coeffArray[1 + numFilter * 2]; uint len = (uint)coeffArray[2 + numFilter * 2]; ArrayResize(Coeff, len); for(uint n = 0; n < len; n++) Coeff[n] = coeffArray[addr++]; Init(); return EOk; } void LoadCoeffFromArray(double &coeffArray[]) { int len = ArraySize(coeffArray); ArrayResize(Coeff, len); for(int n = 0; n < len; n++) Coeff[n] = coeffArray[n]; Init(); } bool LoadCoeffFromFile(int numFilter, string fileName) { // не реализовано return true; } // фильтрация одного тика double FilterTick(double tick) { TickBuf[TickBufIdx] = tick; if (TickBufIdx == 0) TickBufIdx = TICK_BUF_MAX_IDX; else TickBufIdx--; int asize = ArraySize(Coeff); // вынести из функции!!! double acc = 0; int tbIdx = TickBufIdx; // делаем фильтрацию в цикле for for (int n = 0; n < asize; n++) { tbIdx++; /* вместо if(tbIdx > TICK_BUF_MAX_IDX) tbIdx = 0; */ tbIdx &= TICK_BUF_MAX_IDX; // небольшая оптимизация вместо if acc += TickBuf[tbIdx] * Coeff[n]; } OutBuf[OutBufIdx] = acc; OutBufIdx++; OutBufIdx &= OUT_BUF_MAX_IDX; return acc; } // фильтрация массива void FilterTickSeries(double &ticks[], int count) { for(int n = 0; n < count; n++) ticks[n] = FilterTick(ticks[n]); } }; #endif Artyom Trishkin 2019.08.16 05:07 #273 Alexey Volchanskiy: アーテム、私は酔っていないし、薬もやっていない。30分前にMQL LinkedListはリングバッファとして実装されており、記載されている動作はごく普通のものであるという短い返事を書きました。そして、私のフィルターには、配列を使ってリングバッファを実装しています。その後、.NETのソースにアクセスして実装を見たのですが、30分後には私のメッセージは削除されていました。初めてやったんですよ。 ロシアのモデレーターについて、私はちょうど考えていません。 ここでは、FIRを使ったフィルタクラス、ウォッチダブルFilterTick(double tick)関数を紹介します。リングバッファは、入力刻みと出力フィルタリングされた値の2つがあります。リンクリストとの違いは可能性が少ないことですが、私にとっては重要なことで、より高速になりました。 削除された投稿を調べても、このスレッドからは何も出てこないので、わからない。シャイターン ... 私も、「リンクリスト」は論理的に考えて、「リンクリスト」だと思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「最後のノードのNextは0であり、最初のノードのPreviousと 同じ」であるが、リンクリストにはそれがあり、リングバッファのように動作する。私にとっては便利なものです。 Alexey Volchanskiy 2019.08.16 06:14 #274 Artyom Trishkin: わからない -削除された投稿に目を 通したが、このスレッドからは何もなかった。シャイターン... また、「リンクド・リスト」はリンクド・リストであることが論理的であるように思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「最後のノードの次は0に等しく、最初のノードの前も 同じ」であるのに対し、リンクリストはリングバッファのように動作する。私にとっては便利なものです。 ああ、その可能性もありますね、知りませんでした。まあ、気が散って、メッセージを送らずに、そのページからそのままどこかに行ってしまったのだろうと推測できます。しかし、そのような苦情は定期的に発生しています。よし、もうこの話はやめよう。 Vladimir Karputov 2019.08.16 06:31 #275 Alexey Volchanskiy: ああ、その可能性があるんですね、知りませんでした。まあ、気が散って、メッセージを送らずにそのページから直行したのだろうと推測 できる。しかし、そのような苦情は定期的に発生しています。よし、もうこの話はやめよう。 ここに、ここに、もっと気を配って、すべてのボタンをきちんと押す必要があります。 Alexey Navoykov 2019.08.16 06:35 #276 Artyom Trishkin: また、「リンクド・リスト」はリンクド・リストであることが論理的であるように思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「次の最後のノードは0、前の最初のノード も0」ですが、リンクリストにはリングバッファがあり、そのように動作しています。私にとっては便利なものです。 リンクリストは、次の項目と前の 項目へのポインタを格納するリストです。"指輪 "は関係ない。とにかく、これは新しいことなんです。どこで見られたのでしょうか? Alexey Volchanskiy: FIRを使ったフィルタクラスはこちら、watch double FilterTick(double tick)関数です。リングバッファは2つだけで、入力の刻みと出力のフィルタリングされた値です。リンクリストとの違いは可能性が少ないことですが、私にとっては重要なことで、より高速になりました。 フィルタクラスとは関係ありません...具体的にはリンクリストの話をしています。一定の特性を持った標準的な容器である。リストの反復は一方向である。鳴るはずがない。 C#(同一のLinkedListクラス)やC++(std::listクラス)では鳴らない。 それに、このライブラリは.Netから移植されたもので、C#との互換性を意味している。そうでなければ、なぜまた自作自転車が必要なのか? 粗悪なMQ自転車はもうたくさんではないか? 必要だったのは、既製のライブラリ(言語固有の制約があっても、少なくとも仕事の論理を維持する)を移植するだけだった。 しかし、そうではなかった...。ここでもいたずらっ子が邪魔をした ) おそらく、これらのクラスを移植した人は、コードを単純化して、自分の生活を簡素化することにしました。 2つのm_firstとm_lastポインタの代わりに、1つのm_headポインタを作成しました...。 もちろん、すべて元通りに直したのですが、それにしても......。 Alexey Volchanskiy 2019.08.16 06:54 #277 Alexey Navoykov:リンクリストは、次の項目と前の 項目へのポインタを格納するリストです。"指輪 "は関係ない。とにかく、これは新しいことなんです。どこで見られたのでしょうか?フィルタクラスとは関係ありません...具体的にはリンクリストの話をしています。一定の特性を持った標準的な容器である。リストの反復は一方向である。鳴るはずがない。 C#(同一のLinkedListクラス)やC++(std::listクラス)では鳴らない。それに、このライブラリは.Netから移植されたもので、C#との互換性を意味している。そうでなければ、なぜまた自作自転車が必要なのか? 粗悪なMQ自転車はもうたくさんではないか? 必要だったのは、既製のライブラリ(言語固有の制約があっても、少なくとも仕事の論理を維持する)を移植するだけだった。 しかし、そうではなかった......。ここでもいたずらっ子が邪魔をした )おそらく、これらのクラスを移植した人は、コードを単純化して、自分の生活を簡素化することにしました。 2つのm_firstとm_lastポインタの代わりに、1つのm_headポインタを作成しました...。もちろん、ちゃんと直した のですが...。 MSDNではリングバッファと 呼んでいますが、私はこの名前を発明したわけではありません。 Includeフォルダに固定しないと、MT5の新しいビルドにアップグレードしたときに消去されてしまうのが主な原因です。 Alexey Volchanskiy 2019.08.16 06:57 #278 Vladimir Karputov: あそこ、あそこ、もっと慎重に、すべてのボタンを慎重に押さなければならない。 その確率は限りなくゼロに近い。でも、英語スレの俺の枝が匿名で殺されたのは事実なんだよな。*** Vladimir Karputov 2019.08.16 06:59 #279 Alexey Volchanskiy: その可能性は非常に低い。でも、英語スレの俺の枝が匿名で殺されたのは事実なんだよな。*** その枝の話はもういい。今度持ち出したら、樺太のほうきをやるぞ。もう、うんざりです。 Alexey Navoykov 2019.08.16 07:10 #280 Alexey Volchanskiy: 最も重要なことは、Includeフォルダで編集しないことです。さもないと、MT5の新しいビルドにアップグレードしたときに上書きされます。 実際、メソッドのconstに始まり(開発者は必要ないと考えていた)、値だけでなく参照による引数の再設計まで、多くの変更をそこで行う必要がありました。 1...212223242526272829303132333435...38 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また何やってんだ?LinkedListの投稿を完全に削除している。ヨーロッパのどこかで匿名のモデレーターが、憎きロシア人の書き込みを削除して、悪戯に笑っている姿が目に浮かぶようです。書きたくなくなるような、そんなゴミです。
風車と戦うのはやめてください - このスレッドから削除された投稿はありません。
風車と戦うのはやめてください - このスレッドから削除された投稿はありません。
アルテム、私は酔っているわけでも、飲酒運転をしているわけでもない。MQLではLinkedListはリングバッファとして 実装されており、記載されている動作はごく普通のものであることを30分前に短く回答しました。そして、私のフィルターには、配列を使ってリングバッファを実装しています。その後、.NETのソースにアクセスして実装を見たのですが、30分後には私のメッセージは削除されていました。初めてやったんですよ。
ロシアのモデレーターについて、私はちょうど考えていません。
ここでは、FIRを使ったフィルタクラス、ウォッチダブルFilterTick(double tick)関数を紹介します。リングバッファは、入力刻みと出力フィルタリングされた値の2つがあります。リンクリストとの違いは、可能性は低くなりますが、一桁速くなることで、これは私にとって重要なことです。
アーテム、私は酔っていないし、薬もやっていない。30分前にMQL LinkedListはリングバッファとして実装されており、記載されている動作はごく普通のものであるという短い返事を書きました。そして、私のフィルターには、配列を使ってリングバッファを実装しています。その後、.NETのソースにアクセスして実装を見たのですが、30分後には私のメッセージは削除されていました。初めてやったんですよ。
ロシアのモデレーターについて、私はちょうど考えていません。
ここでは、FIRを使ったフィルタクラス、ウォッチダブルFilterTick(double tick)関数を紹介します。リングバッファは、入力刻みと出力フィルタリングされた値の2つがあります。リンクリストとの違いは可能性が少ないことですが、私にとっては重要なことで、より高速になりました。
削除された投稿を調べても、このスレッドからは何も出てこないので、わからない。シャイターン ...
私も、「リンクリスト」は論理的に考えて、「リンクリスト」だと思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「最後のノードのNextは0であり、最初のノードのPreviousと 同じ」であるが、リンクリストにはそれがあり、リングバッファのように動作する。私にとっては便利なものです。
わからない -削除された投稿に目を 通したが、このスレッドからは何もなかった。シャイターン...
また、「リンクド・リスト」はリンクド・リストであることが論理的であるように思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「最後のノードの次は0に等しく、最初のノードの前も 同じ」であるのに対し、リンクリストはリングバッファのように動作する。私にとっては便利なものです。
ああ、その可能性もありますね、知りませんでした。まあ、気が散って、メッセージを送らずに、そのページからそのままどこかに行ってしまったのだろうと推測できます。しかし、そのような苦情は定期的に発生しています。よし、もうこの話はやめよう。
ああ、その可能性があるんですね、知りませんでした。まあ、気が散って、メッセージを送らずにそのページから直行したのだろうと推測 できる。しかし、そのような苦情は定期的に発生しています。よし、もうこの話はやめよう。
ここに、ここに、もっと気を配って、すべてのボタンをきちんと押す必要があります。
また、「リンクド・リスト」はリンクド・リストであることが論理的であるように思います。単純なリストにはループがなく、Alexey Navoikovが言ったように「次の最後のノードは0、前の最初のノード も0」ですが、リンクリストにはリングバッファがあり、そのように動作しています。私にとっては便利なものです。
リンクリストは、次の項目と前の 項目へのポインタを格納するリストです。"指輪 "は関係ない。とにかく、これは新しいことなんです。どこで見られたのでしょうか?
Alexey Volchanskiy:
FIRを使ったフィルタクラスはこちら、watch double FilterTick(double tick)関数です。リングバッファは2つだけで、入力の刻みと出力のフィルタリングされた値です。リンクリストとの違いは可能性が少ないことですが、私にとっては重要なことで、より高速になりました。
フィルタクラスとは関係ありません...具体的にはリンクリストの話をしています。一定の特性を持った標準的な容器である。リストの反復は一方向である。鳴るはずがない。 C#(同一のLinkedListクラス)やC++(std::listクラス)では鳴らない。
それに、このライブラリは.Netから移植されたもので、C#との互換性を意味している。そうでなければ、なぜまた自作自転車が必要なのか? 粗悪なMQ自転車はもうたくさんではないか? 必要だったのは、既製のライブラリ(言語固有の制約があっても、少なくとも仕事の論理を維持する)を移植するだけだった。 しかし、そうではなかった...。ここでもいたずらっ子が邪魔をした )
おそらく、これらのクラスを移植した人は、コードを単純化して、自分の生活を簡素化することにしました。 2つのm_firstとm_lastポインタの代わりに、1つのm_headポインタを作成しました...。
もちろん、すべて元通りに直したのですが、それにしても......。
リンクリストは、次の項目と前の 項目へのポインタを格納するリストです。"指輪 "は関係ない。とにかく、これは新しいことなんです。どこで見られたのでしょうか?
フィルタクラスとは関係ありません...具体的にはリンクリストの話をしています。一定の特性を持った標準的な容器である。リストの反復は一方向である。鳴るはずがない。 C#(同一のLinkedListクラス)やC++(std::listクラス)では鳴らない。
それに、このライブラリは.Netから移植されたもので、C#との互換性を意味している。そうでなければ、なぜまた自作自転車が必要なのか? 粗悪なMQ自転車はもうたくさんではないか? 必要だったのは、既製のライブラリ(言語固有の制約があっても、少なくとも仕事の論理を維持する)を移植するだけだった。 しかし、そうではなかった......。ここでもいたずらっ子が邪魔をした )
おそらく、これらのクラスを移植した人は、コードを単純化して、自分の生活を簡素化することにしました。 2つのm_firstとm_lastポインタの代わりに、1つのm_headポインタを作成しました...。
もちろん、ちゃんと直した のですが...。
MSDNではリングバッファと 呼んでいますが、私はこの名前を発明したわけではありません。
Includeフォルダに固定しないと、MT5の新しいビルドにアップグレードしたときに消去されてしまうのが主な原因です。
あそこ、あそこ、もっと慎重に、すべてのボタンを慎重に押さなければならない。
その確率は限りなくゼロに近い。でも、英語スレの俺の枝が匿名で殺されたのは事実なんだよな。***
その可能性は非常に低い。でも、英語スレの俺の枝が匿名で殺されたのは事実なんだよな。***
その枝の話はもういい。今度持ち出したら、樺太のほうきをやるぞ。もう、うんざりです。
最も重要なことは、Includeフォルダで編集しないことです。さもないと、MT5の新しいビルドにアップグレードしたときに上書きされます。
実際、メソッドのconstに始まり(開発者は必要ないと考えていた)、値だけでなく参照による引数の再設計まで、多くの変更をそこで行う必要がありました。