TradingBoxing - MetaTrader 5的专业交易助手

Mike 2018.06.18 22:58 22 0 0
附件

在开发这个工具时,我们的灵感来源于TradingBoxing的代码。不过,下面的代码仅仅是基于这个概念,所有的实现都是用MQL5编写,并且采用了全新的交易类。

这个交易面板只有一个输入参数,神秘编号 - 这是EA的唯一标识符。

交易面板的外观如下:

TradingBoxing

为了显示仓位和挂单的数量,我们稍微修改了标准类CSpinEdit,并将其保存为CSpinEditDouble。遗憾的是,由于需要修改声明为“私有”的类成员,我们未能通过继承来创建它。

从类名可以看出,它是为了显示双精度数据而创建的。因此,我们添加了方法DisplayedDigits,用于定义控件中文字显示的精度。

此外,这个控件的文本字段也是可编辑的。例如,当你需要输入的价格或数量与文本字段中的值相差很大时,这将非常有用。为了将文本字段中的内容保存为值,我们在CSpinEditDouble类中增加了EndEdit方法:

   int               m_digits;              // 显示的数字
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

这个方法会将输入的文本记住作为一个值。


方法EndEdit是从事件类CSpinEditDouble中调用的:

//+------------------------------------------------------------------+
//| 通用图表事件处理程序                                   |
//+------------------------------------------------------------------+
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