Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
template<typename T>
class A{};
class B{
public:
template<typename T>
void test(A<T> &a);
};
template<typename T>
void B::test(A<T> &a){} // 'test' - member function already defined with different parameters voidOnStart(){
B b;
}
ポイントは、参照渡しができることです。
文字列の 場合と同様に、開発者は、実際に変数をコピーすることなく、すべてを参照渡しする機会があります(まだ実行されていない場合)。
そしてそれは、ある特定のMqlTick 構造ではなく、あらゆる場面での解決策になるはずです
このことから、_Digits,_Point , _Period, _LastErrorなどを直接 使う意味がないことが改めて確認できます(_SymbolもNULLで置き換えることができますし)。実際には、const volatileとして宣言する必要があります。
そして、あなたは逆に、この範囲を拡大することを提案しています。
ただし、IsStoppedフラグは100%揮発 性です。つまり、IsStoppedの読み取りは100%メモリの読み取りです。
その他の場合、almostvollatylеは、コンパイラが最初の呼び出し時に変数の値をレジスタにキャッシュして、次にその変数にアクセスするときにキャッシュされた値を使用してもよい(MAY)ことを意味します。ただし、1つの関数内または呼び出しの分岐(1関数内にインライン化されている場合)でのみです。
これは、定義済みの変数(IsStoppedを除く)の変更がMQLエントリポイント(OnXXX関数)の内部で発生しないため、可能(かつ必要)です。
VARIABLE MODIFICATORについてですが、 仮にコンストプログラマーが プログラマーのために使っているとします。
ご存知のように、変換によって変数の定数を変更することができるので、コンパイラはconst 修飾子を信用することができないのです。
コンパイラは、その変数が値を変えずに定数として初期化されていると判断すると、const 修飾子がなくても、その変数を即時値(ImmediateValue)にします。 _LastTickについては、議論中ですが...。
これは単純なアトミック型ではなく構造体であり、値の取得時を含め、MQLプログラムのどの時点でも突然変更される可能性があります。
この構造に対応するためには、シンクロナイザーを導入する必要があることがわかった。
特に、このようにビルドのリリース速度が速いため、常にパフォーマンスの向上に努めています。
MQLのコードを高速化するために多くの作業を行う予定です
LastTickについては、議論中ですが...。
これは単純なアトミック型ではなく構造体であり、値の取得時を含め、MQLプログラムのどの時点でも突然変更される可能性があります。
この構造に対応するためには、シンクロナイザーを導入する必要があることがわかった。
しかし、テスターでは、_LastTickはMQLプログラムのどの時点でも変更できないのですか?
もしそうなら、計算速度が最も重要なテスターにのみ、そのようなソリューションを提供する。
しかし、テスターでは、_LastTickはMQLプログラムのどの時点でも変更できないのですか?
もしそうなら、計算速度が最も重要なテスターにのみ、そのようなソリューションを提供してください。
では、このティックをOnTickハンドラで一度リクエストし、受信したデータで動作させることを妨げるものは何でしょうか?
マーケットとクラウドが積んでいるEAクリエイターの 資質の低さが邪魔をしている。
では、OnTickハンドラで一度tickをリクエストすれば、それ以降は受信したデータで動作するようになるのでしょうか? 実質的には何のコストもかかりません。 なぜ(上記のテストのように)100回も再リクエストして人為的にブレーキをかけるのでしょうか? つまり、EAコードが曲がったという問題は、MTの内部動作を複雑にすることで解決しようと提案しているのです。それとも、何か正常な測定値があるのでしょうか?
OnTick "で処理されるイベントは、外部から優先順位をつけて何らかのキューに受け取られる。他のハンドラでは、そのような新しいイベントが発生していないことを確認することが有用であり、そうでなければ、前のティックのデータは無効/古いものとなる。
では、OnTickハンドラでこのtickを一度リクエストして、その結果得られたデータで作業することを妨げるものは何でしょうか? それは実質的に無価値です。 なぜわざわざ100回もリクエストして(上記のテストのように)その場で人為的にブレーキをかけるのでしょう?
これはまさに私がテスターで行っていることです。
つまり、曲がったEAコードの問題は、MTの内部構造を複雑にすることで解決するはずなのです。それとも、何か正常な測定値があるのでしょうか?
まあ、コードは一般的なコーディングプラクティスによって決定されます、これらの例でQBとセーフラインの使用を見てください
私はSBを使用していない、私はプロファイラで 測定し、数ヶ月のためのソリューションを探している、スピードテストについてのスレッドがあった、一部代替ソリューションを投入してください。
このような場合、私は自分のEAを最適化するために満足しています、18ヶ月6秒でパスがあった、今2.5秒、私は自分自身に良い仕事をしたイミホ )))
現在のように0ではない、つまり実質的にREASON_PROGRAM
。
端末を再起動すると、記録ログに連続無停止で書き込みを行う
ログのヒストリーバーの時間が常に増えている。GBPUSD 日足チャートを開いてそわそわ - ゼロ、1本目、2本目のバーが削除/作成されます。そうやって、ぐるぐる回っているんです。
ここで私は待っています。このログでSSDが全部埋まるのか、それともついに止まるのか...。
昨日のログは予告編にあります。