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

 

こんにちは。

トリプル指数平均に基づくEAは、最後のトレードがSLで取り出された場合、どのようにポジションを開くことを 禁止することができるのか、教えてください。

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

MQL5
通常モードでは問題ないのですが、最適化を開始した途端、実行のたびにエラーが出力され、出力も れなくなりました。

しかし、コードを実行することすらできないのが現状です。プログラムの周りにプリントを貼りましたが、出力はなく、実行のたびにエラーが出て終了してしまいます。

印刷がうまくいかないのはなぜですか?

 
Roman Sharanov:

MQL5
Expert Advisor は通常モードでは問題なく動作しますが、最適化を開始した途端、すべてのパスで配列の限界に 入ったと文句を言われます。

しかし、コードを実行することすらできないのが現状です。プログラムの周りにプリントを貼りましたが、出力はなく、実行のたびにエラーが出て終了してしまいます。

なぜPrintはうまくいかないのか?

配列の大きさを確認する必要があります。配列の外側に出力がある行が表示されます。ここで、この行の前にPrintを挿入する必要があります。この行には、配列のサイズとインデックスの出力を書き、それによって配列データにアクセスしようとしています。配列のサイズとインデックスがログに出力され、その後、プログラムはエラーで終了します。

しかし!この作業は、オプティマイザーではなく、ビジュアルモードのテスターで行ってください。オプティマイザー(および非ビジュアルモードのテスター)では、すべてのプリンターはアクセラレーションが無効になっています。

 
Artyom Trishkin:

Print()に到達する前に配列の外側で終了します。

アレイのサイズを確認します。出力が配列の外にある行が表示されます。この行の前にPrintを挿入して、配列のサイズとインデックスの出力を書き、それによって配列データにアクセスしようとしているのです。

しかし!オプティマイザーではなく、ビジュアルモードのテスターですべて行う。オプティマイザー(および非ビジュアルモードのテスター)では、スピードアップのためにプリンターはすべてオフになっている。

これが問題で、ビジュアルにどんなパラメータを使ってもすべてうまくいくのですが、どんな最適化をしても範囲外になってしまうのです。

 
Roman Sharanov:

これは、ビジュアルに任意のパラメータを指定するとすべて動作するが、任意の最適化を行うと範囲外になる問題である

アレイには何があるのでしょうか?まだ配列にデータがないか、思ったより小さいかのどちらかだと推測されます。プログラムの中で、配列の大き さをチェックすることはありますか?

 
Artyom Trishkin:

アレイには何が入っているのですか?まだ配列にデータが入っていないか、思ったより小さいかのどちらかだと推測できます。プログラムの中で、配列の大きさをチェックすることはありますか?

最後のNは、私は500、macdの値を持っており、サイクルの制限が厳しく、0より小さく、Nより大きくなることはできません、私はそれをデバッグと紙の上にカウントの両方を持っています。

 
Roman Sharanov:

最後のNは、私は500、macdの値を持って、ループの限界は厳密に制限され、0未満とN以上になることはできません、私はそれをデバッグと紙の上にカウントの両方があります

アクセスしたときに、アレイのデータがいっぱいになっていることは確認されていますか?データの有無、配列の値が正しいかどうかのチェックはありますか?

紙に書いて計算したからといって、EAが受け取った(受け取らなかった)ものと一致するわけではありません。

 
Artyom Trishkin:

アクセスしたときに、アレイのデータがいっぱいになっていることは確認されていますか?データが利用可能かどうか、配列のサイズが適切かどうかのチェックはありますか?

紙に書かれて計算されているからといって、Expert Advisorが受け取った(受け取らなかった)ものと一致するわけではありません。

はい、最初に、すべての操作の前に、バッファからコピーされます。

 
取引に手数料やスワップがある場合の損益分岐価格の計算方法は、どのようなものが普遍的なのでしょうか。

5桁の数字で表示され、米ドルで入金される場合、簡単な計算式があります。

ロット×利益(pips)=利益($)です。

買いの場合、取引にスワップや手数料が発生するため、損益分岐点は建値より少し高くなります。
(スワップや手数料がない場合、損益分岐点は始値となる)。

しかし、商品がエキゾチックであったり、気配値が4桁や2桁であったり、入金通貨が ポンドであったりする場合。上記の計算式は参考にならない。
普遍的な公式はあるのか?
 
Roman Sharanov:

はい、最初に、すべての操作の前に、バッファからコピーされます。

コピーしたものです。また、コピーされたものはどの程度チェックされているのでしょうか?

スムージング機能付きのインジケータを使用する場合、予想以上に多くのバーが必要になります。したがって、コピーしたからといって、データがコピーされ、フルサイズで利用できるわけではありません。

配列のサイズを 確認し、必要なサイズがない場合は OnTick() を終了させる方が簡単です。