皆さん、こんにちは!今日はMetaTrader 5向けに開発された新しいEA、TradingBoxingについてお話ししたいと思います。このEAは、従来のアイデアを基にしているものの、すべての実装はMQL5で行われ、新しいトレーディングクラスを使用しています。
このトレーディングパネルには、唯一の入力パラメーターとしてマジックナンバーがあります。これはEAのユニークな識別子です。
トレーディングパネルの外観は以下の通りです:

ポジションや保留中の注文のボリュームを表示するために、標準クラス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