エラー、バグ、質問 - ページ 1623

 
Dmitri Custurov:
解決策を提供していただき、ありがとうございました。すべてがうまくいく。
素晴らしい。そこで、私がKodoBaseに掲載しているライブラリと使用例です。
 
-Aleks-:
配列ファイル全体をメモリに読み込んでから作業したほうが、はるかに高速になります。
オプティマイザが何万回もファイルをopen-read-closeすることはないと思います。
 
Aliaksandr Yemialyanau:

配列ファイルをEAに接続するにはどうすればよいですか?

まず、スクリプトは配列を書き込む。

EAでファイルを繋いでいます。

コンパイル時にエラーが発生する。

'????????????????????????' - 識別子が長すぎる mas.dat 1 1

'' - 不明な記号 mas.dat 1 3015

それで、masファイルとはどんなファイルなんですか?このエラーから判断すると、ただのバイトの流れですよね?
 

静的変数 に関する深刻なバグ このコードを考えてみてください。

class A  { public:
            int m;
            A() { Alert("A");  m=1; }
         };

class B  { public:
            B() { Alert("B");  static A a;  Alert("a.m==",a.m);  Alert("&a==",&a);}
         };
B b;

void OnStart()
{
};

実行すると、以下のような順番でアラートが表示されます。

B
a.m==0
&a==0
A

つまり、スタティック変数にアクセスした時点ではまだ初期化されていない。 ポインタもnullである。 ちょうどスキップされたので、安全に次のステップに進むことができる。

変数を初期化して先に進むか、エラーでコンパイルを中止してください。

しかし、相互に参照されるクラスの再帰が発生した場合は、コンパイルを中止する必要があります。

 
Aliaksandr Yemialyanau:

配列ファイルをEAに接続するにはどうすればよいですか?

まず、スクリプトは配列を書き込む。

EAでファイルを繋いでいます。

コンパイル時にエラーが発生する。

'????????????????????????' - 識別子が長すぎる mas.dat 1 1

'' - 不明な記号 mas.dat 1 3015

スクリプトはファイルmas.mqhを生成し、そこにはデータのバイトを含むuchar-typesの 配列が含まれるはずです。例えば、3バイトのファイルサイズであれば、mas.mqhファイルの内容は以下のようになるはずです。

uchar mass[3] = {25, 127, 89};

生成された配列の質量は、プログラムで使用するものです。

 
Aliaksandr Yemialyanau:
オプティマイザが何万回もファイルをopen-read-closeすることはないと思います。
あ、配列でコンパイルしたいんですね。
 
ディスクから何万回もファイルを読み込むことはまずないでしょう。 そのためにディスクキャッシュがあるのですが、この特殊なケースで使われているかどうかは知りませんが、松葉杖を発明する前に確認・計測しておくべきです。
 
MT5で1回だけ実行を中断すると、残高変化グラフだけが表示される。しかし、トレードやオーダーはできません。
可視化モードを使用すると、MQLInfoInteger(MQL_VISUAL_MODE)による計算がさらに遅くなる可能性があるため、常に適切とは限りません。
MT4のように、バックテスト中にすべての情報を利用できるようにすることは可能でしょうか(視覚化なし)。
 
履歴データのデバッグモードでは、MQLInfoInteger(MQL_VISUAL_MODE)は常にtrueを返します。
 
fxsaber:
履歴データのデバッグモードでは、MQLInfoInteger(MQL_VISUAL_MODE)は常にtrueを返します。
何を返すべきなのか?