文章 "DoEasy 函数库中的时间序列(第五十八部分):指标缓冲区数据的时间序列" - 页 2

 
Alexander:

在 TestDoEasyPart56 中的 void OnInitDoEasy() 函数末尾,我插入了以下代码,以便

获取从 D'2020.12.11 10:00' 到当前日期的历史订单 集合。但我一个也没有得到

这段代码没有给出订单。

在 Print(list_positions.Total()); 的地方,我得到了 "0"。

OnInitDoEasy() 并不打算在其中工作。您需要使用该函数来正确初始化程序库。在 OnTick 中工作
 
Artyom Trishkin:
OnInitDoEasy() 并不打算在其中工作。需要使用该函数来正确初始化程序库。在 onTick 中工作

我把它插入了 onTick() 没有任何变化:

//| 专家勾选功能|
//+------------------------------------------------------------------+
void OnTick()
  {
//-- 在程序库中处理 NewTick 事件
   engine.OnTick(rates_data);

//--- 如果在测试仪中工作
   if(MQLInfoInteger(MQL_TESTER))
     {
      engine.OnTimer(rates_data);   // 定时器操作
      engine.EventsHandling();      // 使用事件
     }
   
//--- 如果设置了拖尾标志
   if(trailing_on)
     {
      //TrailingPositions(); // 跟踪位置
     // TrailingOrders(); // 跟踪挂单
     }
     CArrayObj* list_positions=engine.GetListHistoryOrders();
           // list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_SYMBOL,Symbol(),EQUAL);
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_TIME_CLOSE,D'2020.12.10 10:00',MORE);
            //--- 选择利润大于零的仓位
            list_positions=CSelect::ByOrderProperty(list_positions,ORDER_PROP_PROFIT,0,MORE);
            if(list_positions!=NULL)
              {Print("OK1");
               //--- 按利润排序 
               //list_positions.Sort(SORT_BY_ORDER_PROFIT);
               list_positions.Total();
               Print(list_positions.Total());
               //--- 获取利润最高头寸的指数
               int index=CSelect::FindOrderMax(list_positions,ORDER_PROP_PROFIT);
               if(index>WRONG_VALUE)
                 {Print("index= ",index);
                  COrder* position=list_positions.At(index);
                  if(position!=NULL)
                    {
                     //--- 获取利润最高头寸的票据,并根据票据平仓
                     Print("OK");
                     Print(engine.GetListDeals());
                    }
                 }
              }
  }
 
Alexander:

将其插入 onTick() 没有任何变化:

示例中的每个 EA 都有一个代码块,用于选择和关闭 利润最高的仓位。您可以通过类比来实现。我的手机根本无法查看。
 
Artyom Trishkin:

是什么阻止了你写信亲自领取这枚奖章?

我没有要求那就给你吧。这是你应得的;)

 
Aleksey Mavrin:

我没有权利要求。给你吧。这是你应得的;)

谢谢我不想要。还是留给别人吧。

 

遗憾的是,MT5 编程社区在相互改进代码 和创建公共作品帮助方面并不强大。例如,编写帮助的人总是在不断提高自己对代码的理解。

也许这样最好!我想我还是会阅读 DoEasy 周期的所有文章。我已经读到了第 34 条,我想告诉你,这仍然是一个诙谐的联合行动))。Pohodu 读后认为,这种软件艺术没有构造图是很糟糕的, 但我认为也许你需要思考一下才是最好的。


从文章中得出的结论是非常多的,特别是对于业余程序员,其中大多数贸易商novadais.Pohodu阅读认为,这是不好的,没有图表的建设,这种软件的艺术,但我认为也许是最好的,你需要思考一下。谢谢!希望以后有更多的文章。

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 

妈的,为什么每个人都要求这个证书?SB 有帮助,那又怎样?我只有在忘记某个方法的具体名称时才会用到它,这比打开类说明要快一点)。

在 SB 的时间序列中,有一种方法可以改变缓冲区的大小。如果没有这个方法,时间序列的工作 就会受到限制,而且帮助中也没有关于默认值的说明。

因此,如果有代码的话,为什么要提供有缺陷的帮助呢?

不管怎么说,要开始认真使用,就应该从接口开始深入研究代码。

所以不要用帮助来分散 Artyom 的注意力,让他做他能做的事情吧)。

 
Aleksey Mavrin:

妈的,为什么每个人都要求这个证书?SB 有帮助,那又怎样?我只有在忘记某个方法的具体名称时才会用到它,这比打开类说明要快一点)。

在 SB 的时间序列中,有一种方法可以改变缓冲区的大小。如果没有这个方法,时间序列的工作 就会受到限制,而且帮助中也没有关于这个方法和默认值的说明。

因此,如果有代码的话,为什么要提供有缺陷的帮助呢?

无论如何,如果要开始认真使用,您应该从接口开始并进一步阅读代码。

所以不要用帮助来分散 Artyom 的注意力,让他做他能做的事情吧)。

这项工作还很繁重,需要在 gitHub 上注册并获得证书。