MT4 iMAOnArrayとiBandsOnArrayの要素数が計算に与える影響について - ページ 6 123456789 新しいコメント Alexey Viktorov 2016.05.03 09:41 #51 無駄に電卓やExcellを勧めたりはしていない。このクソみたいな仕組みが理解できるようになるんだ。ゼロ以外の要素数で計算できるのは、すでに用意された配列がある場合のみです。1000個の要素を持つ配列があり、最後の100個だけを平均化したいとします。この100個の要素をカスタム配列に変換して再計算するか、100から0までのループを使って、0ではなく100個の要素を配列に入れるか、2つの選択肢があります。しかしここで、指標では避けられない配列のサイズ変更という問題に直面します。繰り返しになりますが、計算のための要素数を制限する他の方法についてです。iMAOnArray() の条件を if(rates_total-i >= rates_total-100); と設定すれば、最後の100本のバーだけが再計算され、新しいバーが来たときにすべてがうまくいくでしょう。int i, limit; limit = prev_calculated == 0 ? rates_total-1 : rates_total-prev_calculated; for(i = limit; i >= 0; i--) { Buffer[i]=open[i]; if(rates_total-i >= rates_total-100) BufferMA[i] = NormalizeDouble(iMAOnArray(Buffer, 0, 5, 0, MODE_LWMA, i), _Digits); } return(rates_total); Sergey Efimenko 2016.05.03 11:49 #52 Alexey Viktorov:無駄に電卓やExcellを勧めたりはしていない。このクソみたいな仕組みが理解できるようになるんだ。ゼロ以外の要素数で計算できるのは、すでに用意された配列がある場合のみです。1000個の要素を持つ配列があり、最後の100個だけを平均化したいとします。この100個の要素をカスタム配列に変換して再計算するか、100から0へのループを使い、要素数を0に変換せず、100に変換するか、2つの選択肢があるのです。しかし、ここでは指標で避けられない配列のサイズ変更という問題に直面します。繰り返しになりますが、計算のための要素数を制限する他の方法についてです。さて、iMAOnArray() only if(rates_total-prev_calculated-i >= 100); を読むように条件を設定すると、最後の100本だけが再計算され、新しいバーが到着したときにすべてがうまくいくでしょう。 教えてください、あなたはプログラマーですか、それとも趣味で、あるいは必要に迫られてやっているのでしょうか?エクセルや紙がなくても仕組みはわかるし、バラバシカは先ほどのスクリーンショットですべての「難しさ」を実演してくれました。順を追って説明しましょう。1. iMAOnArray(iBandsOnArrayも同様)は、配列全体を読み込んで正しく処理する場合と、配列の一部を読み込んで、最終要素に対してシフトが指定されているにもかかわらず、初期要素に対してのみ処理する場合の2つのバージョンで動作します。つまり、私は計算を棒グラフに限定しようとしましたが、それでもすべての配列(つまり「制動」の初期バージョン)を計算する必要がありますし、バッファのコピーとこのバッファのすべての要素の再計算であなたのようなバリエーションを作る必要があります。2.配列のサイズ変更でインジケータであなたが説明した問題は、配列がインジケータバッファの1つでない場合にのみ発生し、つまり、あなたが説明した「踊りまくり」は、主要なソースコードに戻ると、問題は遅い計算と最初のステップにのみあったため、負の効果も持っています。3.100 (N) 本の棒グラフの配列の一部だけを再計算する方法は、一般的な生産性の低下と、配列のコピーや不要な再計算による実装の無駄な手間をもたらします。スクリーンショットと上記のコードでは、すべての計算が行われています(内部配列のどこかで行われていると思われ、それが主要な遅延の原因である可能性が高いです)。関数を計算するための配列サイズのパラメータに0を指定すると、すべてのデータを読み込むように明示的に指示されるため、そこが引っかかるのです。この関数は、新しいバーが来てもすべてのデータ(の一部)を再計算せず、読み込むだけなので、特に私は多くの製品でこのような平均化関数を持っており、使用しています。このフォーラムのトピックは、処理速度や結果を悪化させることなく、MT4の標準機能に「勝つ」ためにはどうしたらいいかというものでした。上のメッセージを信じると、配列上の「標準偏差」はブレーキなしで計算されますし、予備として自分で偏差計算を書くこともできます、特に計算式はここのドキュメントで誰でも見ることができます。 Alexey Viktorov 2016.05.03 12:09 #53 こんなにたくさんの文字が...。そしてそれは、提案された選択肢に反対することだけを目的としているのです。 アイデアありがとうございます。少なくとも私はその仕組みを理解しました。そうでなければ、これらの機能の複雑さに触れる必要がなかったので、手を出さなかったのです。それが嫌なら自作のものを使えばいい。 Sergey Efimenko 2016.05.03 12:26 #54 Alexey Viktorov:こんなにたくさんの文字が...。そして、すべては提案されたオプションへの反対だけを目的としています。 アイデアをありがとう。少なくとも私はその仕組みを理解しました。そうでなければ、これらの機能の複雑さに触れる必要がなかったからです。それが嫌なら自作のものを使えばいい。なぜ不一致で、あなたがそうすべきではない理由を説明するために、ストール関数やコピーの追加のサイクルを作成するコードに関連付けられたコードを記述するために - 常に正しいオプションではありませんが、時には、以下の時間がかかる:) また、「好き」「嫌い」の問題ではなく、機能が正確に動作しないという事実があります。なぜなら、実際には、アナログを作ることは車輪の再発明と同じですが、この特定のケースでは、それなしではやっていけないからです。何ページか前に自分で結論を出したのですが、あなたのやり方なら、もしかしたら、この状況はすでにここで解決されていること、この問題を解決するために私がすべきことは何か、こんなにたくさんの文字で誰かにわかってもらえるかもしれませんね :) Alexey Viktorov 2016.05.03 12:40 #55 後者のバリエーションでは、コピーや余分なサイクルはありません。それと、以前Dimitriさんと話していた、正しく再計算できないMODE_LWMAの計算方法について。コードとスクリーンショットをご覧ください。スクリーンショットでは、コードのようにMA期間5、MODE_LWMAメソッドとベースメントのiMAOnArray()とMAと指標の値の一致に、計算されたバーの数に注意を払う。すべてのバーを再計算する場合、または100本だけを再計算する場合。変化がない場合は、他の計算が遅いということです。 Dmitry Fedoseev 2016.05.03 14:22 #56 全くもって残念です。 Dmitry Fedoseev 2016.05.03 14:24 #57 Sergey Efimenko:教えてください、あなたはプログラマーですか、それとも趣味で、あるいは必要に迫られてやっているのですか......? 昔は、自分はプログラマーではなく、アマチュアだからいじめられると自分でブツブツ言い出したこともあった。 Sergey Efimenko 2016.05.03 14:26 #58 Alexey Viktorov:後者のバリエーションでは、コピーや余分なサイクルはありません。そして、以前Dimitriさんと話していたMODE_LWMAの計算方法は、正しく再計算できません。コードとスクリーンショットをご覧ください。スクリーンショットでは、コードのようにMA期間5、MODE_LWMAメソッドとベースメントでiMAOnArray()とMAと指標の値の一致に、計算されたバーの数に注意を払う。すべてのバーを再計算する場合、または100本だけを再計算する場合。変化がない場合は、他の計算が遅いということです。 後者のバリエーションは、基本的にオリジナルのものと同じです。配列サイズ0で先に書いたように、やはり全体としてカウントされます。フォーラムのスレッドを作成する前から、計算時間を短縮するための最初の解決策は、バーの数を制限することでしたが、残念ながら生産性には影響しませんでした。その後、iMAOnArrayの配列の長さを実験し始め、この時、状況の複雑さを理解しました。その時初めて、配列のインデックスを変えて 組み合わせを変えるなど、簡単なバリエーションをほぼ全て試した上で、このトピックを作成しました。その後、他の人も試してみて、みんな自分なりの機能を思いついたという確認もあり、いくつか答えが返ってきました。だから、最初はうまくいくとわかっていながら、あなたのコードを要求したんです :)悪気はないのですが :)このスレッドを読んで、この「熊手」を乗り越えるユーザーも出てくるかもしれませんね。:) Sergey Efimenko 2016.05.03 14:30 #59 Dmitry Fedoseev: 以前は、彼自身が「自分はプログラマーではなくアマチュアだから、いじめられても仕方がない」としゃべり始めたこともある。どちらかというと、修辞的な質問でしたね :)PS 皆さん、お互いに寛容でありましょう。結局のところ、私たちの目的は一つで、市場から "ぼったくる "ことなのです。:)だから、気を散らさずにその目標に向かって進んでいこう。私達のそれぞれは、独自の難しさ、および機能の認識を持っていますが、唯一の紛争で生まれた真実、ナポレオンが言うように使用: "あなたが間違っていることを知って、主張する - 愚かな、あなたが正しいことを知って、主張することが意味します。だから、私は決して反論しない。" Alexey Viktorov 2016.05.03 15:30 #60 Sergey Efimenko: 後者の選択肢は、基本的にオリジナルと変わりません。すでに書いたように、配列のサイズが0になっても、そのままカウントされます。フォーラムのスレッドを作成する前から、私の最初の解決策はバーの数を制限することでしたが、残念ながら生産性には影響しませんでした。その後、iMAOnArrayの配列の長さを実験し始め、その時に状況の複雑さを知りました。その時初めて、配列のインデックスを変えて 組み合わせを変えるなど、簡単なバリエーションをほぼ全て試した上で、このトピックを作成しました。他の人も試してみて、みんな自分なりの機能を作っていることを確認した回答もありました。だから、最初はうまくいくとわかっていながら、あなたのコードを要求したんです :)悪気はないのですが :)このスレッドを読んで、この「熊手」を乗り越えるユーザーも出てくるかもしれませんね。:)if(rates_total-i >= rates_total-100); の後、計算するバーが残り100本となったときに、iMAOnArray() 関数はまず配列全体を再計算するということでしょうか? 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
無駄に電卓やExcellを勧めたりはしていない。このクソみたいな仕組みが理解できるようになるんだ。ゼロ以外の要素数で計算できるのは、すでに用意された配列がある場合のみです。1000個の要素を持つ配列があり、最後の100個だけを平均化したいとします。この100個の要素をカスタム配列に変換して再計算するか、100から0までのループを使って、0ではなく100個の要素を配列に入れるか、2つの選択肢があります。
しかしここで、指標では避けられない配列のサイズ変更という問題に直面します。
繰り返しになりますが、計算のための要素数を制限する他の方法についてです。iMAOnArray() の条件を if(rates_total-i >= rates_total-100); と設定すれば、最後の100本のバーだけが再計算され、新しいバーが来たときにすべてがうまくいくでしょう。
無駄に電卓やExcellを勧めたりはしていない。このクソみたいな仕組みが理解できるようになるんだ。ゼロ以外の要素数で計算できるのは、すでに用意された配列がある場合のみです。1000個の要素を持つ配列があり、最後の100個だけを平均化したいとします。この100個の要素をカスタム配列に変換して再計算するか、100から0へのループを使い、要素数を0に変換せず、100に変換するか、2つの選択肢があるのです。
しかし、ここでは指標で避けられない配列のサイズ変更という問題に直面します。
繰り返しになりますが、計算のための要素数を制限する他の方法についてです。さて、iMAOnArray() only if(rates_total-prev_calculated-i >= 100); を読むように条件を設定すると、最後の100本だけが再計算され、新しいバーが到着したときにすべてがうまくいくでしょう。
教えてください、あなたはプログラマーですか、それとも趣味で、あるいは必要に迫られてやっているのでしょうか?エクセルや紙がなくても仕組みはわかるし、バラバシカは先ほどのスクリーンショットですべての「難しさ」を実演してくれました。順を追って説明しましょう。
1. iMAOnArray(iBandsOnArrayも同様)は、配列全体を読み込んで正しく処理する場合と、配列の一部を読み込んで、最終要素に対してシフトが指定されているにもかかわらず、初期要素に対してのみ処理する場合の2つのバージョンで動作します。つまり、私は計算を棒グラフに限定しようとしましたが、それでもすべての配列(つまり「制動」の初期バージョン)を計算する必要がありますし、バッファのコピーとこのバッファのすべての要素の再計算であなたのようなバリエーションを作る必要があります。
2.配列のサイズ変更でインジケータであなたが説明した問題は、配列がインジケータバッファの1つでない場合にのみ発生し、つまり、あなたが説明した「踊りまくり」は、主要なソースコードに戻ると、問題は遅い計算と最初のステップにのみあったため、負の効果も持っています。
3.100 (N) 本の棒グラフの配列の一部だけを再計算する方法は、一般的な生産性の低下と、配列のコピーや不要な再計算による実装の無駄な手間をもたらします。スクリーンショットと上記のコードでは、すべての計算が行われています(内部配列のどこかで行われていると思われ、それが主要な遅延の原因である可能性が高いです)。関数を計算するための配列サイズのパラメータに0を指定すると、すべてのデータを読み込むように明示的に指示されるため、そこが引っかかるのです。
この関数は、新しいバーが来てもすべてのデータ(の一部)を再計算せず、読み込むだけなので、特に私は多くの製品でこのような平均化関数を持っており、使用しています。このフォーラムのトピックは、処理速度や結果を悪化させることなく、MT4の標準機能に「勝つ」ためにはどうしたらいいかというものでした。上のメッセージを信じると、配列上の「標準偏差」はブレーキなしで計算されますし、予備として自分で偏差計算を書くこともできます、特に計算式はここのドキュメントで誰でも見ることができます。
こんなにたくさんの文字が...。そしてそれは、提案された選択肢に反対することだけを目的としているのです。
アイデアありがとうございます。少なくとも私はその仕組みを理解しました。そうでなければ、これらの機能の複雑さに触れる必要がなかったので、手を出さなかったのです。
それが嫌なら自作のものを使えばいい。
こんなにたくさんの文字が...。そして、すべては提案されたオプションへの反対だけを目的としています。
アイデアをありがとう。少なくとも私はその仕組みを理解しました。そうでなければ、これらの機能の複雑さに触れる必要がなかったからです。
それが嫌なら自作のものを使えばいい。
なぜ不一致で、あなたがそうすべきではない理由を説明するために、ストール関数やコピーの追加のサイクルを作成するコードに関連付けられたコードを記述するために - 常に正しいオプションではありませんが、時には、以下の時間がかかる:)
また、「好き」「嫌い」の問題ではなく、機能が正確に動作しないという事実があります。なぜなら、実際には、アナログを作ることは車輪の再発明と同じですが、この特定のケースでは、それなしではやっていけないからです。
何ページか前に自分で結論を出したのですが、あなたのやり方なら、もしかしたら、この状況はすでにここで解決されていること、この問題を解決するために私がすべきことは何か、こんなにたくさんの文字で誰かにわかってもらえるかもしれませんね :)
後者のバリエーションでは、コピーや余分なサイクルはありません。それと、以前Dimitriさんと話していた、正しく再計算できないMODE_LWMAの計算方法について。
コードとスクリーンショットをご覧ください。スクリーンショットでは、コードのようにMA期間5、MODE_LWMAメソッドとベースメントのiMAOnArray()とMAと指標の値の一致に、計算されたバーの数に注意を払う。すべてのバーを再計算する場合、または100本だけを再計算する場合。変化がない場合は、他の計算が遅いということです。
教えてください、あなたはプログラマーですか、それとも趣味で、あるいは必要に迫られてやっているのですか......?
後者のバリエーションでは、コピーや余分なサイクルはありません。そして、以前Dimitriさんと話していたMODE_LWMAの計算方法は、正しく再計算できません。
コードとスクリーンショットをご覧ください。スクリーンショットでは、コードのようにMA期間5、MODE_LWMAメソッドとベースメントでiMAOnArray()とMAと指標の値の一致に、計算されたバーの数に注意を払う。すべてのバーを再計算する場合、または100本だけを再計算する場合。変化がない場合は、他の計算が遅いということです。
以前は、彼自身が「自分はプログラマーではなくアマチュアだから、いじめられても仕方がない」としゃべり始めたこともある。
どちらかというと、修辞的な質問でしたね :)
PS 皆さん、お互いに寛容でありましょう。結局のところ、私たちの目的は一つで、市場から "ぼったくる "ことなのです。:)だから、気を散らさずにその目標に向かって進んでいこう。私達のそれぞれは、独自の難しさ、および機能の認識を持っていますが、唯一の紛争で生まれた真実、ナポレオンが言うように使用: "あなたが間違っていることを知って、主張する - 愚かな、あなたが正しいことを知って、主張することが意味します。だから、私は決して反論しない。"
後者の選択肢は、基本的にオリジナルと変わりません。すでに書いたように、配列のサイズが0になっても、そのままカウントされます。フォーラムのスレッドを作成する前から、私の最初の解決策はバーの数を制限することでしたが、残念ながら生産性には影響しませんでした。その後、iMAOnArrayの配列の長さを実験し始め、その時に状況の複雑さを知りました。その時初めて、配列のインデックスを変えて 組み合わせを変えるなど、簡単なバリエーションをほぼ全て試した上で、このトピックを作成しました。他の人も試してみて、みんな自分なりの機能を作っていることを確認した回答もありました。だから、最初はうまくいくとわかっていながら、あなたのコードを要求したんです :)悪気はないのですが :)このスレッドを読んで、この「熊手」を乗り越えるユーザーも出てくるかもしれませんね。:)
if(rates_total-i >= rates_total-100); の後、計算するバーが残り100本となったときに、iMAOnArray() 関数はまず配列全体を再計算するということでしょうか?