错误、漏洞、问题 - 页 2793

 
Alexey Viktorov:

我甚至没有注意到有一个GIF......我现在已经看了,但它太快了,我没有时间去理解它。只是注意到你没有显示 "交换 "一栏,这正是故事中单独计算的内容。或者用文字和数字来解释。

我很惊讶自己没有注意到残疾人的交换栏。

谢谢你,问题解决了。

 
Andrey Khatimlianskii:

我很惊讶我自己没有注意到残疾人的交换栏。

谢谢你,问题解决了。

Hooray¡¡¡¡,我们赢了。

 
当使用ChartSetSymbolPeriod时,OnDeinit函数返回1 程序已从图表中删除,而逻辑上它应该返回3 图表的符号周期被改变
 

问题是,如果if(...)条件得到满足,就不应该有任何东西打断循环。

if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };


这里有一段视频



以下是完整的脚本代码

void OnStart()
  {
//---
   
   double tvp  = SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE_LOSS),
          vm   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN),
          vs   = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP),
          ml   = AccountInfoDouble(ACCOUNT_EQUITY) * 0.015,
          cv   = -1.0,
          loss = 0.0;
   
   for(int i = 0; i < 20000; i++)
     {
      Print(i);
      //if( (vm + vs * (double)i) * tvp * 250.0 < ml ) { cv = vm + vs * (double)i; Print(i,": L/ML - ",cv," / ",ml); };
      /*loss = cv * tvp * 250.0;
      Print(NormalizeDouble(loss,2));
      Print(NormalizeDouble(ml,2)); Print(" ");
     */};
   
  }
 
Alexandr Sokolov:

问题是,如果if(...)条件得到满足,就不应该有任何东西打断循环。

你的代码类似于这样

double a = 3;

for(int i = 0; a > 300; i++)
{
 if(a != 3)
  Print("Никогда такого не будет");
}
 

我的指标由于某种原因开始丢失图形对象,并且不删除它们。我在类的析构器中使用自动删除。我称它为。

ObjectDelete(chartID, name);

结果,我得到一个假阳性。我调用GetLastError(),得到错误4101("Errorychart identifier")。假设。我比较了被删除的图形对象的chartID和ChartID()函数的结果,它们是完全一样的。没有从图表中删除对象的原因可能是什么,我怎样才能绕过它?

 
Mihail Matkovskij:

我的指标由于某种原因开始丢失图形对象,并且不删除它们。我在类的析构器中使用自动删除。我称它为。

结果,我得到一个假阳性。我调用GetLastError(),得到错误4101("Errorychart identifier")。假设。我比较了被删除的图形对象的chartID和ChartID()函数的结果,它们是完全一样的。没有从图表中删除对象的原因可能是什么,我怎样才能绕过它?

我也有类似的问题 https://www.mql5.com/ru/forum/1111/page2785#comment_17002122

也许创作者会对此有所行动 )

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2020.06.22
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

这里没有任何反馈,似乎在说,这个话题只是为了发泄另一个不愉快的发现的负面情绪 )


#include <Arrays\ArrayObj.mqh>

class CPosition:public CObject
{
   public:
      string      meTicket;
      CPosition::CPosition(string inT)
      {this.meTicket = inT;}         
};

class CColl:public CArrayObj
{
public:
   string   meWrongProperty;
CPosition  *operator[](const int index) const { return (CPosition*)At(index);} 
};

class CCollOfColl:public CArrayObj
{
public:
CColl  *operator[](const int index) const { return (CColl*)At(index);} 
};



void OnStart()
{
   CCollOfColl lCOC;
   CColl       *lC;
   
   lC = new CColl();
   lC.Add(new CPosition("00"));
   lC.Add(new CPosition("01"));
   lCOC.Add(lC);
   
   lC = new CColl();
   lC.Add(new CPosition("10"));
   lC.Add(new CPosition("11"));
   
   lCOC.Add(lC);
   
   for(int i=0;i<lCOC.Total();i++)
     {
       for(int j=0;j<lCOC[i].Total();j++)
         {
          printf(lCOC[i][j].meTicket);
          lCOC[i][j].me
         }
     }
}


我认为编辑应该建议使用meTicket而不是meWrongProperty )

 

图片2530

在结构的第三个附件上,没有智能体出现。

//+------------------------------------------------------------------+
//|                                                   TestStruct.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------------------------------------------------
struct STRUCT_TIME_IN_FORCE
{
   string GTC; 
   string IOC;  
   string FOK; 
}; 
//----------------------------------------------------
struct STRUCT_SYMBOLS  
{
   string               symbol;                
   STRUCT_TIME_IN_FORCE timeInForce;            
};

//----------------------------------------------------
struct STRUCT_EXCH_INFO  
{
   string         timeZone;      
   long           serverTime;     
   STRUCT_SYMBOLS symbols[];  
};


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   STRUCT_EXCH_INFO Info;
   ArrayResize(Info.symbols, 10);
   
   Info.symbols[0].timeInForce. //??? На третьем вложении не появляется интеллесенс

}
//+------------------------------------------------------------------+
 
Dmytryi Voitukhov:

在EA市场上检查时,批号计算发生错误。

测试器中没有错误。

代码简单得不能再简单了。这里面怎么会有错误呢?

阅读文章交易机器人在市场上发布前要通过哪些测试

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