错误、漏洞、问题 - 页 2648

 
Vladimir Karputov:

点击其中一栏的标题:符号、票据、时间。

用你的左手键点击。

它起作用了,谢谢你,我以前关闭过几次错误的配对。
 
Сергей Проценко:
根据利润情况,如果利润较高,就往下走,另一个订单的利润较高,就调换位置。如果欧元的利润高于黄金的利润,欧元的订单将在底部,而黄金的订单将在其上方。

您已按利润排序。选择一个不同的排序标准。

 
fxsaber :
你能告诉我如何绕过一个编译错误 吗?

这并不像它看起来那么复杂。

 #define  PRINT(x) ; Print ( #x,  ":" , string (x))

struct STRUCT_BASE
{
   static const int Array[];
};
static const int STRUCT_BASE::Array[] = { 1 , 2 };

struct STRUCT : STRUCT_BASE
{
   int Array2[ sizeof (Array)];
};


void OnStart ()
{
   static const int Array[] = { 1 , 2 };
   int Array2[ sizeof (Array)];
  
  PRINT( ArraySize (Array));             //2 
  PRINT( ArraySize (Array2));           //8
  
  
  STRUCT s;
  PRINT( ArraySize (s.Array));           //2
  PRINT( ArraySize (s.Array2));         //8
}
 
Sergey Dzyublik:

这并不像它看起来那么复杂。

谢谢你,我还没来得及说到基本的那个。

 
无法检查代码库,找不到主文件,但它是存在的。请找出原因(如果版主可以)。我正在考虑回到博客上发表文章--那里没有这样的问题。
 
Stanislav Korotky:
我无法检查代码库,它说找不到主文件,但它就在那里。请找出原因(如果版主可以)。我正在考虑回到博客上发表文章--那里没有这样的麻烦。

将mq5放在 "默认 "文件夹中。

 

有两个关于MT5编译器(build 2321)的问题。

#define  PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      //MQL:2         
}

////ERRROR: 'func' - template functions overloading is not supported yet
//template<typename T>     
//void func(T &it1){ 
//  printf("C++:2");                               
//}
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                       //MQL:1        
}

template<typename T>
void func(A<T> &it1){
   printf("C++:3");                       //MQL:3
}


void OnStart(){
   B<int> b;
   func(b);
}

int main(){
   OnStart();
   return 0;
}

1.MQL中执行模板函数的优先级与C++中的模板函数不一致(在线:https://onlinegdb.com/Hkvz8Hu7L)
所以在C++中,当三个模板函数都存在时,结果为 "C++:1 "的模板函数被执行,如果它被删除,则 "C++:2 "被执行,如果它被删除,则 "C++:3 "被执行。
MQL中的优先级是相当不同的:"C++:2",其次是 "C++:1 "和 "C++:3"。


不清楚为什么第一个函数在MQL中被禁止,而带有假参数的相同函数已经被允许。

//ERRROR: 'func' - template functions overloading is not supported yet
template<typename T>     
void func(T &it1){ 
  printf("C++:2");                               
}

// OK
template<typename T>         
void func(T &it1, T* = NULL){
   printf("C++:2");                              
}
 

大家好。

有人遇到过测试多币种 机器人的问题吗?

是否正在下载EA所需的所有货币对?

我试图测试两个货币对,例如EURUSD GBPUSD。

如果我在EURUSD上测试(测试EURUSD GBPUSD)--结果是1。

如果我们在GBPUSD上测试(测试EURUSD GBPUSD),结果是2,即不同的

如果我们测试USDCHF(测试EURUSD GBPUSD)--结果是3,也就是不同的



结果没有什么不同,几十笔交易(在2个月内),但每个货币对的结果都不同(尽管我们测试了某些欧元兑英镑兑美元货币对)。

我马上就会假设:整个代码是通过变量Symb工作的,它从循环中获取Symbol()。即单一的代码,但在代码里面给Symb变量分配了它自己的值。


可能是这样的,由于不同货币对的报价、点数、历史质量不同(欧元兑美元和英镑兑美元总是被测试),不同货币对的测试结果也不同?

I.e.

会不会是对欧元兑美元进行了测试,而对英镑兑美元则需要更少的报价?

и

有没有可能是为GBPUSD设置的测试,而为EURUSD下载的报价较少?

 
fxsaber:

将mq5放在 "默认 "文件夹中。

我很清楚,主模块应该是没有文件夹的--它是,他们自己通过下拉下载按钮右侧的选项 "完成 "的默认文件夹。

它不起作用。

 
在C++中,它可以编译和工作(在线:https://onlinegdb.com/Syn90dd7I),但在MQL中,错误:"'func'--对重载函数的模糊调用"

#define  PRINT(x) ; Print(#x, ":", string(x))
#ifdef __cplusplus
    #include<iostream>
#endif


template<typename T>
class A{
};

template<typename T>
class B : public A<T>{
};

template<typename T>
class C : public B<T>{
};


template<typename T>
void func(B<T> &it1){
   printf("C++:1");                      
}

template<typename T>
void func(A<T> &it1){
   printf("C++:2");                      
}


void OnStart(){
   C<int> c;
   func(c);            //ERROR: 'func' - ambiguous call to overloaded function
}

int main(){
   OnStart();
   return 0;
}