新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 436

 
WinProject:
谢谢你!)从你的回答中,我得出结论,对于每一种类型的对象,我都需要制作一个单独的函数。我想,以某种方式,有可能使一个单独的函数开始建立对象,附加到循环中,而主函数则读取文件。斯维奇怎么样?

我可能没有足够深入地了解它。

第一个,所有图形对象的构建,并没有引起任何问题或疑问。但我一定是误解了第二条的意思。显然,问题不在于如何用一个按钮来组织多种类型的对象,而是用一个按钮来组织一种类型的对象。在这种情况下,我会做一个带有对象参数的结构和几个结构数组,每种类型的对象一个数组。而且,我将分别把这些结构数组与相应类型的按钮绑定。

然后,当你按下按钮时,相应的对象类型将被删除。而当按钮被释放时,这些对象将被结构数组中的参数所恢复。

因此,在启动时只需要读取一次文件。

 
Alexey Viktorov:

我可能还没有深入了解它。

第一个,所有图形对象的构建,并没有引起任何问题或疑问。但我一定是误解了第二条的意思。显然,问题不在于如何用一个按钮来组织多种类型的对象,而是用一个按钮来组织一种类型的对象。在这种情况下,我会做一个带有对象参数的结构和几个结构数组,每种类型的对象一个数组。因此,我将把这些结构数组与相应类型的按钮绑定。

然后,当你按下按钮时,相应的对象类型将被删除。而当按钮被释放时,这些对象将被结构数组中的参数所恢复。

因此,在加载时只需要读取一次文件。

非常感谢你的回答,我将尝试做这两种变体,通过STARIJ建议的旗子,你的变体也很有趣,可以尝试一下。 我会尽量少提问题,能得到回答就很高兴了!)
 
STARIJ:

旗帜是变量。或者bool:false=empty,true=raised或int--那么一个数字中同时有很多标志。0 - 全部省略,1=失去了第一,2=失去了第二,3=失去了第一和第二,4=失去了第三,5=失去了第三和第一,6=失去了第三和第二,7=失去了第一、第二、第三,8=失去了第四 ....嗯,这是用二进制代码。你是如何发现的?

谢谢,似乎在网上找到了一个很好的解释,将尝试一下。奇怪的是,在这个网站上,无论是在文档中,还是在教程中,可能都认为来到这里的人都已经有了编程技能。
 
WinProject:
非常感谢你的回答,我将尝试做这两种变体,按照STARIJ的建议通过旗子,你的变体也很有趣,可以尝试一下。 我将尝试少提问题,有答案就好!)

旗帜可能并不坏,但它错过了重点

关于交易、自动交易系统和策略测试的论坛

新手对MQL4的任何问题,对算法和代码的帮助和讨论

WinProject, 2018.01.26 18:17

晚上好,我再一次寻求帮助。我的EA在OnInit有一个主函数,它读取一个文件,并根据不同的条件立即建立不同的图形对象。在图表上还有一个按钮,点击后可以操作删除这些对象的功能,例如,文本标签。如何使在按下按钮后删除文本标签,当释放按钮时,可以不启动整个功能,完全构建所有对象,而是只构建文本标签。我想到的唯一一件事是为每一种类型的对象分别 创建一个类似的主函数,其中包含与打开和读取文件相关的所有动作,但我想使用一些巧妙的解决方案,但我不知道是什么,怎么做,在主函数中还是在按钮的功能中?

在这种情况下,将文件的读取实现为一个单独的用户定义的函数,并多次调用它,以避免多次创建一个相同的代码。但是,无论你如何努力,当使用标志时,文件阅读将保持不变。而且,在创建被删除的对象时,检查什么并没有什么区别--它们不存在或按对象类型的标志状态。毕竟,对象的类型是由链接到特定类型的按钮决定的,这就是标志。
 

你能告诉我如何在MQL5 中获得当前小时的值吗?
我创建了一个MqlDateTime结构的 对象,它没有给出任何信息

 
Roman Sharanov:

你能告诉我如何在MQL5 中获得当前小时的值吗?
我创建了一个MqlDateTime结构的 对象,它没有给出任何信息

该结构必须填写日期-时间。
 
Artyom Trishkin:
该结构需要填写日期-时间。

使用TimeCurrent()? 我只是不明白怎么做。

 
Roman Sharanov:

使用TimeCurrent()? 只是不明白如何

TimeToStruct()
 
Artyom Trishkin:
TimeToStruct()

啊,知道了,已经开始工作了,谢谢!

 

https://docs.mql4.com/ru/basis/types/casting

倒数第二个例子,颜色在RGB中表示为字符串。"通过复制内容来转换两个结构"是行不通的。

#property script_show_inputs
input color          testColor=clrBlue;// задайте цвет для тестирования
//--- структура для представления цвета в RGB
struct RGB
  {
   uchar             blue;          // синяя составляющая цвета
   uchar             green;         // зеленая составляющая цвета
   uchar             red;           // красная составляющая цвета
   uchar             empty;         // этот байт не используется
   string            toString();    // функция для получения в виде строки
  };
//--- функция для вывода цвета в виде строки
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- структура для хранения встроенного типа color 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- переменная для хранения в RGB
   RGB colorRGB;
//--- переменная для хранения типа color
   builtColor test;
   test.c=testColor;
//--- приведение двух структур путем копирования содержимого
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

编译器产生了以下错误...( '=' - 非法操作 使用 test.mq4 34 12 )

我是不是抄错了什么,还是样本中出现了错误?请告诉我。

Приведение типов - Типы данных - Основы языка - Справочник MQL4
Приведение типов - Типы данных - Основы языка - Справочник MQL4
  • docs.mql4.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL4 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...