在图形模式下为MQL创建一个GUI。 - 页 13

 
Алексей Барбашин:

马克西姆,这个解决方案如何更好?毕竟,为了检查一个标志的状态,它也需要在MQL中定期检查。因此,事实证明,无论在哪里,你都需要不断地监测一些东西的状态变化,以了解是时候拿起数据了。而这个片段可以存储在dll本身,并在那里进行检查--我就是这么做的。在你的例子 中,你有一个对dll的隐式调用,以返回标志的状态

检查国旗是一个非常快速的操作。我的意思是最快的那一个 :-)

而且在这个例子中没有隐式调用。

InitDLL接收了int *flags作为输入,将其存储在其中的某个地方,产生了一个跟踪,对一些东西进行计数,完成后进行atomic_inc(flags)。

顾问只需要检查flags[0]。

 
它是为了检查。这就是关键点。我所建议的是,当一个 "任务 "完成后,该工具应该得到通知。也就是说,这样你就不必在检查上花费不断的资源。通知来了--你得到了数据。
 
Maxim Kuznetsov:

检查国旗是一个非常快速的操作。也就是说,它是最快的。)

而且在这个例子中没有隐式调用。

InitDLL接收输入的int *flags,将其存储在某处,产生一个跟踪,计算一些东西,完成后进行atomic_inc(flags)。

顾问只需要检查flags[0]。

但是,你不能只检查标志就什么都不做--线程间的同步是需要的,屏障、原子或互斥,当然,不是每个CPU都要采取这种方式。


阿列克谢-巴尔巴欣
确切地说,要检查。这就是关键点。而且我建议提醒该工具,"任务 "已经完成。也就是说,你不需要花费持续的资源来检查。通知来了--你得到了数据。
那么所有这些突变体是如何实现的呢?据我所知,都是通过检查和设置旗帜。无论如何,你必须在µl线程的某个地方检查一些标志。
 
Maxim Kuznetsov:

检查旗帜是一个非常快速的操作。也就是说,它是最快的。)

而且在这个例子中没有隐式调用。

InitDLL接收int *flags作为输入,将其存储在某处,产生一个跟踪,计算一些东西,完成后进行atomic_inc(flags)。

EA只需要检查flags[0]。

马克思,好吧,回调的情况目前已经很清楚了。 我们将使用我们所拥有的,并等待开发人员添加回调功能。

我想回到GUI的问题上。画在什么上面并不重要。例如,我用Sharp制作,你用Tcl制作。

只要表格本身存在,就根本不是问题。但我真的希望表格不要自己飞,而是与适当的图表绑定。

当你设置创建的表单的父级时,它将被放置在所需的图表上。但是有一个问题,就是将窗口与图表 "合并",而图表只是画出 "胶合 "的形式。

我建议暂时尝试解决这个问题,因为它仍然在MT开发者的行动范围之外。

你有没有试着把你的GUI附加到图表上?

 
pavlick_:

但你不能只用标志检查,你需要线程间的同步、障碍、原子或互斥,当然,这不是对每个CPU都适用。


那么各种突变器是如何实现的呢?据我所知,都是通过检查和设置旗帜。无论如何,你必须在µl线程的某个地方检查一些标志。

相当正确。但让它发生在非常低的、应用层面上,例如,它与OnChartEvent 一起工作。也就是说,现在我们明确地对它进行编程(检查),但这一切都可以转移到应用层面,正如Renat所说(他提出了一些变体)。

 
Maxim Kuznetsov:

我下来了 :-) 捐赠 - 你能把它寄给MS吗?

066cd265-e2fe-468e-9492-4228e9759e38
8e1040ba-dc3e-4e2a-9208-e3ea8da9ad05
03dcd7cd-4b9b-4ff7-bff0-e0839a0f9d8b
d69f2c8c-de51-4557-8188-4ebb870da7da
a79a8cc6-f785-4268-bc4e-2deda0f1ecd0
f4f59f52-1da8-4f74-a71e-9aec1992674d
85608797-6015-456d-af64-ad7890120372
9289991a-e287-47fb-b595-6d719c1b7dbd
63d3b953-3229-4045-a82a-fc9e7795bb01
c75c4e0f-8320-42df-943c-9aada54b60eb

如果还有别的东西,我也许能找到。

谢谢,通过了,得到了一英镑!

 
Alexey Volchanskiy:

谢谢,通过了,得到了一英镑!

因此,它比黄牛更有利可图!愿意为零售提供一分钱,你给他们批发1美元/10美元。
 
Maxim Kuznetsov:
因此,它比黄牛更有利可图!准备以1美分的价格零售,你以1美元/10美元的价格批量出售。唯一的限制是传输速度 :-) 每秒一些KB的GUIDs

诱人至极。这就是我们要征服二手GUID市场的方法!"。并成为垄断者,像比特币一样创造出人为的狂热,然后发财!

 
Алексей Барбашин:

Max,好吧,现在回调的情况已经很清楚了。我们将使用我们所拥有的,并等待开发者添加回调能力。

我想回到GUI的问题上。画在什么上面并不重要。例如,我用Sharp制作,你用Tcl制作。

只要表格本身存在,就根本不是问题。但真的 希望表格不要自己飞,而是与适当的图表绑定。

当你设置创建的表单的父级时,它就会被放在所需的图表中。但是有一个问题,就是将窗口与图表 "合并",而图表只是画出 "胶合 "的形式。

我建议暂时尝试解决这个问题,因为它仍然在MT开发者的行动范围之外。

你有没有试着把你的GUI附加到图表上?

我没有任何需要将表格与图表联系起来。

有一些操作图形是直接与图表相连的(各种线条、标题、铭文等),这自然是由MT工具完成。

但有管理GUI--设置、报告、统计。它们相当大,把它们放在图表内是对用户的一种犯罪 :-)

只要把表单放在图表的顶部就可以了。 你需要从窗口管理器中删除表单,并跟踪图表几何形状和焦点的变化。
这样的 "手工夕阳":-)至少你不会进入MetaTrader的内部,也不会在它的窗口上强加新的寒意和钩子--也就是说,你会表现得很好。

任何从DLL中调用的GUI都有最令人不快的特点--调用它的专家顾问/指标会因为轻微的喷嚏而定期重启。这导致了重开表格和粗话的瀑布......。
也许宣布已久的 "服务"(或不管它们被称为什么)将没有这个缺点。

更新/关于放置一个表格--把RectLabel放在图表上,在图表-事件中跟踪代码的变化。当它改变时--把它的形式严格放在上面 :-)当你改变标签,最小化窗口时,你需要一点小手鼓来及时隐藏你的表格
 
Alexey Volchanskiy:

你根本就没有解释什么。你如何从MT*获得数据到sharpe面板?

我一直在通过内存映射与定时轮询进行反馈。面板只传送不同的设置和缓慢的计算结果

我有一个外部TC,我不需要GUI反馈到终端。