"ダミー "からの質問 - ページ 213

 
lazarev-d-m:

最も簡単な挿入方法の一つ

コードが動作するかどうか、または条件が真であるかどうかをチェックしたい場合(つまり、すべての条件が真で、アクションを実行しなければならない場合)。

私は、例えば、関数が全く実行されたかどうか、EAがそれに到達したかどうかを確認するために、異なるテキストで各複合関数の内部にアラートを挿入 しています。

もしかしたら、いくつかの条件を使っていて、それが常に偽になっているのかもしれません。

ありがとうございます。
EAがエラーもなくただ停止し、ターミナルを再起動するとまた動き出す。
動作するかどうかをプログラムで確認する方法を教えてほしい。緑色で、ログにエラーはないけれど。
そして、そのチェック機能の後に、アラート、プリント、コメントなどを入れることにしています。
 
G001: Expert Advisorが動作しているかどうかを確認する方法を教えてください。

ログにエラーはないのですが、EAが時々動かなくなり、ターミナルを再起動しないと元に戻らないことです。

Expert Advisor が時々動作 しなくなる」ことの定義がよくわかりません。もしかしたら、無限ループが始まるだけかもしれません。そのログは空で、Expert Advisorはノンストップで動作しています。あるいは、何か他の特別な機能がついているのかもしれません。

 

この記事の質問に対する回答が必要です: https://www.mql5.com/ru/forum/3775/page215#comment_379520

誰か答えを知っていますか?

 
tol64: この投稿の質問に答えたいのですが、https://www.mql5.com/ru/forum/3775/page215#comment_379520 どなたかご存知でしょうか?

直接的な答えはないようで、推測の域を出ません。

そこで、ライセンスの種類は、Mql5InfoInteger(MQL5_LICENSE_TYPE) を使って調べることができます。つまり、ENUM_LICENSE_TYPE 列挙のすべての可能な値のうち、いくつかが返されます。また、例外処理として、操作時間制限値(LICENSE_TIME)は、指定された列挙の前の3つの値と共に返すことはできない。特に、LICENSE_TIME LICENSE_DEMO と同時に返してはならない。

このような理由で、"マーケット向けの有料プログラムは、デモテストで時間制限をかけられることが暗示されているか?"という質問には、否定的な答えを出すことになります。なぜなら、マーケットからの有料製品のデモは、独自の識別子であるLICENSE_DEMOを持って いるからです。

 
Yedelkin:

直接的な答えはないようで、推測の域を出ません。

そこで、ライセンスの種類は、Mql5InfoInteger(MQL5_LICENSE_TYPE) を使って調べることができます。つまり、ENUM_LICENSE_TYPE 列挙のすべての可能な値のうち、いくつかが返されます。また、例外処理として、操作時間制限値(LICENSE_TIME)は、指定された列挙の前の3つの値と共に返すことはできない。特に、LICENSE_TIME LICENSE_DEMO と同時に返してはならない。

このような理由で、"マーケット向けの有料プログラムは、デモテストで時間制限をかけられることが暗示されているか?"という質問には、否定的な答えを出すことになります。なぜなら、マーケットからの有料製品のデモは、独自の識別子であるLICENSE_DEMOを持って いるからです。

LICENSE_TIMEは LICENSE_DEMOと LICENSE_TIMEの 両方を含むことができると思うのですが、どうでしょうか?MQL5_VISUAL_MODEや MQL5_TESTINGなどの識別子が分かりやすい例です。つまり、どちらもテスターの中にいることを知らせてくれるのです。))

では、実際に開発者はこの識別子に何を入れたのでしょうか。また、一般的に、一部の有料プログラムのデモモードの時間を制限する可能性がないのであれば、そのような可能性があると良いと思います。なぜなら、買わなくても、自分の番組に使うと非常に利益が出るオプションがあるかもしれないからです。)))

 
tol64: そして、LICENSE_DEMOと LICENSE_TIMEは、同時にLICENSE_TIMEに 含まれることができると思います。

確かに、参考文献の用語の特殊性を完全に見逃しており、そのために除外方法が何らかの理由で誤った結果を導く可能性があることは、私も同意見です。

 
tol64: また、一般的に、いくつかの有料プログラムのデモモードでの時間を制限する可能性がない場合、そのようなオプションがあるといいと思います。買わなくても、自分の番組に使うと非常に儲かるオプションがあり得るからです。)))
そして、この提案をサービスデスクに直接するのです。同時に、物事の本質を見極めましょう :)
 
Yedelkin:

EAが動かなく なることがある」という判断がよくわからないのですが。もしかしたら、無限ループが始まるだけかもしれません。ログは空ですが、Expert Advisorは停止せずに動作しています。あるいは、何か別のクセが引き金になっているのかもしれません。

ループはありません。1日に10~20回と結構な頻度で開くのですが、チャート上にインジケーターのシグナルが出ているのにEAがポジションを開いていない場合は、機能していないことになります。端末を 再起動すると、再び動作するようになりました。
 
G001 チャート上にシグナルが表示されているのに、Expert Advisorがポジションをオープンしていない場合、Expert Advisorが動作していないことを意味します。

これは主題に近づいていますね。つまり、EAがインジケーターのシグナルに反応しなくなることが判明したのですね。しかし、それはEAが「動かない」ということではありません。おそらく、今でも効果はあるのでしょうが、作者の意図するところとは違うのでしょう。

例えば、10分間などのタイマーをセットしてみましょう。そして、Expert Advisorにとって重要な指標をすべてプリントアウト します。数値が経年変化するかどうかを確認する。この場合もログが空であれば、ぜひコードのコピーを持ってサービスデスクに相談に行くべきです。

追加です。あるいは、こんなアイデアもあります。コード内にifのような条件がある場合、トリガー後にどの取引要求が送信 されなければならないかがあります。例えば、この条件が発動した場合/しなかった場合を出力してみてください。

if ()
  {
   ... 
   Print("Сработало условие такое-то, время такое-то");
  }
else
  {
   ...
   Print("Не сработало условие такое-то, время такое-то");
  }
 
ありがとうございます。EAに問題がある可能性は低く、そうでなければターミナルを再起動するルールが常に機能するわけではありません。また、MT4でも一部のブローカーで問題になっています。ただ、次の信号の前に再起動するために、動作しなくなった時にプログラムでチェックする必要がありますね。プリントとコメントの両方を追加しました。