MetaTrader 5のためのTradingBoxing:新しいEAのご紹介

Mike 2018.06.18 22:58 21 0 0
添付ファイル

皆さん、こんにちは!今日はMetaTrader 5向けに開発された新しいEA、TradingBoxingについてお話ししたいと思います。このEAは、従来のアイデアを基にしているものの、すべての実装はMQL5で行われ、新しいトレーディングクラスを使用しています。

このトレーディングパネルには、唯一の入力パラメーターとしてマジックナンバーがあります。これはEAのユニークな識別子です。

トレーディングパネルの外観は以下の通りです:

TradingBoxing

ポジションや保留中の注文のボリュームを表示するために、標準クラスCSpinEditを少し修正し、CSpinEditDoubleという名前で保存しました。残念ながら、継承を使って作成することはできず、クラスメンバーの宣言を「private」に変更する必要がありました。

クラス名からも分かるように、これはダブル型データを表示するために作成されました。そのため、テキスト表示の精度を定義するDisplayedDigitsメソッドを追加しました。

このコントロールのテキストフィールドも編集可能にしました。たとえば、テキストフィールドの値と大きく異なる価格やボリュームを入力する必要がある場合に便利です。テキストフィールドからのテキストを保存するために、CSpinEditDoubleクラスにEndEditメソッドを追加しました:

   int               m_digits;              // 表示桁数
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

このメソッドは、入力されたテキストを値として記憶します。


EndEditメソッドは、クラスCSpinEditDoubleのOnEventから呼び出されます:

//+------------------------------------------------------------------+
//| チャートイベントの共通ハンドラー                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CSpinEditDouble)
  ON_EVENT(ON_CLICK,m_inc,OnClickInc)
  ON_EVENT(ON_CLICK,m_dec,OnClickDec)
  ON_EVENT(ON_END_EDIT,m_edit,EndEdit)
EVENT_MAP_END(CWndContainer)

取引注文ができるだけ早く処理されるように(非常に静かな市場で、ティックが大きな間隔でしか来ない場合でも)、トレーディングパネルのボタンをクリックするたびに内部ハンドラーCTradingBoxingDialog::OnTick()が強制的に呼び出されます。

リスト
コメント 0