if( prev_calculated > 0 ) // Не первый запуск
{
if( rates_total <= prev_calculated ) // Новый бар не сформирован
{
}
else// Новый бар сформирован
{
}
}
else// Первый запуск
{
}
я правильно понимаю тогда, что подготовив кэш,терминал при последующих обращениях (начиная со 2 обращения) затрачивает на порядки меньше времени?
можно ли как-то уменьшить время первого обращения после перезагрузки терминала,чтобы было как в МТ4?
Теперь выводы:
Разница только в скорости начальной инициализации кеша чарта 0.6 мс МТ4 против 113 мс у МТ5
ハイライトは 0を返すことができます。BCSが駆けつけた。
そう、悪徳ブローカーだ。マイナスの数字も入れてくるし。
ブローカーがシンボルを設定する際に、各パラメータの設定可能範囲の制限を開発者が設定できると良い。
具体的に何が問題なのでしょうか?ネイティブではないタイムフレームからインジケータデータを取得するために、私は何を間違えているのだろうか?という疑問でした。
例:M1でインジケータを動作させ、M5からAOのデータを取得する場合。そのため、limit>1(履歴の再計算が必要)でありながら、M5からのAOはデータエラーがなく、0を返します。履歴が計算されると同時に(limit=0)、AOからM5でデータが届き始める。
まず第一に、そのようなエントリーをする必要がないことです。
最初は、変数に自分の値を代入しているのかと思いました。
次のページ
初期化時にコピーする必要はありません。初期化はこのためではありません。また、OnInit()で要求した時点ではまだ計算されていない古いTFからのデータ要求では、このレコードは意味をなさない。
しかし、この記録は初期化段階で一度だけ行えば十分である。
さらに...そのということです。
に分けたいですね。
1.1本目(ヒストリー解析)。
2.その後の走り。
2.1.それぞれのティック
2.2.形成されたバー
すなわち
そして、その後に初めて、主な計算サイクル(機能)が発生する。
コピー機能で意味のないエラーが発生する。コードがイマイチ。
古いTFのデータの同期チェックはしていません。
そして、ここで最も重要なのは、その順番を理解することです。テスト用のインジケータを作成し、最初の起動時に主要なTFのデータのみを要求し、どのようにコピーされるかを理解することをお勧めします。つまり、コードの先頭からこれを削除することです。
そして、配列の 最初と最後の要素をアンセットします。そして、必要な場合にのみ、インデックスの方向性を変更する。
まず第一に、そのようなエントリーをする必要がないことです。
最初、変数に自分の値を代入しているのかと思いました。
次のページ
初期化時にコピーする必要はありません。初期化はこのためではありません。また、OnInit()で要求した時点ではまだ計算されていない古いTFからのデータ要求では、このレコードは意味をなさない。
しかし、この記録は初期化段階で一度だけ行えば十分である。
さらに...そのということです。
に分けたいですね。
1.1本目(ヒストリー解析)。
2.その後の走り。
2.1.それぞれのティック
2.2.形成されたバー
すなわち
そして、その後に初めて、主な計算サイクル(機能)が発生する。
コピー機能で意味のないエラーが発生する。コードがイマイチ。
古いTFのデータの同期チェックはしていません。
そして、ここで最も重要なのは、その順番を理解することです。テスト用のインジケータを作成し、最初の起動時に主要なTFのデータのみを要求し、どのようにコピーされるかを理解することをお勧めします。つまり、コードの先頭からこれを削除することです。
そして、配列の 最初と最後の要素をアンセットします。そして、必要な場合にのみ、インデックスの方向を変更する。
一目でわかるような変数を作っています。理解できないなら、理解できる方法で作ればいい ;)
私はいつも、グローバルでない変数は小さな文字で書き始めます。理由は簡単で、大文字と小文字を区別するからです...。
非テストコードでも十分大きいので、これはテストコードです。MT4では、トラフを切り替えても飛ぶし、データ不足のエラーもなく、すべてが常に存在します。しかし、MT5は、私は半分のためにだけmtfを切り替えると、履歴をロードし、その後、彼のTFではないデータで動作しません - 彼らの不在について述べています。
そのため、何が間違っているのかを議論したのです。その結果、initで使用する全てのクライアントのデータを要求する必要があることが判明しました。中古携帯の推定台数が事前に分からない場合は、全て依頼する必要があると思います。半分ずつしかカウントされません。全部で21個あるのですが...。
また何かあったんですか?
MT5では、etfを切り替えると履歴のダウンロードに半分しかかからない
それについて書いている
詳しくはこちら
https://www.mql5.com/ru/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
TFやシンボルを要求するほど、起動が遅くなります。
それについて書いている
詳しくはこちら
https://www.mql5.com/ru/forum/1111/page1871#comment_4866969
https://www.mql5.com/ru/forum/1111/page1871#comment_4867939
TFやキャラクターの数が多いほど、起動が遅くなります。
初めてインジケータを起動する時だけなら良いと思います。時間軸を切り替えるたびに履歴の読み込みが半端ない。そんなことしちゃいけないってわかってるんだけど...。何か間違っているような...。1つのインジケータのみで、ネイティブではないタイムフレームにアクセスしようとしています。
まあ、別の時間軸のデータをコピーする速度を測って、どこがボトルネックになっているのか見てください。
異なるTFから複数のインディケータを計算に使用する必要がある場合 - それぞれのTFのハンドルを取得する必要があります。
もし、より速くしたいのであれば、ターミナルのヒストリーのサイズを小さくしてください。
私のテスト用インジケータを実行しましたか?データを集めているのでしょうか?
異なるTFから複数のインディケータを計算に使用する必要がある場合 - それぞれのTFのハンドルを取得する必要があります。
もし、より速くしたいのであれば、ターミナルのヒストリーのサイズを小さくしてください。
私のテスト用インジケータを実行しましたか?データを集めているのでしょうか?
いいえ、していません。
ALLタイムフレームが必要な場合、AOインジケータのハンドルを21個作成する必要があることがわかりました。もったいないと思いませんか?
いいえ、まだ実行していません。
ALLタイムフレームが必要な場合、21個のAOインジケーターハンドルを作成する必要があることがわかりました。もったいないと思いませんか?