文章 "轻松快捷开发 MetaTrader 程序的函数库(第十部分):与 MQL4 的兼容性 - 开仓和激活挂单的事件" - 页 6

 
Sam Zabil:
您好。您确实做了一项伟大而必要的工作。对于您的工作,我们表示衷心的感谢!但有一个问题。您在账户上工作时用于测试的 Expert Advisor(智能交易系统)会修改所有订单和仓位,无论货币对的大小和差异如何。例如,您把它放在欧元上,同时另一只猫头鹰站在另一种货币上,并在那里持有它的订单和头寸。您点击您的顾问修改利润或止损,它不仅会拉出欧元,还会拉出终端中的所有东西。这是不对的。谢谢您的理解。

您好。智能交易系统仅用于测试文章中的材料。每篇文章都附带一个测试智能交易系统,每个智能交易系统只能用于测试其制作目的 - 文章中描述的库,智能交易系统就取自该库的文件。

当整个系列文章完成后,您就可以使用所述库轻松创建自己的程序了。

 
Alexey Viktorov:

Artem 我回放了当时的情况。

脚本关闭了昨天的所有未结头寸。我没有给账户下任何订单,但昨天的订单已经关闭。有删除订单的记录。而且不止一条。有三次 "此事件已在列表中 "的记录。

然后我又下了三个仓位,并再次用脚本平仓。一切又发生了。三个仓位关闭...三次尝试删除已在历史记录中的仓位。

尽管你不喜欢日志,我还是直接从 "专家 "选项卡中输入。

在 USDJPY 开仓时(记录的底线),没有未结头寸和挂单

复制、发现、更正。

在 CEventCollection 类的 Refresh() 方法中,您需要添加 第 233 行(该行可能有不同的数字,因为我在不断开发中):

//--- 如果账户历史记录中的某个事件
   if(is_history_event)
     {
      //--- 如果历史订单数量增加 (MQL5, MQL4)
      if(new_history_orders>0 #ifdef __MQL4__ && new_market_pendings<0 #endif )
        {
         //--- 仅获取已删除的挂单列表
         CArrayObj* list=this.GetListHistoryPendings(list_history);
         if(list!=NULL)
           {
此修复将包含在第 12 条中
 
谢谢。我加了进去。行号没变。
 
Alexey Viktorov:
谢谢。我添加了它。行号没有改变。

很好

 

我写的是另一条线。

感谢您,Artem,为我们提供了如此精彩、内容丰富的系列文章

 
Aleksei Mikhanoshin:

我写的是另一条线。

感谢您,阿尔捷姆,为我们提供了如此精彩、内容丰富的系列文章。

不客气,阿列克谢。我们是老朋友了.....。

 
感谢大家的答复。我完全理解这个小组的目的。我只是喜欢这个面板。顺便说一下,我通过魔术排序位置表和订单解决了我的问题。老实说,我太懒了,没有马上进入代码。
 
Sam Zabil:
感谢大家的答复。我完全理解这个小组的目的。我只是喜欢这个面板。顺便说一下,我通过魔术排序位置表和订单解决了我的问题。老实说,我太懒了,没有马上进入代码。

嗯,这很好。

事实上,我们已经可以获取所有列表,并从中获取任何对象。还可以根据需要对列表进行排序,并根据任意值进行筛选。为此,可以对获取的列表使用 CSelect() - 在类库 方法中有相关示例。

因此,访问、选择和过滤都很方便。到目前为止,只有必要数据库的创建工作正在进行中。

 
想法是好的。但我认为 fxsaber 已经实现了这一点。
 
Sergey Seriy #:
想法是好的。但我认为 fxsaber 已经实现了这一想法。

您可以使用 fxsaber 的作品