無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
スクリプトを気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

Result - type-safe error handling for MQL5 without exceptions - MetaTrader 5のためのライブラリ

Maksym Yaroslavovych Libovych
Maksym Yaroslavovych Libovych
  • Software Engineer | .NET | MQL5 | NinjaTrader において  Self-employed
  • ウクライナ
  • 180
MQL5 Developer — Expert Advisors & Custom Indicators | NinjaTrader, QuantConnect
• I build and maintain algorithmic trading systems in MQL5 — Expert Advisors, custom indicators, and strategy backtesting/optimization.
| Japanese English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
ビュー:
17
評価:
(1)
パブリッシュ済み:
\MQL5\Include\Common\ \MQL5\Include\ \MQL5\Scripts\
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

目的

このインクルードファイルは、MQL5向けに「成功かエラーか」を示す戻り値型を提供します。これにより、関数はグローバル変数であるGetLastError()/ResetLastError() を通じてではなく、明示的に成功または失敗を報告できるようになります。グローバル変数による処理は、忘れられやすく、上書きされやすく、またアウトパラメータや「魔法のような」戻り値を強制してしまうという問題があります。


機能

関数は、値またはエラーのいずれかを保持する 1 つのオブジェクトを返します。呼び出し側は、値を使用する前にチェックを行う必要があります。

  • ResultValue<T> 値型(数値、構造体)用。
  • Result<T> ポインタで保持されるオブジェクト(クラス)に対する同様の契約。
  • Error 軽量な構造体(コード + 説明)。コードは EnumToString を通じて読みやすい名前にマッピングされます。
  • MQLError GetLastError / ResetLastError / SetUserError をラップしたシンプルなラッパー。
  • マクロ — TRY RETURN_ON_ERROR PRINT_ON_ERROR RETURN_SAME_ON_ERROR RESULT_ON_ERROR 定型コードを記述することなく、早期リターンを伝播させるためのものです。
  • オプションのコールバック — Then Match MapError これらはトップレベル関数または静的関数を受け取ります。MQL5にはクロージャがありません)。

アクセサ: Value () 、 ValueOr (fallback) 、 CurrentError () 、 IsError () 。

使用方法

エラー処理

// ステージ関数(トップレベル — MQL5にはクロージャがない)
ResultValue<double> EnsurePositive(const double &value)
{
   if (value <= 0.0)
   {
      return ResultValue<double>::Fail("price must be positive");
   }
   return ResultValue<double>::Ok(value);
}

ResultValue<double> ToPips(const double &price)
{
   return ResultValue<double>::Ok(price / _Point);
}

Error Describe(const Error &error)
{
   return Error::Create(error.code, "pipeline failed: " + error.description);
}

void OnOk(const double &value)  { PrintFormat("[pipeline] result = %.1f pips", value); }
void OnFail(const Error &error) { PrintFormat("[pipeline] %s", error.description); }

// パイプライン:読み込み → 検証 → 変換 → (エラーの注釈付け) → 処理
void RunPipeline()
{
   SymbolDouble("EURUSD", SYMBOL_BID)
      .Then(EnsurePositive)
      .Then(ToPips)
      .MapError(Describe)
      .Match(OnOk, OnFail);
}

MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/74427

SimpleTradeStats SimpleTradeStats

成約取引の統計。 この指標は取引実績を示しており、マジックナンバーによるフィルタリングが行われています。

V1N1 LONNY MT5 V1N1 LONNY MT5

アジア時間帯のレンジブレイクアウトをターゲットとしたデイトレード用EA。複数銘柄対応、M15/M30/H1。PSAR+MACD+ストキャスティクスのシグナルを用いて、ロンドンセッション開始前のアジア時間帯のレンジ外で指値ストップ注文を発注します。ロンドン/NYの夏時間対応、構造的ストップ、トレーリングストップ、ブレークイーブン機能を搭載しています。

Pip Value Calculator Pip Value Calculator

リアルタイムのPIP値、リスクベースのロットサイズ設定、カスタマイズ可能な取引量リスク分析、および建玉の損益――これらすべてが1つのパネルに集約されています。

SR Zone Scanner SR Zone Scanner

強弱評価と即時アラート機能を備えた、複数時間足対応のサポート・レジスタンスゾーンスキャナー — M15、H1、H4、D1。