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

 
Urain:

MQの最も簡単な解決策は、関数にパラメータを与えることです。

変数ではなく、配列がパラメータとして存在するようになりました。もちろん、EA間でデータを転送する方法はないので、この解決策は一方的なものですが、それでも何もしないよりはましです。

さらに良いのは、次のようなものです。

void SendData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])
void GetData(const int handle,const long &lparam[],const double &dparam[],const string &sparam[])

特定の受信者に送信し、特定の送信者から受信できるようにすること。そして、チャートだけでなく、ハンドルネームも公表してください。まあ、そんなところでしょうか。

 

エキスパートアドバイザーからインジケータウィンドウを削除し、復元する必要があります。しかし、計算されたデータは一定である。

簡単な方法は、データを計算するためのインジケータ(「Calculate」と呼ぶことにしましょう)と、データを別のウィンドウに表示するためのインジケータ(「Plot」と呼ぶことにしましょう)を作成することです。Plot」 インジケータはiCustom("Calculate")から呼び出されますが、Expert AdvisorもiCustom("Calculate")の前に呼び出されています。これらは同じパラメータで呼び出されます。どこかで書きましたが、同じパラメータを持つ2つのインジケータは1つのチャートに作成されるのではなく、すでに開始されているインジケータ処理のメインハンドルを 参照する追加のハンドルが 作成されるそうです。

そこで質問ですが、EAからPlotを 削除して再度追加した後、Plotで 起動したCalculate インディケータは再度計算されるのでしょうか、それともEAで起動したCalculate インディケータの計算データを取り込むだけなのでしょうか?

 
Urain:

どこかで書きましたが、同じパラメーターを持つ2つのインジケーターは1つのチャートに作成されず、すでに実行中のインジケータープロセスのメインハンドルを 参照する追加ハンドルが 作成されるだけだそうです。

MQL5 リファレンスガイド / テクニカルインジケーター /テクニカルインジケーターを操作するための関数 です。

"iMA、iAC、iMACD、iIchimokuなどのすべての機能は、クライアント端末のグローバルキャッシュに適切なテクニカル指標のコピーを作成 します。これらのパラメータを持つインジケーターのコピーが既に存在する場合、新しいコピーは作成されませんが、このコピーへの参照のカウンターはインクリメントされます。

これらの関数は、対応するインジケータ・コピーのハンドルを返します。このハンドルを使って、対応するインジケーターで計算されたデータを続けて取得することができます..."

""すること1つのmql5プログラム内で、同じパラメータでインジケータ関数を複数回呼び出しても、参照カウンタは何度も増加せず、カウンタは1回だけ1増加 します ...".

 
Yedelkin:

MQL5 リファレンスガイド/ テクニカルインジケーター /テクニカルインジケーターを操作するための関数 です。

...

""すること 1つのmql5プログラム内で 同じパラメータでインジケータ機能に複数回アクセスしても、インジケータカウンタは複数回増加せず、カウンタは1回だけ1増加 します ...".

はい、まさにその通りです。ご指摘ありがとうございます。

このセリフは正確には理解できない。Expert Advisorで起動するインジケータを1つのプログラムと考えることは可能ですか、それとも2つのプログラムであることを意味しますか?

最初の仮定が成立していれば、すべてOKなのです。しかし、コンパイラがそれらを別のプログラムとして扱うのであれば、問題がある。

 
Urain:

EAの中で動いている指標は、1つのプログラムとして考えていいのか、それとも2つのプログラムを意味しているのか?

1.ハンドブックには、「iMA、iAC、iMACD、iIchimokuなどのすべての機能は、対応するテクニカル 指標のコピーを クライアント端末のグローバルキャッシュに作成 します」と書かれています。

iMA、iAC、iMACD、iIchimokuなどのすべての関数は 特定のmql5-programから呼び出され、クライアント端末のグローバルキャッシュに適切なテクニカルインジケータの コピーを作成します」と解釈しています。したがって、「EA Eが指標Iを実行する 」という一般的な表現は、EA Eが関数Iを呼び出して、クライアント端末のグローバルキャッシュに指標のコピーを作成し、EA Eにそのコピーのハンドルを受け取らせることを意味する。

2. 「EA Eが指標関数Iを呼び出す」場合、「1つのmql5プログラム内で」指標関数を呼び出すことを意味します。

 
ここから420ビルドをダウンロードしましたhttps://www.mql5.com/ru/forum/23/page11 しかし、実際には412がインストールされます。私の問題なのか、それともmetaquotes.netの ファイルを変更するのを忘れたのか?
Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:.
 
Yedelkin:

1.リファレンスマニュアルには、「iMA、iAC、iMACD、iIchimokuなどのすべての関数は、クライアント端末のグローバルキャッシュに 関連するテクニカル指標のコピーを 作成 します」と書かれています。

iMA、iAC、iMACD、iIchimokuなどのすべての関数は 特定のmql5プログラムから呼び出され、 クライアント端末のグローバルキャッシュに適切なテクニカルインジケータのコピーを作成します」と読みました。したがって、「EA Eが指標Iを実行する 」という一般的な表現は、EA Eが関数Iを呼び出して、クライアント端末のグローバルキャッシュに指標のコピーを作成し、EA Eにそのコピーのハンドルを受け取らせることを意味する。

2) 「EA Eがインジケータ関数Iを呼び出す」ということは、「1つのmql5プログラムの中で」インジケータ関数を呼び出すという話です。

了解しました。ここでのキーワードは「クライアント端末のグローバルキャッシュに」である。

もしそうなら、すべてOKです。もうひとつ、疑問が明らかになりました。

 
a483483:
ここから420のビルドをダウンロードしますhttps://www.mql5.com/ru/forum/23/page11 でも実際には412がインストールされます。私は問題を持っているか、またはmetaquotes.netの ファイルを変更するのを忘れている?

それで待っていれば、最新のバージョンに更新されるはずです。

SZSは、ターミナルを起動したままにしておくと、しばらくしてターミナルに「こんなバージョンをダウンロードしました」というメッセージが表示され、ターミナルを再起動するように指示されるはずです。

 

こんにちは。

420リリースにアップグレードした後、私は自分のEAをテストし始め、それが何らかの理由で「負ける」ようになったことに気づきました。自分のトレードを分析したところ、存在しない価格でストップロスが発動していることに気づきました。例えば、EURUSDでストップロスを1.06520に設定しましたが、最大価格は 1.05920ですが、動作しています。さらに見ていくと、そんな案件がたくさんあるんです。テイクプロフィットは、同じ原理で(存在しない価格で)トリガーされます - デルタは同じです - 600ポイントです。チャート上のテスターでは、上下の矢印はバーから遠く離れた宙に「ぶら下がって」います。

スクリーンショットを添付します。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
ファイル:
eurusd.jpg  235 kb
 
Kairoser:

こんにちは。

420リリースにアップグレードした後、私は自分のEAをテストし始め、それが何らかの理由で「負ける」ようになったことに気づきました。自分のトレードを分析したところ、存在しない価格でストップロスが発動していることに気づきました。例えば、EURUSDでストップロスを1.06520に設定しましたが、最大価格は 1.05920ですが、動作しています。さらに見ていくと、そんな案件がたくさんあるんです。テイクプロフィットは、同じ原理で(存在しない価格で)トリガーされます - デルタは同じです - 600ポイントです。チャート上のテスターでは、上下の矢印はバーから遠く離れた宙に「ぶら下がって」います。

スクリーンショットを添付します。

MQサーバーでEAをテストしてみてください。アルパリは、ヒストリカルデータが正しくないという昔の問題がまだ残っているのかもしれません。