Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
議論しているわけではありません。"グレー "は、この記事の写真に写っているものです。
原作がなければ、こういうのは
そうですね......私が言っていたのは「これら」のことです。オーバーフローしてインジケーターが表示されないとき、ご紹介いただいた投稿のスクリーンショットにあるメニューに表示されているものを見ていませんでした。ここでは何とも言えませんね。
しかし、インジケーターがナビゲーターになく、フォルダーにある場合、フォルダーから古いインジケーターのいくつかが削除されるまで、新しいインジケーターはナビゲーターに表示されないということになります。
そうですね。私だけじゃないんです。
動的配列をインジケータバッファとして割り当てることで、手動でリサイズする必要性を回避したいと考えました。しかし、ArrayResize() を、サイズが端末自身によって監視されるべきで、手動でサイズを変更してはならないインジケータバッファの動的配列のように取り除くことができません。
https://www.mql5.com/ru/docs/series/bufferdirection。
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
https://www.mql5.com/ru/docs/array/arrayisdynamic にアクセスし、 コードを実行すると、いきなり次のようなことがわかります。
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3.インジケーターバッファーの確認
2022.01.24 21:25:27.543 t (NZDUSD,D1) メモリ解放前のサイズ = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1)This is dynamic array = None
2022.01.24 21:25:27.543 t (NZDUSD,D1) メモリ解放後のサイズ = 0
を同時に表示します。
本を見ると......イチジクがいる。それとも、今までずっと騙されていたのだろうか?
それとも、一回(最初の初期化時)ダイナミックに動いて、それで終わりなのでしょうか?
ArrayResize() は、端末自身がサイズを監視すべきインジケータバッファの動的配列で、手動でサイズを変更する必要はないはずなのに、どうにもならない。
https://www.mql5.com/ru/docs/series/bufferdirection。
https://www.mql5.com/ru/docs/array/arrayisdynamic にアクセスし、 コードを実行すると、いきなり次のようなことがわかります。
同時にそれは。
本を見ると......イチジクがいる。それとも、今までずっと騙されていたのだろうか?
それとも、一回(最初の初期化時)ダイナミックに動いて、それで終わりなのでしょうか?
22:23:17.002 Dynamic EURCAD,H1: +=============================+.
0 22:23:17.002 Dynamic EURCAD,H1: 1.動的配列のチェック
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory release = 100
0 22:23:17.002 Dynamic EURCAD,H1: This is Dynamic Array = Yes.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory free = 0.
0 22:23:17.002 ダイナミックEURCAD,H1:2.静的配列のチェック。
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory free = 100
0 22:23:17.002 Dynamic EURCAD,H1: This is dynamic array = None.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory free = 0.
0 22:23:17.002 ダイナミックEURCAD,H1:3.インジケーターバッファを確認する。
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory free = 2725
0 22:23:17.002 Dynamic EURCAD,H1:This is dynamic array = Yes.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory release = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 カスタムインジケーター Dynamic EURCAD,H1: 削除されました。
これは4での話です。
動的配列をインジケータバッファとして割り当てることで、手動でリサイズする必要性を回避したいと考えました。しかし、ArrayResize() を、サイズが端末自身によって監視されるべきで、手動でサイズを変更してはいけないインジケータバッファの動的配列のように取り除くことができません。
https://www.mql5.com/ru/docs/series/bufferdirection。
https://www.mql5.com/ru/docs/array/arrayisdynamic にアクセスし、 コードを実行すると、いきなり次のようなことがわかります。
同時にそれは。
本を見ると......イチジクがいる。それとも、これまでずっと騙されていたのか?
それとも、一回だけ(最初の初期化時)ダイナミックに動いて、それで終わりなのでしょうか?
はい、ではそうします :-)
...SetIndexBufferの後ではArrayResizeを使うことができず、プログラムの観点からは、配列はあらかじめ定義された(外部で制御された)サイズを持つ静的なものであると言えます。
22:23:17.002 Dynamic EURCAD,H1: +=============================+.
0 22:23:17.002 Dynamic EURCAD,H1: 1.動的配列のチェック
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory release = 100
0 22:23:17.002 Dynamic EURCAD,H1: This is Dynamic Array = Yes.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory free = 0.
0 22:23:17.002 ダイナミックEURCAD,H1:2.静的配列のチェック。
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory free = 100
0 22:23:17.002 Dynamic EURCAD,H1: This is dynamic array = None.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory free = 0.
0 22:23:17.002 ダイナミックEURCAD,H1:3.インジケーターバッファを確認する。
0 22:23:17.002 Dynamic EURCAD,H1: Size before memory free = 2725
0 22:23:17.002 Dynamic EURCAD,H1:This is dynamic array = Yes.
0 22:23:17.002 Dynamic EURCAD,H1: Size after memory release = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 カスタムインジケーター Dynamic EURCAD,H1: 削除されました。
これは4での話です。
ファンタスティック!この魔法は何なのでしょうか?EURCAD,H1で確認したところ、やはりダメでした。
また、4とは何でしょうか?例では3点だけです。
ファンタスティック!魔法ってなんだろう?EURCAD,H1で確認したところ、また「No」でした。
そして、4とは?例では3点だけです。
MT4端子
ファンタスティック!この魔法は何なのでしょうか?EURCAD,H1で確認したところ、また「No」でした。
そして、4とは?例では3点だけです。
0 23:33:06.088 test (EURUSD,D1) +======================+
0 23:33:06.088 test (EURUSD,D1) 1.ダイナミックアレイのチェック
0 23:33:06.088 test (EURUSD,D1) メモリ解放前のサイズ = 100
0 23:33:06.088 test (EURUSD,D1) This is 動的配列 = Yes
0 23:33:06.088 test (EURUSD,D1) メモリ解放後のサイズ = 0
0 23:33:06.088 test (EURUSD,D1) 2.静止画アレイテスト。
0 23:33:06.088 test (EURUSD,D1) メモリ解放前のサイズ = 100
0 23:33:06.088 test (EURUSD,D1) This is dynamic array = None
0 23:33:06.088 test (EURUSD,D1) メモリ解放後のサイズ = 100
0 23:33:06.088 test (EURUSD,D1) 3.インジケータバッファを確認します。
0 23:33:06.088 test (EURUSD,D1) メモリ解放前のサイズ = 1054
0 23:33:06.088 test (EURUSD,D1) This is dynamic array = None.
0 23:33:06.088 test (EURUSD,D1) メモリ解放後のサイズ = 0
端末MT5、感想なし。
動的配列をインジケータバッファとして割り当てることで、手動でリサイズする必要性を回避したいと考えました。しかし、ArrayResize() を、サイズが端末自身によって監視されるべきで、手動でサイズを変更してはいけないインジケータバッファの動的配列のように取り除くことができません。
https://www.mql5.com/ru/docs/series/bufferdirection。
https://www.mql5.com/ru/docs/array/arrayisdynamic にアクセスし、 コードを実行すると、いきなり次のようなことがわかります。
同時にそれは。
本を見ると......イチジクがいる。それとも、今までずっと騙されていたのだろうか?
それとも、一回(最初の初期化時)だけダイナミックに動いて、それっきりなのでしょうか?
バッファ配列は動的である。MQLでは、動的配列は、(超高水準言語と同様に)私が作業しながら理解した限りでは、オブジェクトの符号を持っています。しかし、動的配列をバッファとして宣言(SetIndexBufferを使用)すると、このメモリ領域は予約されるようになります。そのため、ほとんどの標準的な関数では、そのサイズを変更することができません。私は、オブジェクト配列を指標バッファとして使うことがあります。そして、そのような配列のメモリは、オブジェクトのデストラクタで解放されます。したがって、アプリケーション(またはオブジェクト)自身によるインジケータ・バッファ・メモリの解放は許可される。しかし、インジケーターの動作中にすぐに配列が解放されるわけではありません。何事も賢明に行うことが大切です。
午後
Expert Advisorを作成 しようとしているのですが、テストすると奇妙なことが起こります。
私は、関数
どういう状況かというと、チャート上で動いているEAのインスタンスを1つ起動し、同じチャート上で2つ目のインスタンスをデバッグモードでMT4
関数の入力データは同じなのに、出力データが違う!!? 何か理解できていないだけ、みたいです......(
どのように情報を掘り出せばいいのか、教えてください。
追記:ちょうど2.5倍の出力の差を計算しました私は、関数
どういう状況かというと、チャート上で動いているEAのインスタンスを1つ起動し、同じチャート上で2つ目のインスタンスをデバッグモードでMT4
関数の入力データは同じなのに、出力データが違う!!? 何か理解できていないだけみたいです...(
どの方向に情報を掘り出せばいいのか、教えてください!
追記:ちょうど2.5倍の出力の差を計算しました角度の計算式が重要なんです。このコードでは、計算のために1つの座標といくつかの係数が使用されていることがわかりますが、その目的は明らかではありません。これは何でしょう?どのようなデータで角度を計算しているのか、詳しく教えてください。