错误、漏洞、问题 - 页 1027

 
Rosh:
该账户因过度的交易活动而被交易服务器禁止。交易平台保护自己,禁用那些无意识地在每个tick上发送交易请求 的账户。

贸易查询可以理解,那里有一个修改。这就是战略的设计方式。我不知道专家顾问现在将如何工作,但我在每个tick上都禁用了修改。我请你帮个大忙--把账户重新打开。它有3个月的历史了,统计数字很好。

 

Al_key:

/portable开关会有帮助吗?

要么永久禁用/portable,要么禁用UAC,重启后在没有/portable开关的情况下运行终端

 
avoitenko:

Bild 842/64位。当宣布canva。

出现了一个错误。

未解决的静态变量'CCanvas::m_default_colors'。

我是唯一有这个问题的人吗?
对静态变量的要求已经改变。

错误发生的原因是你在全局层面使用了一个带有静态变量的对象,在这种情况下,编译器要求明确地放置一个静态数组。
这对于程序员明确指定静态类/结构成员的初始化顺序 是必要的。

这里的问题是,静态数组'CCanvas::m_default_colors'可以在 CCanvas 构造函数中用于读取,然后如果程序员在放置 CCanvas 类对象后对其进行初始化,其在 CCanvas::CCanvas 构造函数中的值将不是预期的。因此,编译器正在检查以确保静态类/结构成员在类/结构对象被使用之前被放置和初始化。

我们会考虑一下,也许我们会改变一些东西。

Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 

继续切换到mcuel 5。在mt4中,这段代码工作正常。现在我有一个连接到mkuell的问题。

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import

int i = 0;
int mysql;
string query;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag=0;
   int port=3306;
   string socket="";
   int
   res=mysql_real_connect(mysql,host,user,password,DB,port, socket,clientflag);
   int err=GetLastError();
   if (res==mysql) Print("connected");
   else Print("error=",mysql," ",mysql_errno(mysql)," ");
   
 
   
   //mysql_real_query(mysql,query,length);
   //int myerr=mysql_errno(mysql);
   //if (myerr>0)Print("error=",myerr); else Print(i, "good"); 

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
      mysql_close(mysql);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+

它给出了一个错误。

2013.08.03 12:41:41 testMySql (AUDCAD,H1) error=313111904 2005

有一个关于socket变量类型不匹配的警告,把NULL代替变量并没有帮助。我还听说,МТ5以一种特殊的方式将字符串传输给DLL。是这样的吗?请告知如何处理。

 
mql5:
对放置静态变量的要求已经改变。
因此,编译器检查静态类/结构成员是否在使用类/结构对象之前被放置和初始化。
谢谢你。现在一切都说得通了。
 
Al_key:
我还听说MT5以一种特殊的方式向DLL发送字符串。是那种东西吗?如何应对,请指教。
这篇文章 中,有一个连接到MySQL数据库的实际例子。
 
另一个问题:第一次安装MT5标准,模拟账户是metaquotes。我只看到4对主要货币,没有美元兑加元。一段时间后,增加了很多不同的对子,包括CFD和Knaadec。然后我就改成了/portable。当然,最小的货币对又是默认设置的,但这次其他货币对由于某些原因没有被加载,在第五个MT里有USDCAD演示是非常重要的。
 

我记住了TF,切换到M1,再回到当前的。

问题:我不记得 分配给当前的TF

int current_period_tf;
   string n;
   if(_Period==PERIOD_M1)  {current_period_tf=0x00000001;};
   if(_Period==PERIOD_M2)  {current_period_tf=0x00000002;};
   if(_Period==PERIOD_M3)  {current_period_tf=0x00000004;};
   if(_Period==PERIOD_M4)  {current_period_tf=0x00000008;};
   if(_Period==PERIOD_M5)  {current_period_tf=0x00000010;};
   if(_Period==PERIOD_M6)  {current_period_tf=0x00000020;};
   if(_Period==PERIOD_M10) {current_period_tf=0x00000040;};
   if(_Period==PERIOD_M12) {current_period_tf=0x00000080;};
   if(_Period==PERIOD_M15) {current_period_tf=0x00000100;};
   if(_Period==PERIOD_M20) {current_period_tf=0x00000200;};
   if(_Period==PERIOD_M30) {current_period_tf=0x00000400;};
   if(_Period==PERIOD_H1)  {current_period_tf=0x00000800;};
   if(_Period==PERIOD_H2)  {current_period_tf=0x00001000;};
   if(_Period==PERIOD_H3)  {current_period_tf=0x00002000;};
   if(_Period==PERIOD_H4)  {current_period_tf=0x00004000;};
   if(_Period==PERIOD_H6)  {current_period_tf=0x00008000;};
   if(_Period==PERIOD_H8)  {current_period_tf=0x00010000;};
   if(_Period==PERIOD_H12) {current_period_tf=0x00020000;};
   if(_Period==PERIOD_D1)  {current_period_tf=0x00040000;};
   if(_Period==PERIOD_W1)  {current_period_tf=0x00080000;};
   if(_Period==PERIOD_MN1) {current_period_tf=0x00100000;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

我可以切换到M1

ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);

对于一个物体

ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);

它的作用。对于一个图表

ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

编译器给出了

'current_period_tf' - can't convert enum

有什么神秘之处?

我试着通过字符串和改变类型进行更新转换,但没有效果。

 
Al_key:
另一个问题:第一次安装MT5标准,模拟账户是metaquotes。我只看到4对主要货币,没有美元兑加元。一段时间后,增加了很多不同的对子,包括CFD和Knaadec。然后我就改成了/portable。自然,又是默认的最小货币对,但这次由于某些原因,其他货币对没有被加载,我非常希望在第五个MT里有USDCAD演示。
默认情况下保存配置的配置文件 文件 - 配置文件 - 默认情况
 
Silent:

...

有什么神秘之处?

我试着通过字符串和改变类型来转换,但没有成功。

int current_period_tf;
ENUM_TIMEFRAMES current_period_tf;