MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 913

 
psyman:


データを確実にアップロードするにはどうしたらよいですか?

データアクセスの整理」のヘルプを読みましたが、簡単に確認する方法はないでしょうか。

https://www.mql5.com/ru/code/1251

mt5のヘルプにこんなコードがあります。

簡単な方法」とはどういう意味ですか?- ...マインドでアップロードされたデータかどうか確認する程度でしょうか?)))- 自分でゼロからすべてを書くか、誰かが用意したソリューションを使うか、前者でも後者でも時間がかかります。自分でコードを書いて開発するか、誰かのソリューションに対応するか、どちらが簡単かは、あなたの選択です。

 
Igor Makanu:

https://www.mql5.com/ru/code/1251

このコードはmt5のヘルプにあります。

簡単な方法ってなんだ?- 精神力で?)))- 自分で一から全部書くか、他人のソリューションを使うか、どちらの場合も時間がかかります。自分でコードを書いて開発するか、他人のソリューションに対応するか、どちらが簡単か、それはあなたの選択です。

リンクありがとうございます、ライブラリは簡単な方法です :-)

たしかに、場合によってはフリーズするというコメントを読んだことがあります。

私の理解では、インジケータの1コピーに対する非同期パイピングは不可能です。 シンボルごとにキュー全体を連続的に処理するのを待てばよいのでしょうか?

 
psyman:

リンクありがとうございます、ライブラリは簡単な方法です :-)

確かにコメントでは、場合によってはハングアップすると書かれています。

私が理解する限り、指標の1つのコピーのための非同期ダウンロードは不可能であり、私はそれが各シンボルのために連続的にキュー全体を取得するのを待つ必要がありますか?

ライブラリは凍結しません

履歴のダウンロードはExpert Advisorsでのみ可能で、Helpにはindicatorsでは使用できないと書かれています。

インジケーターは、KBや記事中の例で、マルチシンボルやマルチカレンシーを検索してください。

 

Mql4には面白いものがあります。以下はその一例です。関数があるとする。

ArrayResize()

int型だが、値を返さずに(void)手続き型関数として呼び出せる?面白いですね。

 

こんにちは。修正方法を教えてください。

デモでは、OrderSendでAsk/Bidを指定しているにもかかわらず、Expert Advisorがすべての注文を開かず、エラー129(間違った価格)を出し、スリッページはリザーブになっています。 Expert Advisorを削除すると、ターミナルが10秒間ハングし、ログに次のように表示されることに気づきました。

テスターでは、エラーや不具合はありません

ファイル:
 
Igor Makanu:

ライブラリはフリーズしない

履歴のダウンロードはExpert Advisorでのみ可能で、ヘルプファイルにはインジケータで使用しないようにと書かれています。

KBや論文にあるような指標は、マルチシンボルやマルチカレンシーで検索してください。


ここでは、著者は配列の初期化を別のライブラリに置いていますが、何の意味があるのでしょうか?

Функции для инициализации массивов расположим в подключаемом файле InitArrays.mqh
 
psyman:


作者は配列の初期化を別ライブラリにした そうですが、その意味は何ですか?

私は知らない、記事は2013年からで、多分それ以前の記事の著者として行う必要があった、KBからの例(それはヘルプにもある)は、問題なくEAとスクリプトで 動作し、私は自分自身を使用する - 私は何の問題も気づいていない

別のタイムフレームやシンボルからデータを受け取るインジケータを 書く必要がある場合、 著者の例で それを見つけることができます。

 
ここで質問です。チャートに200本のバーを設定し、iBars()が200本(0を考慮しなければ201本)を返した場合、アーカイブの右側から5本削除すると、バーは 195本になり(iBars()は195本を返す)、チャートは短くなります。そうすると、1小節ずつ増えていって、一度に5本読み込まないことに気がつきました。とても不思議なことに、とても大きな部分を飛ばすと、1小節ずつカウントされるので、レフティチェックをしなければならないのです。iBars()関数はどのように動作するのでしょうか?接続があるときにすべてのバーを一度に返すのでしょうか、それとも他の方法で動作するのでしょうか?
 
Seric29:
ここで質問です。iBars()は200本(0を考慮しなければ201本)を返し、アーカイブの右側から5本のバーを削除したらバー数が 195本になり(iBars()は195本を返す)、チャートが短くなったので、接続を有効にしたらこの5本はチャートにも引用アーカイブにも表示されました。そうすると、1小節ずつ増えていって、一度に5本読み込まないことに気がつきました。とても不思議なことに、とても大きな部分を飛ばすと、1小節ずつカウントされるので、レフティチェックをしなければならないのです。iBars()関数はどのように動作するのでしょうか?接続があるときにすべてのバーを一度に返すのでしょうか、それとも他の方法で動作するのでしょうか?

環境全体が完全に同期されるまで、欠落しているデータを段階的に取得する。1本のバーが完全にロードされると同時に、バーの本数の値も増えています。欠けているバーの数はすぐには戻ってきません。完全に同期されたデータの数だけが戻ってきます。

 
Artyom Trishkin:

環境全体が完全に同期されるまで、欠落しているデータを徐々にロードしていきます。1 本のバーが完全にロードされると同時に、バーの数がインクリメントされる。欠けているバーの数はすぐには戻ってきません。完全に同期されたデータの数だけが戻ってきます。

なるほど、シャープバーフィードに対して計算しているだけで、例えば5本バーが足りない、ネットワークをオンにすると、データをロードして必要なだけ時間をかけ、iBars() 関数が1本以上の差がありうるバーの本数を 返す、という1対1の動作だと思っていたのです。そのため、棒を1本ずつ送り出すように計画しました。そうすると、コードを書くのは簡単になりますが、大きな欠落部分がある場合、ロボットにとって無駄な作業が発生してしまいます。この仕組みは信頼できるのでしょうか、それともハングアップしたり、1セグメントずつ読み込むのではなく、全セグメントを読み込んでしまうようなことが起こるのでしょうか。