2017-01-19 6 views
1

朝、適切なエラー処理のためにMetaTrader4 Error Code Refreshを使用するには?

私のエキスパートアドバイザーがエラーを起こしたときに電子メールでpingを実行すると、私はEAに「セットアップ」を行い、あらかじめ決められた3-4桁のエラーコードdocumentation on the MQL4 website

/* technically speaking, 
    error codes with 5+ digits are also possible, 
    Using: 
    ------               */ 
    SetUserError(1000000);           /* 

// this will set an error-state 
// with a number 1065536 -- having a bit more than the said 3 ~ 4 digits 
// composed as (1000000 + ERR_USER_ERROR_FIRST) 
*/ 

これは私が問題を診断できるようにするためです。

エラーコードを更新する必要があるかどうかを確認したいのですが(以前のエラーから)私の電子メールを受け取っていますか、それとも自動的にこれを行うのですか?私のMT4プラットフォームのジャーナル?

すべてのヘルプは高く評価され:)

答えて

1

ようこそ、
を明示的にゼロに_LastErrorを設定し、参考になっ機能ResetLastError()があります。
次に、GetLastError()関数の呼び出しの副作用もあります。これは、0を_LastError変数に設定するためです。

いずれかの方法で、
(サラウンド)を埋め込むのが一般的であるいくつかのエラー状態が右で、それに応じて扱わを取得する必要があるセクション、:

// -------------------------------------------- // START_________________________ 
    GetLastError();       // implicit pre-reset _LastError 
    ResetLastError();       // explicit pre-reset _LastError 
    bool an_OK_flag = OrderModify(...);  // XTO call w ex-post _LastError 
    int anErrorSTATEtoHANDLE = GetLastError(); /* get a value of the _LastError 
               + implicit post-reset _LastError */ 
// -------------------------------------------- // HANDLE ERROR-STATE(s) 
    switch(anErrorSTATEtoHANDLE){ 
     case ERR_NO_ERROR:      break; 
     case ERR_NO_RESULT:      ... 
                break; 
     case ERR_INVALID_TRADE_PARAMETERS:  ... 
                break; 
     case ERR_SERVER_BUSY:     ... 
                break; 
     case ERR_BROKER_BUSY:     ... 
                break; 
     case ERR_TOO_MANY_REQUESTS:    ... 
                break; 
     case ERR_TRADE_MODIFY_DENIED:   ... 
                break; 
     ... 
     default:         break; 
    } 
// -------------------------------------------- // FIN __________________________ 

これはに対するあなたのコードが堅牢に"忘れた"(偶然にリセットされない)最後のエラー(そのようなエラーが出現した場所であなたのコード実行をクラッシュさせていないが...)エラー処理セクション、
したがって

は、電子メール信号が存在しないが、_LastErrorシステムレジスタ内の「忘れた」(リセットされていない)値が、同時にエラー処理のケースと一致した場合に電子メールを送信し、 (あたかも電子メール信号が存在するかのように(これは上記の通りではない)。

とにかく、日& ハッピー取引を楽しむ

+1

感謝、ありがとうございます。返事が遅れて申し訳ありません。 –

関連する問題