【これで差がつく!MT5のひと工夫】DELibインクルードファイルの作成、操作ログ表示のため注文の理由、方向、取引の種類を返す3つのメソッド

ライブラリとそれに基づくプログラムにはさまざまなサービス関数が必要です。ライブラリのルートディレクトリに新しいインクルードファイルを作成します。ライブラリクラス自体とライブラリベースのプログラムの両方で使用できるサービス関数のライブラリファイル「DELib」を作成します。

Order.mqhファイルのincludeディレクティブを置き換えます。Defines.mqhからDELib.mqhに置き換えます。また、Defines.mqhファイルのマクロ置換として、日本語の定義を追加します。この関数はターミナルの言語を確認し、それがCOUNTRY_LANGマクロ置換で指定された言語と一致する場合は、最初の関数パラメータで渡されたテキストが表示されます。それ以外の場合は、2番目の関数パラメータに含まれているテキスト(英語)が表示されます。

DELib.mqhファイルに、2つの言語のいずれかでメッセージを返すための関数を追加します。

ミリ秒で時間を表示する関数も追加します。秒単位で時間を計算するには、関数に渡される値を1,000で割る必要があります。ミリ秒を計算するには、この除算の残りを取ります。受け取った値はすべて文字列としてフォーマットされ、呼び出し側プログラムに返されます。

銘柄ロットの小数桁数を取得する必要がある場合もあるかもしれません。この関数をサービス関数のファイルに入力しましょう。

//+------------------------------------------------------------------+
//| 銘柄ロットの小数桁数を返す              |
//+------------------------------------------------------------------+
uint DigitsLots(const string symbol_name) 
  { 
   return (int)ceil(fabs(log(SymbolInfoDouble(symbol_name,SYMBOL_VOLUME_STEP))/log(10)));
  }
//+------------------------------------------------------------------+

サービス関数に加えて、操作ログにメッセージを表示するために注文の理由、方向、取引の種類を返す3つのメソッドが必要になります。COrderクラスの保護されたセクションに3つのメソッドを追加します。

   //--- (1)理由、(2)方向、(3)取引の種類を返す
   string            GetReasonDescription(const long reason)            const;
   string            GetEntryDescription(const long deal_entry)         const;
   string            GetTypeDealDescription(const long type_deal)       const;

以下、使用されているのがMQL4かMQL5であるかが確認され、検証後にその説明が返されます。

  • 入力で渡された注文理由が注文状態に従って検証される。
  • 入力で渡された取引方向が注文状態に従って検証される。
  • 入力で渡された取引の種類が注文状態に従って検証される。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ABOUTこの記事をかいた人

当サイトは、システムトレードに関する専門的な知識、技術、経験を皆様と共有することで、真剣なトレーダーの方々にインスピレーション(アイデアの源泉)の供給をいたします。トレーダーの競争力強化に焦点をあて、トレーディングシステムの構築を目的としてその普及に貢献します。 詳細は「概要とサービス内容」をご覧下さい。 ご要望はこちらで承ります。