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

 

Alexander Laur、つまりスクリプト/アドバイザーを実行している限り、メモリは確保され、クリアすることができない - 悲しい結論です。
スクリプトで別のスクリプトを実行し、実行中のスクリプトを閉じるとメモリがクリアされるはずですが、それは複雑な処理環境とみなされるのでしょうか。

 
-Aleks-:

Alexander Laur、つまりスクリプト/アドバイザーを実行している限り、メモリは確保され、クリーニングすることができない - 悲しい結論です。
別のスクリプトを実行し、実行中のスクリプトを閉じるとメモリクリアになるはずですが、複雑なデータ処理環境とみなされるのでしょうか。

早速、「Expert Advisorを起動した状態でチャートを 開く」ことを提案したところ、「ChartOpen + ChartApplyTemplate」で実現可能です。

問題は、閉じる(Expert Advisorを削除する)ときに、メモリが解放されるかどうかだけです。

確認してください。

 
Andrey Khatimlianskii:

早速、「Expert Advisorを起動した状態でチャートを 開く」ことを提案したところ、「ChartOpen + ChartApplyTemplate」で実現可能です。

問題は、閉じる(Expert Advisorを削除する)ときに、メモリが解放されるかどうかだけです。

チェックする。

手動で、インジケーターの多いテンプレートをほぼ空っぽに変更して試しましたが、効果はありました(ただし、キャッシュは残りますが、致命的ではないと思います)。しかし、テンプレートスクリプトでどのように開閉を行うのか、私にはわかりません。スクリプトを実行している限り、メモリはクリアされないという疑念は理解できたのですが...。アンドレイさん、実験に協力してください。
 

追加質問ですが、インジケータ内の計算の ためのリアルバッファタイプの選択は、グラフィカルバッファのサイズに影響するのでしょうか?

タイプ

サイズ(バイト)

正の最小値

最大値

表現の正確さ

C++でアナログ

うかぶ

4

1.175494351e-38

3.402823466e+38

有効数字7桁

うかぶ

二重

8

2.2250738585072014e-308

1.7976931348623158e+308

有効数字15桁

二重


また、グラフィカルなバッファの代わりにTextOutを 使ったらどうだろうという、とんでもないアイデアもあります- ただ、そこからデータを読み出す 方法がわからないのですが...。

 
-Aleks-:

追加質問ですが、インジケータ内の計算の ための実バッファタイプの選択は、グラフィカルバッファのサイズに影響するのでしょうか?

グラフィカルバッファ」というのは、通常のインジケーターのグラフィカル表示のことでしょうか?
 
Dennis Kirichenko:
グラフィカルバッファというのは、通常のインジケーターをグラフィカルに表示することでしょうか?

問題は、計算のためのインジケータコードでdoubleの 代わりに floatを 使用した場合、グラフィカルバッファに割り当てられるメモリのサイズに1バー分影響を与えることが可能かどうかということです。

//---- buffers

double Vy[];
double bufDirSoft[];

extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;

 
また、メモリがなくなったことを見分ける方法は、何か機能があるのでしょうか?
 
-Aleks-:

問題は、計算のためのインジケータコードでdoubleではなくfloatを使用した場合、グラフィカルバッファに割り当てられるメモリのサイズに1バー分影響を与えることが可能かどうか...です。

いいえ、すべての試行を置き換える魔法の関数があります。

bool  SetIndexBuffer(
   int                    index,         // индекс буфера
   double                 buffer[],      // массив
   ENUM_INDEXBUFFER_TYPE  data_type      // что будем хранить
   );

この仕組みは、ターミナル言語自体に組み込まれています。面白いアイデアではあるのですが...。

 
-Aleks-:
また、メモリがなくなったことを見分ける方法は、何か機能があるのでしょうか?

メモリが足りないとはどういうことですか?:-)

ここに何かある。

https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer

私見ですが、インジケータリソースのメモリ管理で最も効果的な方法は、"Max bars in history" パラメータ(Settings --> Charts)を最小にすることです。私の記憶では、パラメーターの最小値は5kです。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks-:
また、メモリ不足を知るにはどうしたらいいのでしょうか、何か機能はありますか?

端末の情報を取得 することができる

端末メモリ合計

端末(エージェント)プロセスで利用可能なメモリサイズ(単位:MB

イント

ターミナル_メモリ使用可能

端末(エージェント)プロセスの利用可能なメモリサイズ(MB)。

イント

端末のメモリ使用量

端末(エージェント)が使用するメモリサイズ、単位:MB

イント