int ErrReaction(int err)
{
switch(err)
{
case ERR_TRADE_NOT_ALLOWED :
Print("TRADE NOT ALLOWED ! SWITCH ON option \' Allow live trading\' (Необходимо включить опцию \'Разрешить советнику торговать\')");
case ERR_INVALID_FUNCTION_PARAMSCNT :
case ERR_INVALID_FUNCTION_PARAMVALUE :
case ERR_INVALID_STOPS :
case ERR_INVALID_TRADE_VOLUME :
case ERR_MARKET_CLOSED :
case ERR_TRADE_DISABLED :
case ERR_NOT_ENOUGH_MONEY :
return(-err);
case ERR_NO_CONNECTION :
............................................
case ERR_BROKER_BUSY :
case ERR_TRADE_CONTEXT_BUSY :
..............................
case ERR_PRICE_CHANGED :
case ERR_OFF_QUOTES :
case ERR_REQUOTE :
.................................................
default: break;
}//switch(err)return(0);
}//int ErrReaction(int err)
また、無条件にゼロにするのではなく、last_error_fifo ==0 のときだけゼロにする。要するに、 プロファイルの卵と同じで、エラーをチェックする前に、関数が何を返したかをチェック するのだ。
トピックを展開する。
まさに、あなたのために、参照してください。
OrderSend() 終了オプション。
1.エラーはありません。それでもGetLastError()を呼び出します。原理的には、前のエラーを読み込んで処理し、リセット すればOKです。
IMHO - その必要はありません。
2.エラーがある -GetLastError ()を呼び出すとき、私が理解する 限り、多くのエラーがあるかもしれませんが、1つの単一のエラーを分析します。
IMHOでは、その方が正しい。
最後はErrReaction(err) で、これはエラー処理です。
例えば、このように.
処理機能は、エラーを「修復可能なもの」と「修復不可能なもの」に分け、「修復可能なもの」は排除しようとし、「修復不可能なもの」のコードは、外部(呼び出し)手続きでの処理のために、戻ってくる。
まあとにかく、私のゴキブリは、各関数が何を返したかをチェックする必要がないので、コードの見栄えが良くなり、よりクールになりました...。さらに、独自のエラーコードを 整理することができます。
さらに、独自のエラーコードを整理することができます。
自分たちでも作れそうな量になりました。
それはあなたのロジック次第です。結局のところ、すべてのエラーの 処理を行うことができ、この状況では重要なものだけを行うことができるのです。
もちろん、最も重要なエラーをすべて処理する機能があることが望ましく、その場合はExpert Advisor固有のロジックで優先順位を「調整」することになります。
別に、私の質問がトピックの主要な方向から離れるようであれば、トピックスターターには申し訳ないのですが。
私たちもどうにかして、自分たちで作れるだけの量を確保しています。
MQL5の発明者が一生懸命にSetUserErrorを作るのは誰なのか...。65535個ものエラーコードを 自分用に予約し、それ以上のものは自分でアレンジしてOK :)
あなたのために、ご覧ください。
2.エラーがある -GetLastError ()を呼び出したとき、私の理解では 、多くのエラーがあるかもしれませんが、1つの単一のエラーを分析します。
IMHO - より正しいバリアント。
最後はErrReaction(err) で、これはエラー処理です。
vit46:
Ознакомьтесь с этим материалом. imho, не повредит.
https://www.mql5.com/ru/forum/131373
もちろん、最も重要なエラーをすべて処理する機能があることが望ましく、そうすればExpert Advisorに内在するロジックが優先順位を「修正」してくれるでしょう。
例えば、私は「5回注文を出してやめればいい」と思っていますが、皆さんは「20回注文を出せば勝てる」と思っているかもしれません。
私などは、5回注文を開けてみてやめるだけで十分だと思うのですが、皆さんは20回試したり、「勝つまで」開けなければいけないと思っているのかもしれませんね。
いいえ、何も数えていません。私自身の確固とした明確な意見がないからこそ、最もまともな誤り訂正機能を推奨していただきたいのです。