文章 "轻松快捷开发 MetaTrader 程序的函数库(第 二十八部分):延后交易请求之平仓、删除和修改"

 

新文章 轻松快捷开发 MetaTrader 程序的函数库(第 二十八部分):延后交易请求之平仓、删除和修改已发布:

这是有关延后请求概念的第三篇文章。 我们将创建平仓、删除挂单、修改持仓和挂单参数等方法来完成延后交易请求的测试。

这是有关于延后请求概念的第三篇文章。 在本文中,我们将创建平仓、删除订单、以及修改持仓的止价订单/挂单参数等方法来完成概念测试。

此外,我们还略微改进了抽象订单类,添加了两个订单和仓位属性的返回值 — 订单填充和到期类型。 基准跨平台交易对象的所有交易方法的代码都已略微优化。 没必要在此讨论这些修改。 反之,我将展示修改的方法之一作为单独示例。

作者:Artyom Trishkin

 

你好,Artyom,你为指针分配动态内存 来执行下面的工作有什么特殊原因吗?

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq *req=new CPendingReq();
   if(req==NULL)
      return WRONG_VALUE;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   delete req;
   return index;
  }

依我之见,我认为使用一个普通的局部变量 会使方法更简单,并且可以去掉上面多余的指针处理代码

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq req;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   return index;
  }

我很想知道你选择前一种方法的理由......也许我错过了一些最佳实践?

/dima

 
ddiall :

你好,Artyom,为指针分配动态内存 来执行下面的工作有什么特殊原因吗?

依我之见,我认为使用一个普通的局部变量 会使方法更简单,并且可以去掉上面多余的指针处理代码

我很想知道你选择前一种方法的理由......也许我遗漏了某些最佳实践?

/dima

Search() 方法 使用对象指针:

 int Search(
   CObject*  element       // 样本 
   ) const 
 
Artyom Trishkin:

Search() 方法 使用指向对象的指针:

没错......但难道不能在调用该方法时传递局部变量的指针吗?

int index=this.m_list_request.Search(GetPointer(req));
 
ddiall :

啊,对了......但难道不能调用方法并传递局部变量的指针吗?

你可以用不同的方法...我已经这样做了......:)

 
Artyom Trishkin:

你可以用不同的方法...我已经这样做了......:)

酷,谢谢 - 我只是想确认一下我的理解,因为我还在阅读文章和研究代码;-)
 
ddiall:
酷,谢谢 - 我只是想确认一下我的理解,因为我还在阅读文章和研究代码;-)
好的。不客气 :)
 
   CEventsCollection*GetObject(void)                                                                     { return &this;