欢迎光临散文网 会员登陆 & 注册

量化交易软件:赫兹股票期货量化软件概念上的飞跃

2023-08-17 17:00 作者:大牛啊呢  | 我要投稿

在该规划过程中,还有最后一个阶段。 虽然这一部分对于现代计算机来说并不那么尖锐,但它仍然需要加以考虑:处理时间的优化。 该问题与处理器必须执行的操作数量有关,而非与处理信息所需的时间有关。 拟议中的浮动窗口系统包含四个对象,它们应该能够响应您的动作从而四处移动。 相应地,在观察窗口中的任何信息都将会受到窗口自身修改的影响。 至少图表交易会增加对象的数目。 虽然没有相应的计算成本,但代码变得令人不快,似乎优化得很差劲。 我们可以简单地添加一个控制系统,如此来解决问题。 但有一个更优雅的建议。 虽然它看起来更耗时、更费力,但实际上减少了所需维护和操控的对象数量。


实现

首先,我们把浮动窗口的创建过程分为几个步骤,以便支持代码重用。 接下来,我们将在 C_ChartFloating 对象类中创建两个新函数:

//+------------------------------------------------------------------+ bool StageLocal01(string sz0, ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT, int Scale = -1) {        m_LimitX = (int)ChartGetInteger(Terminal.Get_ID(), CHART_WIDTH_IN_PIXELS);        m_LimitY = (int)ChartGetInteger(Terminal.Get_ID(), CHART_HEIGHT_IN_PIXELS);        if (m_MaxCounter >= def_MaxFloating) return false;        CreateBarTitle();        CreateCaption(sz0);        CreateBtnMaxMin();        CreateRegion(TimeFrame, Scale); m_Win[m_MaxCounter].handle = ObjectGetInteger(Terminal.Get_ID(), m_Win[m_MaxCounter].szRegionChart, OBJPROP_CHART_ID);                                        return true; } //+------------------------------------------------------------------+ void StageLocal02(int x, int y, int w, int h) {        y = (y < 0 ? m_MaxCounter * def_SizeBarCaption : y);                                    m_Win[m_MaxCounter].PosX        = -1;        m_Win[m_MaxCounter].PosY        = -1;        m_Win[m_MaxCounter].PosX_Minimized = m_Win[m_MaxCounter].PosX_Maximized = x;        m_Win[m_MaxCounter].PosY_Minimized = m_Win[m_MaxCounter].PosY_Maximized = y;        SetDimension(w, h, true, m_MaxCounter);        SetPosition(x, y, m_MaxCounter);        ChartRedraw(m_Win[m_MaxCounter].handle);        m_MaxCounter++; } //+------------------------------------------------------------------+

添加浮动窗口的新代码如下所示:

bool AddIndicator(string sz0, int x = 0, int y = -1, int w = 300, int h = 200, ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT, int Scale = -1) { if (!StageLocal01(sz0, TimeFrame, Scale)) return false;        ChartApplyTemplate(m_Win[m_MaxCounter].handle, sz0 + ".tpl");          m_Win[m_MaxCounter].szVLine = (string)ObjectsTotal(Terminal.Get_ID(), -1, -1) + (string)MathRand();        ObjectCreate(m_Win[m_MaxCounter].handle, m_Win[m_MaxCounter].szVLine, OBJ_VLINE, 0, 0, 0);        ObjectSetInteger(m_Win[m_MaxCounter].handle, m_Win[m_MaxCounter].szVLine, OBJPROP_COLOR, clrBlack);        StageLocal02(x, y, w, h);        return true; }

这不会影响已组装完毕的系统,但提供了更佳功能。 注意高亮显示的行:现在我们将创建一个函数来使用我们的 IDE。 开头如下图所示:

bool Add_RAD_IDE(string sz0, int x, int y, int w, int h) {        if (!StageLocal01(sz0, PERIOD_CURRENT, -1)) return false;        StageLocal02(x, y, w, h);        return true;


量化交易软件:赫兹股票期货量化软件概念上的飞跃的评论 (共 条)

分享到微博请遵守国家法律