错误、漏洞、问题 - 页 564

 
云端工作使用错误。
这个问题的原因是什么?不能使用云资源。
 
Urain:

解释一下。


会议初步宣布 计划中的 变化。下一个 版本的最终 变化清单将 版本本身发布 公布。
 
Rosh:
已经初步宣布了 计划中的 变化。下一个 版本的最终 变化清单将 版本本身发布 公布。
谢谢你。
 

我对指标代码进行了长时间的啃咬,直到我对捕捉错误完全绝望为止。我没有把它写在 "傻瓜 "里,因为我怀疑不是我犯的错误,而是终端工作中的错误。

该指标的目的是将分形从另一个时间框架放置到当前时间框架上,并在新的分形条出现时增加新的分形。请不要提出其他放置分形箭头的方法,这与此无关;我们有关于这个代码的基本问题,也许与终端的不正确操作有关。我从iFractals帮助中抽取了一个例子,为了便于感知,逻辑上缩短了一半(仅对上层分形),并借用了标准Fractals.mq5中的一点代码。为了避免任何误解,我必须非常谨慎:我几乎绑定了所有可能的数组,并清理了工作数组,释放了被调用指标的句柄,这并没有给结果带来任何明显的差异。我们注意到操作中的以下问题和特殊性。

  1. 当我第一次 启动终端,打开一个新的图表窗口,并应用一个新编译的指标时,所有的分形都累积在历史结束时的零条上(似乎只有一个被放置),而不是按照代码的想法和逻辑放置。只有通过跳转到其他时间段(有时甚至不是第一次)才能启动正确的安置。此外,当从图表中删除该指标,关闭图表窗口,重新编译,打开新窗口并应用该指标时,我们几乎总是能够立即获得所需的分形排列。要看到错误的效果,必须完全卸载终端,并重复步骤1的所有步骤。1.也许问题在于被调用指标的句柄的寿命和它在自定义指标 最初启动时的具体行为?在分形排列不正确的情况下(当它们都被 "压缩 "在零条上时),循环中exact_extremum的所有元素的输出结果为零,但TimeUpBuffer的相邻值的输出,在此基础上计算和填充,总是显示一致的不同时间日期。因此,问题是:如果它在接下来的时间里正确地填充了正确的数值,是什么阻止了它在初始指标创建期间被填充?
  2. 同样的代码,继承了同样的问题,但现在强调的是一个完全不同的功能。在这个指标中,我们可以不把一些中间计算的数组作为INDICATOR_CALCULATIONS绑定到指标缓冲区。这是该指标的初始代码。除了P以外,一切似乎都很好。我似乎对一切都很满意,除了第1点。
  3. 但为了非常聪明,让我们尝试遵循最佳建议,将中间计算的数组与指标缓冲区联系起来。
    #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    
    [...]
    
    int OnInit()
      {
       [...]
       SetIndexBuffer(1,PreliminaryUpBuffer,INDICATOR_CALCULATIONS);
       SetIndexBuffer(2,exact_extremum,INDICATOR_CALCULATIONS);
       [...]
      }
    编译和运行。因此,我们将在终端专家顾问的日志中得到一个错误信息。2011.11.11 07:42:03 (AUDUSD,H1) 阵列超出范围,线。
                CopyHigh(_Symbol,PERIOD_M1,TimeUpBuffer[shift+1]-1,
                                           TimeUpBuffer[shift],
                                           exact_extremum);
    
    在一些时间框架上的分形放置不是没有就是零星的。
  4. 发起占卜会议,进行神奇的手传,服从自动书写,以及替换。
    #property indicator_chart_window
    #property indicator_buffers 3
    #property indicator_plots   1
    为。
    #define NUMBER 1
    
    #property indicator_chart_window
    #property indicator_buffers NUMBER+2
    #property indicator_plots   NUMBER
    不管这是否正确,但它不可理喻地起了作用!

我对noosphere的居民,特别是开发人员有一个请求:你能不能解释每一个项目,并建议如何调试指标代码(如果我不改变其实现)。

谢谢,并附上文件。

P.S.: 在文件名中是有括号的,但上传后被破坏了。

 

我如何确定魔法交易的当前利润

这个代码在关闭的交易中返回利润,而我需要在开放的交易中返回。

#include <Trade\Trade.mqh>
CTrade trade;
void OnTick()
  {
   double profit=0;
   if(PositionSelect(Symbol()))profit=PositionGetDouble(POSITION_PROFIT);
   if(profit==0) trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,0.1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),0,0,"");
   if(profit>1) trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,0.1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),0,0,"");
   
   double ld_return=0;  
   HistorySelect(0,TimeTradeServer());
   for(int i=HistoryDealsTotal()-1;i>=0;i--) // По всем сделкам от конца к началу
     {
      ulong ticket=HistoryDealGetTicket(i); // Определение тикета сделки и ее выделение
      if(ticket!=0) 
      {
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)<2)
      ld_return+=HistoryDealGetDouble(ticket,DEAL_PROFIT);
      }
     }     
   Comment(ld_return);   
  }
 

我怎么知道为什么初始化失败?

我在初始化开始前用以下方法重置错误

ResetLastError();

在初始化结束时,我看到一个错误

Print("Ошибка " + IntegerToString(GetLastError()));

我最终进入了专家顾问选项卡

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) 错误0

在 "日记 "标签上

2011.11.11 08:47:51 专家初始化SimpleExpert(EURUSD,H1)失败。

 
Konstantin83:

我如何知道初始化失败的原因?

在开始初始化之前,我用函数重置了错误

ResetLastError();

在最后,我显示一个错误

Print("Ошибка " + IntegerToString(GetLastError()));

我在 "专家 "选项卡中得到以下结果

2011.11.11 08:47:51 SimpleExpert (EURUSD,H1) 错误0

在 "日记 "标签上

2011.11.11 08:47:51 专家初始化SimpleExpert(EURUSD,H1)失败。

OnInit是返回0还是不返回0?
 
stringo:
OnInit是返回0还是不返回0?

OnInit返回真,不知为何错过了。

谢谢,可以了。

 
ddd06:

我如何确定魔法交易的当前利润

这段代码在已关闭的交易中返回利润,但我需要在未关闭的交易中返回。

看看德米特里(Integer)的文章。一切都在那里得到了最佳的实施。文章:通过指定的神奇数字计算累计持仓量的最佳方法
 
下午好,开始写多变量,我叫iMA,不知道为什么在真实交易中一切正常,只要我在测试器中运行就会出现错误专家删除,因为指标'Moving Average'无法加载[4804],指标上是什么,不是很清楚,我在网上找不到一个合理的答案。请提供建议,我将非常感谢你。
Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
Технические индикаторы / iMA - Документация по MQL5