記事"MQL5でのエラー処理とロギング"についてのディスカッション - ページ 2

 
Михаил:

セルゲイ

トレードサーバーのリターンコードは そういう時のためにあるんだ。

例フリーファンドの可用性をチェックし、肯定的な結果を受け取った。

注文を出したが受理されなかった、

取引サーバーはリターンコードに "Insufficient funds "というエラーを表示します。

ミハイル、私がこのことを理解していないとでも?:)

OK、私の言い分と記事の考えを訳すと、まず事前チェックをしてから結果をチェックする。トレード(トレードサーバーのリターンコードの こと)にはこだわらない:

1) 例えばファイル:まず、そのようなファイルが存在するかどうかをチェックし、存在しない場合は、データを作成して書き込む。その後、その結果を確認する。

2) 例えばグラフィカル・オブジェクト:まず、そのようなオブジェクトが存在するかどうかをチェックする。なければ作成され、そうでなければ移動された(座標が変更された場合)。その後、何が得られたかをチェック。

など。ほとんど、何かに依存して失敗する可能性がある。


では、やはり定義/要約してみよう。 あなたの主な不満は、取引サーバーのエラーリターンのコードと、それに対する可能なプログラムの反応が考慮されていないことですか?

1点目について - これはすべてドキュメントにあります。
2点目について - 記事を読めば、可能な反応は明白になると思われます。

しかし、もしあなたが私に同意しないのであれば、最も簡単な解決策は、それについて記事全体を書くことです。個人的には、私自身がそれについて書く必要はないと思う。あなたにとってそれほど重要なことなら、ぜひそうしてください。

追伸:MQL4/5はエキスパートアドバイザーだけの問題ではないと思います。もちろん、あなたにとってはエキスパート・アドバイザーがほとんどでしょう。しかし、例えば、この2ヶ月間、私はEAの2倍のインジケーターを作ってきました。ですから、すべては非常に主観的なものなのです。

 

セルゲイ!

あなたの記事に不満はない。

 

こんにちは、

記事をありがとうございました!

あなたのCLoggerクラスを自分のプロジェクトで使っても いいですか?

ところで:mql5.comの記事/ソースコードはどのようなライセンスに属していますか?

よろしくお願いします、

アレックス

 

MT5を使っています。

バックテストで先生の例を使うと、mylogはC:︙Program FilesMetaTrader 5 TerminalTesterAgent-127.0.0.1-3000︙MQL5︙Filesというフォルダに書き込まれます。

楽をするために、個人用のフォルダ、例えば「C:︙MT5Personal︙Logs︙mylog」に入れて おこうと思った。

しかし、いつもエラー5002が出るし、名前のサイズは255バイトを超えない。

何が悪いのでしょうか?

ありがとうございました。

 
残念ながら、非常に効率の悪いロガーだ。使ってみたかったのだが、自分で自転車を発明するしかなさそうだ ;-)。
 

ロガーの効率について...java言語も最初にロガーを作り、その後長い間苦しまなければならなかった。

javaでは、この問題はvar argsを使うことで解決されたが、MQL4/5では使えない。何が問題なのか?- まずerror.toString()を呼び出し、次にすべての文字列を`CLogger::log(string1 + string2 + string3...);`で連結し、最後に得られた文字列を出力すべきかどうかをチェックします。


その代わりにどうすればいいでしょうか?- 特に目新しいものはなく、同じJavaで標準になっているものです:

if(CLogger::isLevel(LOG_LEVEL_INFO))

CLogger::log(文字列1 + 文字列2 + 文字列3);`。

もちろんこの場合、ファイルへの ロギングやprintfなど、異なるロガーが必要になる。

 

1つのファイルだけに縛られている。もし2つ持っていなければならないとしたら?印刷だけが必要なものと、ファイルに書き込む必要があるものがあるとしたら?柔軟性がない。デファインを通して呼び出すのではなく、オブジェクトの生成を通して 呼び出す必要がある。

例えば、印刷とファイルへの書き込みをしたい。例えば、印刷とファイルへの書き込みを同時に行いたい。

 

宝物です!ご寄稿ありがとうございました!

乾杯、ザリック