来自一个 "傻瓜 "的问题 - 页 24

 
tol64:
我可以举个简单的例子吗?
显示在哪一行发出警告的代码,以及它在对什么类型的人发誓。
 
sergeev:
显示警告是在哪一行发出的,以及它担心的是什么类型的代码。

void OnStart()
  {
//--- выведем всю информацию, доступную из функции AccountInfoInteger()
   printf("ACCOUNT_LOGIN =  %d",AccountInfoInteger(ACCOUNT_LOGIN));
   printf("ACCOUNT_LEVERAGE =  %d",AccountInfoInteger(ACCOUNT_LEVERAGE));
   bool thisAccountTradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_ALLOWED);
   bool EATradeAllowed=AccountInfoInteger(ACCOUNT_TRADE_EXPERT);

   ENUM_ACCOUNT_TRADE_MODE tradeMode=AccountInfoInteger(ACCOUNT_TRADE_MODE);           // На этой строке: Строка 25 Столбец 40 и Столбец 78
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);   // И на этой     : Строка 26 Столбец 44 и Столбец 86

...
在代码中强调和评论。
 
tol64:

在代码中强调和评论。

   ENUM_ACCOUNT_TRADE_MODE tradeMode=(ENUM_ACCOUNT_TRADE_MODE)AccountInfoInteger(ACCOUNT_TRADE_MODE);
   ENUM_ACCOUNT_STOPOUT_MODE stopOutMode=(ENUM_ACCOUNT_STOPOUT_MODE)AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE);

 
uncleVic:

谢谢你。我还想问一下关于设置止损水平的模式。我只能发现这个模式,因为它是由交易服务器设置的,还是我可以改变它?
 
tol64:
谢谢你。我还想问一下关于设置止损水平的模式。我只能发现这种模式,因为它是由交易服务器设置的,或者我可以改变它?
停止输出是只读的,你不能设置它。而AccountInfo...()函数所操作的一切,都是只读的。
 
tol64:

在代码中强调和评论。

谢谢你,这个例子已经改正了。现在,编译器将不会对这个例子发出警告。
 

事实证明,只要需要读取某些数据/属性,就应该应用uncleVic 展示的变体:https://www.mql5.com/ru/forum/3775/page24#comment_84143

例如,如果你这样做,乍一看似乎很合乎逻辑(从mql4 过渡中也很熟悉),那么编译器会产生一个警告。

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

为了摆脱编译器的警告,你必须这样做。

   int val_x_dist;
   int val_y_dist;
   
   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

或者说,正如维克叔叔 所展示的那样,那是。

   Create_Label(0,"INFO","//-------------------- INFORMATION --------------------//",ANCHOR_RIGHT_UPPER,CORNER_RIGHT_UPPER,font,font_sz,fnt_clr_hdr,10,20);
   
   ENUM_OBJECT_PROPERTY_INTEGER val_x_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_XDISTANCE,0);
   ENUM_OBJECT_PROPERTY_INTEGER val_y_dist = (ENUM_OBJECT_PROPERTY_INTEGER)ObjectGetInteger(0,"INFO",OBJPROP_YDISTANCE,0);

我说对了吗?

 
AUser:
你能告诉我随机数生成器 是如何工作的,是否有一个功能来检查数字是否为偶数/奇数?关于发电机,最好是用傻瓜都能理解的语言来解释)))。帮助不被理解))。

这里有一个最简单的例子,说明如何找出一个特定的函数在做什么。运行该脚本并查看日志。

void OnStart()
  {
   int x;
   
   x = MathRand();
   
   Print("x : ",x);
  }
 
#define Vrsn "0.01a"
#property version   Vrsn

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn);

该模板被保存为0.tpl

#define Vrsn "001a"

模板被保存为001a.tpl,这实际上是你想得到的东西。

问题:我怎样才能事先去掉这个点呢?

升级可能更准确:我如何在一个字符串中找到一个字符?

升级和另一个混乱。如果有一个点在

#define Vrsn "0.01a"

有一个点,它不仅切断了它后面的内容,而且还切断了被压扁的内容。

ChartSaveTemplate(Chrt_Smbl_ID_Crrnt,Vrsn+Smbl_Crrnt);
为什么? 如果StringToInteger 在编译时被触发...
 
Silent:

该模板被保存为0.tpl

模板被保存为001a.tpl,这实际上是你想得到的东西。

问题:我怎样才能事先去掉这个点呢?

升级可能更准确:你如何在一个字符串中找到一个字符?

还有一个误解。如果在

有一个点,它不仅会切断它后面的内容,也会切断被压扁的内容

如果在编译时,StringToInteger 被触发,为什么?

所有被写入磁盘的东西都必然被检查为垃圾和恶意的。

如果你写了一个模板,无论用户想要什么,模板都应该是一个扩展名为tpl的文件。这就是为什么名称中的用户定义点被剪掉了。