MT4 iMAOnArrayとiBandsOnArrayの要素数が計算に与える影響について - ページ 7

 
Alexey Viktorov:

if(rates_total-i >= rates_total-100); の後、計算するバーが残り100本となったときに、iMAOnArray()関数がまずALL配列を再計算するということでしょうか?

いいえ、半分だけです。
 
Alexey Viktorov:

if(rates_total-i >= rates_total-100); の後、計算するバーが残り100本となったときに、iMAOnArray() 関数はまず配列全体を再計算するということでしょうか?

iMAOnArray

配列に格納されたデータから計算された移動平均の値を返します

doubleiMAOnArray()
doublearray[],// 配列
inttotal,// 要素の数
intma_period,//期間
intma_shift,// 平均のシフト
intma_method,// 平均化手法
int shift//シフト
);

パラメータ

array[]

[in] データを格納した配列。

ぜんすう

[in]計算する要素 数。0は配列の全要素を意味します。

その通り、iMAOnArray の最初の呼び出しで size の値を 0 にすると、確かに配列全体が計算され、その後、最後の値かせいぜい最後の 2 つの値だけが計算されるようですが、誰が考えても、すべてを再計算する可能性があります...。だから、減速しているのです。そのため、オフセットで取得したいバーの数は関係なく、とにかく配列全体をカウントしています。

 
Sergey Efimenko:

iMAOnArray

配列に格納されたデータから計算された移動平均の値を返します

doubleiMAOnArray()
doublearray[],// 配列
inttotal,// 要素の数
intma_period,//期間
intma_shift,// 平均のシフト
intma_method,// 平均化手法
int shift//シフト
);

パラメータ

array[]

[in] データを格納した配列。

ぜんすう

[in]計算する要素 数。0は配列の全要素を意味します。

その通り、iMAOnArray の最初の呼び出しで size の値を 0 にすると、確かに配列全体が計算され、その後、最後の値かせいぜい最後の 2 つの値だけが計算されるようですが、誰が考えても、すべてを再計算する可能性があります...。だから、減速しているのです。そのため、オフセットで取得したいバーの数は関係なく、とにかく配列全体をカウントしています。

だから、勘違いしてしまったんです。また、複雑な計算をしないとブレーキがかからないのはなぜですか?
 
Alexey Viktorov:
それなら、私が間違っていたんですね。では、なぜ複雑な計算をしなくてもラグが発生しないのでしょうか?
コードから呼び出すと遅くなるのに、単にチャートに重ねるだけでは遅くならないのはなぜか、そこが疑問です。まあ、どこに答えがあるのかは、開発者しかわからないでしょうけど。私のチャートには複雑なインジケータがたくさんあり、中には再帰的ループまで使っているものもあり、「長く考える」ことになっていますが、これは単純な作業で計算にとても時間がかかるものなのです。
 
Sergey Efimenko:
それが問題で、コードから呼び出すとラグが発生するのに、チャートに重ねるだけではラグが発生しないのはなぜか。まあ、どこに答えがあるのかは、開発者しかわからないんですけどね。私のチャートには複雑なインジケータがたくさんあり、中には再帰ループまで使っているものもあり、「長く考える」ことが前提になっていますが、これは単純な作業で計算に時間がかかってしまうのです。

単純なチャートオーバーレイのことではありません。そのテストコードについてです。そこに呼ばれるのであって、スーパーインポーズではない。

それでも、配列の一部をコピーしているくだりは打ち破ったつもりです。また、MODE_LWMAでも配列全体をカウントするのと同じように再計算されます。


赤は全履歴で計算されます。緑が直近の50小節。

 
Alexey Viktorov:

...

それでも、配列の一部をコピーしているくだりは打ち破ったつもりです。また、MODE_LWMAでも配列全体をカウントするのと同じように再計算されます。

...

彼も倒した。

 
Alexey Viktorov:

単純なチャートオーバーレイのことではありません。そのテストコードについてです。オーバーレイではなく、そこに呼び出されるのです。

それでも、配列の一部をコピーしているくだりは打ち破ったつもりです。また、MODE_LWMAでも配列全体をカウントするのと同じように再計算されます。


赤は全歴史をカウントしています。緑が直近の50小節。

あなたは私の投稿を一字一句読んでいるような印象を受けるのですが。勝つって何?早速、そのようなアイデア(バー 計算制限のある類似のコード)を得たと書き、試してみたところ、パフォーマンスが上がらない原因は配列はまだ完全に計算されます(合計=0)、あなたは(バッファに記入)最後の100要素のみをコピーするという事実は、減速の計算を変更しない、それはバッファ内の要素を取得していないブレーキ、および配列平均の計算は、いずれかの完全に計算されます(合計=0)または結果を与えるだけ最初のN要素(合計=N)、および方向インデックスの変更が望ましい効果を与えていない間に最後のを必要とします。
 
Sergey Efimenko:
私の投稿を一字一句、あるいは一文一文読んでいるような印象を受けるのですが、いかがでしょうか。勝つって何?早速、そのようなアイデア(バー 計算制限のある類似コード)があると書き、早速、試してみたところ、性能向上は得られなかった、とのことです。配列はまだ完全に計算されています(total=0)、最後の100要素だけをコピー(バッファに埋める)しても計算は遅くなりません、要素をバッファに入れるのではなく、平均的な配列の計算です、完全に計算されるか(total=0)、最初のN要素だけ(total=N)結果を出します、最後のは必要です、インデックスの方向を変えても望ましい効果は出ません。

どうやら私のメッセージも既読スルーされているようです...。前のコードが合わない、どこで間違えたのかがわかった。最後のスクリーンショットは、最後の50本のバーだけをカウントしていますが、別の方法を示しています。

どうせ動かないだろう」という反応を期待して、すぐにコードを掲載しなかったのは......。コードは秘密ではありませんので、お手持ちのインジケータでどのように動作するか確認したい場合は、私にお知らせください。

ドミトリー・フェドセーエフ

彼も勝ちました。

と煽ることしかできない。今の私のように、この口調でコミュニケーションをとる会員が何人いるか数えてみてください。消えろ、サタン。
 
Alexey Viktorov:

...

騒ぐことしかできない。あなたが今、私に話しているように、その口調で話している掲示板のユーザーが何人いるか数えてみてください。消えろ、サタン。

そうやって、あなたのような方とお話をしてきました。ここにはあなたたちの連合がいるんですよ。

昨日も、ここで配列コピー 方式の失敗について書かれていましたね。LWMAに向けられたもので、うまくいきました。EMAで確認するほど怠け者でもないし、聖なる力の宿主?教会にロウソクを立てましたか?

泣き言ばかり言って、その度に「そっか、間違えたんだ。

戦いです。ちょっとでもセンスがあれば、とっくにこのトピックの問題は解決していることがわかるはずです。

もう一度目立ちたかったのに、角を飛ばされてすぐにサタンに嘆いたんだろ。男!

 
Alexey Viktorov:

どうやら私のメッセージも既読スルーされているようです...。前のコードが合わない、どこで間違えたのかがわかった。最後のスクリーンショットは、最後の50本のバーだけをカウントしていますが、別の方法を示しています。

どうせ動かないだろう」という反応を期待して、すぐにコードを掲載しなかったのは......。コードは秘密ではないので、自分のインジケータでどのように動作するか確認したい場合は、教えてください。

違うコードがあることを推測していたのでしょうか?上記もスクリーンショットですが、直近の100本がカウントされていますが、実際には全てのバーがカウントされていますが、バッファにコピーされるのは100本だけです。はい、そしてなぜ一度にコードを掲載しないのですか?そんな答えはなかったはずだ。私は実質的に答えただろう、何が言いたいのか理解できない?何が起こっているのか、何がカウントされているのか、上記のような欠陥があるのか、コードからすぐに確認することができます。そして、その画面からは何が見えてくるのか。結果以外の何ものでもない。すでに述べた結果については、さまざまな方法で到達することができるが、計算時間を短縮するという目下の課題に対しては、そのすべてが受け入れられるとは限らない。