错误、漏洞、问题 - 页 2066

 
fxsaber:

这似乎是该语言的错误行为,因为它限制了可能性。

我需要将一个常量字段定义为一个结构。我以为复制操作符会起作用,但编译器想用构造器代替,因为语法相似。但这是错误的。

它是正确的,因为它是毫不含糊的(它在初始化列表中总是一个构造函数,而不是一个操作符),它在另一个方面是错误的。

struct S {
        S()                        { Print( __FUNCSIG__ ); }
        void operator=( const S& ) { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        S s;
        S s1 = s;

}

结果。

void S::S() (1)
void S::S() (2)
void S::operator=(const S&) (3)

而C++没有输出第(2)和(3)行,因此也没有用默认构造函数赋值运算符 的共生体来替换缺失的复制构造函数

 

如果一个BMP对象的资源被删除,然后又被创建,那么这个BMP对象就不再看到它的资源。这是一个错误。现在你必须删除该对象并重新创建它。

 
fxsaber:

如果一个BMP对象的资源被删除,然后又被创建,那么这个BMP对象就不再看到它的资源。这是一个错误。现在你必须删除该对象并重新创建它。

你能给我们看看代码吗?为什么要删除一个资源,你可以覆盖/修改它而不删除它。
 

情况。

第三方专家顾问的一个市场头寸已经被OrderSelect(ticketNumber,SELECT_BY_TICKET)成功选择,并在循环中尝试关闭它(该票据上的订单选择是在关闭尝试循环之前进行的)。


我得到一个错误。

2017.11.10 06:00:33.806 ExpertName EURCAD,H1: unknown ticket 1846978258 for OrderClose function

票是可以的。


很自然,我们的EA可以独立关闭该订单,所以

在循环的每个迭代中,我们检查

if(OrderCloseTime()!=0) break;


这并没有得到预期的结果,而且关于错误票号的信息在整个周期内显示了30次。

是手气不好,还是选择的订单丢失了,是个错误?

或者错误数字可能没有准确反映情况/问题?


更新。

我发现,仓位不是由原生EA关闭的,而是由我们关闭的那个。

然而,在循环错误4108之前,我们得到一个一次性错误3(尽管在错误3被记录之前,订单已经被关闭)。

 
Kirill Belousov:

自然地,本地EA可以独立地关闭这个订单,所以

在循环的每一次迭代 中,都要进行检查。

我们也要做OrderSelect

 
Andrey Barinov:
你能给我看看代码吗?为什么要删除资源,你可以重新下载/修改它而不删除它。

当然,在没有删除的情况下重新加载,没有任何问题。删除后,问题。

#define  WIDTH 100
#define  ARGB(a,r,g,b)  ((uchar(a)<<24)|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))

bool Set( const string Name, const uint &Data[], const uint Width )
{
  return(ResourceCreate(Name, Data, Width, (Width == 0) ? ArraySize(Data) : ArraySize(Data) / Width, 0, 0, Width, COLOR_FORMAT_ARGB_NORMALIZE));
}

void Test( const string Name )  
{
  static uint Data[WIDTH * WIDTH];
  
  for (uchar i = 0; i < 100; i++)
  {
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    ArrayInitialize(Data, ARGB(0xFF, i, i, 0));
    
    Set(Name, Data, WIDTH);
    
    ChartRedraw();
    
    Sleep(50);
  }
  
  ResourceFree(Name);  
}

void OnStart()
{  
  const string ObjName = __FILE__;
  const string Name = "::" + ObjName;
  
  ObjectCreate(0, ObjName, OBJ_BITMAP_LABEL, 0, 0, 0);
  ObjectSetString(0, ObjName, OBJPROP_BMPFILE, Name);
  
  // Видна работа
  Test(Name);
  
  // Нет результата на экране
  Test(Name);
  
  ObjectDelete(0, ObjName);
}
 

没有来自的信息

系统消息


没有任何信息。 包括,产品信息,产品销售,版主评论,产品验证信息。

 
Vladislav Andruschenko:

没有任何信息来自

系统消息


完全没有。包括 ,产品信息,产品销售,版主言论,产品验证信息。

下午好。

该错误已被修复,我们必须等待网站更新。

我们对造成的不便表示歉意。

 
Julia Test:

下午好。

这个错误已经得到纠正,我们必须等待网站的更新。

对不起,给您带来不便。


谢谢。已经回复了SD。 :-) 等待...

P.S. 之前从未如此安静过....。直接沉默 .........

 
fxsaber:

你也必须做OrderSelect。

我们能否详细了解一下这是为什么?

我们已经成功地在一张票上选择了一个订单。

我们在迭代1中发送了一个关闭命令。

在这个迭代#1,我们收到错误3(无效的交易参数。)不过,该订单已经结束。它是如何被关闭的?

然后我们在迭代2得到错误4108。我们不能用OrderCloseTime!=0来关闭它。


根据文件,在哪个阶段,我们会与票据 选择的顺序 失去联系?

这不是在发送平仓指令后,订单应该被锁定,应该产生错误139而不是4108的情况吗?