カスタムインジケータ(機能-iCustom)使用時のEA加速度理論について - ページ 5

 
Alexander Laur:
タスクの内容を教えてください。すべてのバーに対して、スクリプトはどのような処理を行うのでしょうか?真正面から問題を解決しようとしているのだと思います。解決すべき問題を見ずにアドバイスするのは難しい。

スクリプトは、こちらのToRhttps://www.mql5.com/p/21/234411 、 ですが、メモリ不足で動作に難があります・・・。というか、スクリプトを少し走らせただけで切れてしまう。

 
Alexander Laur:
ページが禁止されています。スクリプトがあるのは結構なことですが、それでは問題が解決しません。スクリプトは何をするのですか?
スクリプトは、価格に対するインジケータの位置を分析します。多くの基準があります - 目的は、インジケータがサポートまたはレジスタンスゾーンである、インジケータの最適な設定を見つけることです。このスクリプトは、移動平均に 類似した任意の指標を接続し、パラメータの列挙を実行することができます。
 
Alexander Laur:

インジケーターの計算をスクリプトに移すしかない、とRenatはすでに回答しています。

それはわかるのですが、仕事が煩雑になり、コストがかなり上がってしまうんです。ツール(スクリプト)を汎用性のないものにする。

アレキサンダー・ラウル

また、マゾヒズムを発揮して、算出されたパラメータの範囲をサブレンジに分割することも可能です。そして、各サブレンジのパラメータを変更しながらスクリプトを実行します。時間がかかるのは承知しているが、何ができるのか?

スクリプトでチャートを開き、その上でいくつかのインディケータを計算し、スクリプトでチャートを閉じ、新しいチャートを開くというプロセスを自動化することが解決策になるのではないかと思います。

アレキサンダー・ラウル

2つ目の選択肢は、5への切り替えです。つまり、5番目の指標で最適なパラメータを探索し、4番目の指標で最適なパラメータを代用すればよいのです。5では、指標の ロードとアンロードを 管理することが可能である。しかし、ロード/アンロードの動作はかなりリソースを消費します。

コストのかかる操作はないよりあったほうがいいと思うし、5でメモリが多く使えるのはわかるけど、4でトレードするから4用に書かれたインジケーターが必要なんだよなぁ...。

私の計算は1が基本で、インディケータを5に変換する方法がわからないのですが、少なくともコンパイル後にインディケータ同士を互換させることは可能なのですね.

 
Alexander Laur:

チャートにインジケータを 追加するコマンドは見つかりませんでした。グラフを削除することで、もちろんメモリは解放されます。しかし、チャートを閉じると、チャート上のすべてのインジケータが閉じられます。

新しいチャートを開くコマンドはありますが、新しく開いたチャートにインジケータを添付するコマンドはありません。このため、この場合も本当の意味での自動化はうまくいかない。

iCustomはどうでしょう、インジケーターを呼び出すのに使っています-チャートを追加するのと同じです-実際、私はチャートにチャートは載せていません。
 
Alexander Laur:

iCustom()でインジケータを呼び出すと、チャートが追加されない。

チャートを載せないのなら、メモリを空けるためにどのチャートを殺すんだ?

時間を無駄にしないで、レナートを信じてください。

もしかしたら、私が勘違いしているのかもしれません。もう一度、確認しましょう。

1.iCustomインジケータ機能を呼び出して、チャートバッファをメモリに保存するスクリプトがあります。

2.iCustom関数の呼び出しが複数回行われ、その結果RAMが満たされ、インジケータはゼロを返します。

端末はメモリで動作させる必要がありますよね?キャッシュをクリアするには、私の理解では、データが不要であれば可能で、データのあるチャートを削除すれば不要になります。

4.チャートを削除し、ポイント1の更なる計算のためにRAMを解放してください。

どこが間違ってるんだろう?


P.S. 私の理解では、データはすべて計算が行われたチャートに結びついています - それにどんな引用符が使われていてもです。

 
-Aleks-:

もしかしたら、私が勘違いしているのかもしれません。もう一度、確認しましょう。

1.iCustomのインジケーター機能を呼び出し、グラフィックバッファをメモリに格納するスクリプトがあります。

2.iCustom関数の呼び出しは複数回行われ、その結果RAMは満たされ、インジケータは0を返します。

端末はメモリで動作させる必要がありますよね?キャッシュをクリアするには、私の理解では、データが不要であれば可能で、データのあるチャートを削除すれば不要になります。

4.チャートを削除し、ポイント1の更なる計算のためにRAMを解放してください。

どこが間違ってるんだろう?


P.S. 私の理解では、データは計算を実行するチャートに結びつけられています。

ポイント3では

ターミナルは、次の呼び出し時にすべてを一度に再計算しないように、終了後しばらくの間、時系列のキャッシュとそれらに基づいて構築された指標を保存します。

 
Andrey Khatimlianskii:

ポイント3では

ターミナルは、閉じた後しばらくの間、時系列とそれに基づく指標のキャッシュを保存し、再びアクセスしたときにすべてを一度に再計算する必要がないようにしています。

しかし、"ある "時間とは何でしょうか?もしかしたら、リソースを解放する(メモリからキャッシュを削除する)基準・方法は他にもあるのでは?
 
-Aleks-:
しかし、"ある "時間とは何でしょうか?もしかしたら、リソースを解放する(メモリからキャッシュを削除する)ための基準・方法が他にあるのでは?

いいえ、レナートはすでに返信しています。

MT5では、リソースとしてインジケータを使用しているExpert Advisorをアンロードすると、キャッシュがクリアされます。例えば、Expert Advisorでチャートを読み込んで、その一部を読み込んで、チャートを 閉じることができます。でも、とにかくスピードが出ない。

MT4ではわかりません。

 
Andrey Khatimlianskii:

いいえ、レナートはすでに返信しています。

MT5では、リソースとしてインジケータを使用しているExpert Advisorをアンロードすると、キャッシュがクリアされます。例えば、Expert Advisorでチャートを読み込んで、その一部を読み込んで、チャートを 閉じることができます。でも、とにかくスピードが出ない。

MT4ではわかりません。

スクリプトの操作後、メモリは解放されます。つまり、インジケータから取得したデータの計算のためのメモリは解放されますが、チャートバッファには関係ないんですね。

また、グラフィカルバッファではなく、例えばグローバル変数(そこにバッファを作れるかどうかは分かりませんが)を使ってデータを変換すれば、メモリ不足の影響は克服できるのではないでしょうか?

 
ここで実験です。
1. チャートを開いて「タスクマネージャー」-使用メモリ 215692 kb
2.I apply indicator - occupied memory 219612 kb (increase 3920 kb).
3.インジケーターの削除 - 使用メモリ 217984 kb (リリース 1628 kb)
そして、残りの2292kbの未解放メモリは、私の理解では、キャッシュに入ったのでは?
バッファがデータを取りすぎているのでは?-Sentryの2013年2月からの履歴。