一个在MT4平台上的视觉工作室。 - 页 4

 

你可以通过这个链接看到为图形引擎创建GUI的技术信息和说明是什么样子。

https://www.youtube.com/watch?v=ciVqJwgIIyg&feature=youtu.be#t=66.940294

 
Реter Konow:

据我所知,目前还没有办法将MS Visual Studio中创建的界面转移到MT平台的图表中。

你为什么这样认为呢?嗯,有的,而且有几个。虽然不清楚为什么它们、界面应该被转移到地块上,如果是这样,它们可能不存在。但在MT上面做这些是很现实的。
 
Реter Konow:

...

这意味着,在与创建 其程序的图形界面 有关的所有事项中,用户将与代码和编译器完全隔离,而只需处理工作室提供的视觉控制工具。界面设计将使用 "拖放 "技术和不同的配置窗口,通过这些窗口你可以定义现成的窗口模板和控件的属性。

...

...这个引擎将 ......与开发者应用程序合并 并进行所有的图形化工作。

但是,如果不通过代码,它将如何与开发者的应用程序整合?假设一个程序需要输出一个类似于市场观察的表格。然后我们应该向它发送指令,"EURUSD "应该显示在 "A1 "单元格中,价格 "1.238273 "应该显示在A2中,等等。然而,一套工具在不同的终端上会有所不同,静态的字段和表名根本无法填写。

微软的Visual Studio都很清楚--它是一个方便的纯粹的附加组件。... 这个引擎将静态地填入字段和表名。 申请创建。也就是说,Visual Studio并不是一个真正的可视化开发环境,就你的程序而言,不清楚它将如何工作。

 
Vasiliy Sokolov:

但是,如果不通过代码,它将如何与开发者的应用程序整合?假设该程序需要输出一个类似于Market Watch的表格。然后,它应该收到一个指令,"EURUSD "应该放在 "A1 "单元格中,价格 "1.238273 "放在A2中,等等。然而,一套工具在不同的终端上会有所不同,静态的字段和表名根本无法填写。

在微软的Visual Studio中,这很清楚--它是一个方便的附加功能,可以用于纯粹的软件环境 创建应用程序。也就是说,Visual Studio并不是真正的可视化开发环境,就你的程序而言,还不清楚它将如何工作。

目前,一个将图形引擎和用户应用程序的功能结合起来的解决方案正在开发中。

我只能向你介绍一般的概念。

在编写自己的应用程序时,开发人员将不得不保存由他的自定义函数返回的变量值(例如,"EURUSD "的当前 买入价的值),而不是在他的应用程序内,而是在外部。

这意味着他们将不得不写出共享内存数组单元的索引(位于他们的程序之外),而不是他们自己的变量名称,并在那里存储函数返回的值

这个全局阵列我称之为"参数内核"。然后,用户将把这个单元格的地址分配给工作室里的控件。反过来,图形引擎在对象中做一个周期性的循环,并查看参数内核中与之绑定的参数地址。如果该地址的一个值被用户函数改变了,引擎将在窗口中更新它。或者反过来说--如果值被一个控件改变了,用户函数将接受其处理。

从本质上讲,这种解决方案是两个程序在一个被称为 "参数内核 "的共享内存上进行通信的共生体。这两个程序,GUI图形界面引擎和用户程序,将被放置在终端内的不同图形上。

唯一的问题是共享内存的创建。试图用MQL来解决,我不想求助于DLL,但如果没有办法,你可以在那里创建共享内存。我已经这样做了。

 
Реter Konow:

唯一的问题是创建共享内存。试图用MQL来解决,我不想求助于DLL,但如果没有办法,你可以在那里创建共享内存。我已经这样做了。

一旦你求助于DLL,你的概念就没有了。只是没有什么--Pschick。有了DLL,甚至没有DLL,你的问题也可以解决,根本不需要开发任何东西。而这是现代编程的基本概念--不要自己开发任何东西,如果它已经被创造了。
 
Yuriy Asaulenko:
你为什么这样认为呢?有的,甚至还有一些。但不清楚为什么它们这些界面要转移到图表中去--如果是这样的话,它们可能并不存在。但将它们叠加在MT之上是很现实的。
请说得更具体些。
 
Yuriy Asaulenko:
一旦你求助于DLL,你的概念就不复存在了。只是什么都没有--普希奇。有了DLL,甚至没有DLL,你的问题也可以解决,根本不需要开发任何东西。
请解释你的意见。
 
Реter Konow:
请具体说明。

要具体说说什么呢?在MT之上的VS中创建窗口?这是一只小鸟--在所有窗口之上。

与VS交换数据?至少有4种方法。

 
Реter Konow:
请解释你的意见。
请看以前的帖子,或者更具体一些,谢谢。任何种类的窗口,不费吹灰之力。
 
Реter Konow:

唯一的问题是创建共享内存。试图用MQL来解决,我不想求助于DLL,但如果没有办法,你可以在那里创建共享内存。我已经这样做了。

当然,你可以通过DLL组织通信,但没有人会需要它,因为市场禁止任何DLLs。就标准的MQL而言,组织两个程序之间的全局数据交换的唯一方法是通过全局变量 进行交换。顺便说一下,这里有一个非常酷的通过全局变量交换数据的库:https://www.mql5.com/ru/code/12786。

一般来说,你的工作室是为谁创建的并不十分清楚。如果对开发者来说,你的解决方案没有API。没有人愿意拖一个单独的应用程序,与之交换数据,特别是放在市场上的程序。

有用户许可证的解决方案,我认为也是一个非常不幸的选择。这里有一个程序员基于你的工作室开发了一个程序,支付了第一个月的工作费用,然后在第二个月,他的程序将无法工作,因为你的工作室的图形核心已经需要另一个费用。胡说八道。没有开发商会把他们的项目建立在一个不断要求额外费用的包上。但是,即使我们设想许可证将被一次性购买,而工作室本身将是应用程序的一部分,那么同样不清楚它将如何在市场中运作(有许可证的程序里面有另一个许可证)。

还是要回答主要问题:你的项目是为哪个目标受众创建的?为什么普通用户会需要你的工作室?你想在MetaTrader 5中创建Microsoft Word吗?当然,这很酷,但为什么呢?人们为现成的解决方案付费。对于做特定工作的程序和算法。他们不需要创建表格。他们需要方案。而编写这些程序的程序员也无法使用你的工作室,因为工作的组织方式非常奇怪。

要明白,现在的重点必须放在市场上。如果你想创建一个基础设施项目,你必须首先回答这个问题:"为什么在市场上做生意或从事自由职业的程序员,会开始使用我的工作室。它将给他们带来什么?"