讨论 "如何在10分钟内为MQL5编写一个DLL并交换数据"。 - 页 2 123456789...12 新评论 Алексей 2010.01.20 22:30 #11 我还没有在MQL5中测试过将字符串传递给dll的一件事 我注意到MQL4-DLL中字符串传递的这个问题。在MQL4代码中,我调用 DLL中的函数 并传递字符串。#import "MyDll.dll" void passSymbol(string symb);void start() { passSymbol(Symbol());}而在dll中,我收到这个带有工具名称的字符串。_DLLAPI int __stdcall passSymbol(char* symbol) { указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.} 在某一时刻,在某些勾选中(可能运行了半天都很好),dll突然收到一个左手的字符串,其中有不清楚的字符,而不是符号名称。 也许你可以在mql5中查看类似的代码?在MQL4中,内存指针似乎是不正确的,或者有时对终端内部的流线的访问有冲突。双重数组和int变量可以正常通过,没有任何问题。我将为MQL5-DLL写一个测试,但如果你也在测试这些东西,请写一个这样的测试来验证字符串传递给dll的稳定性,通过在很长一段时间内重复每一个刻度的过程。 pisara 2010.01.21 11:41 #12 GarF1eld:如果只能通过dll导出报价,那么就意味着要在每个要导出的工具上放置一个脚本?如果有很多这样的人呢?例如,50?我知道可以在一个脚本中传递许多工具的报价,但它不会完全替代DDE,因为在DDE中不会丢失点数。 雷纳特。问题是,我们没有 "提供报价的接口 "的任务。我们的任务是为开发分析系统创造一个完整的、自给自足的环境。这样的环境,以至于连第三方程序都不需要使用。 答案当然是有趣的。题目 "如何为MQL5编写DLL并 在10分钟内交换数据"值得看看这篇文章"指标之间的数据传输 - 一个痛苦问题的简单解决方案",并与上述问题进行比较(斜体)。 yu-sha 2010.01.21 13:17 #13 Renat:问题是,我们的任务不是 "提供一个发布报价的接口"。我们的任务是为分析系统的开发创造一个完整和自给自足的环境。这样的环境,即使是第三方程序也没有太多使用的必要。GUI非常弱--花了2天时间编写逻辑,花了一整天时间以任何方式显示计算的信息。结果是我禁用了一切--我建立了数据传输(https://www.mql5.com/ru/forum/382),现在很高兴。开发商的目标是不是定得太高了?如果一切都在很久以前就已经完成了(C、Delphi......),为什么还要重新发明车轮呢? pisara 2010.01.21 16:55 #14 yu-sha:GUI非常弱--我花了2天时间来写逻辑,花了一整天时间来以任何方式显示计算的信息最后我放弃了一切--我建立了数据传输(https://www.mql5.com/ru/forum/382),并在享受我的生活。开发商的目标是不是定得太高了?为什么要重新发明轮子,因为一切都已经在很久以前完成了(C、Delphi...)?IMHO,MT5的问题始于它的诞生:对这个产品要解决的问题缺乏清晰的认识。它要么是基于MT4的升级版,但在速度和扩展功能方面提高到了新的版本,要么是一个新的现代交易平台,具有深思熟虑的结构和可扩展性(即包含业务类,或交易框架,以执行明确定义的具体任务类别,并基于一些现代编程语言/环境的一般功能和广泛可用的软件支持工具)。为了解决这个难题,试图把对立面结合起来,通过 "最有才华的独唱者的即兴表演 "的方法,酝酿出一种可以说是复合的东西,似乎并没有完全成功。如果有人认为这是纯粹的垃圾,没有建设性的影子,那就第二次把他带到澡堂去,或者把他枪毙了算了。) yu-sha 2010.01.21 21:46 #15 2个pisara找到它的根源。MQL更适合没有什么编程技能的交易者。A la Basic for dummies。我并不反对这样的立场--也感谢你的说法。但将MQL5定位为"开发分析系统的一个完整和自给自足的环境。这是一种甚至不需要应用第三方程序的环境。" 这是个严肃的请求。这将需要多年的工作,不仅仅是个人爱好者,而是在一个好的架构师指导下的专业程序员团队,用一些可消化的汤集来 "绑定 "核心。对于预算和管理,我不能说什么--那是项目的另一个层面。我想支持公司员工的辛勤工作。我想对他们的辛勤工作说声谢谢。但让我们面对现实吧--MQL5只是实现目标的一个阶段。P.S. 莫斯科不是在一天之内建成的 pisara 2010.01.21 22:40 #16 是的,想到或想起我们每个人已经做了、正在做和将继续做的多少不必要的事情,就会感到害怕!这就是我们的生活。 Hide 2010.01.22 08:47 #17 Renat:检查通话速度非常容易。例如,你可以粗略地这样计算。我在Quad Q9400 @2.66Ghz上得到每秒57,000次呼叫。同样的代码在MetaTrader 4中每秒可以得到约20,000,000次调用,因为没有控制和管道。我们一定会努力减少MetaTrader 5中DLL调用的损失。 最好给编译器做一个特殊的指令,默认情况下启用,并将这些包装器插入到DLL调用中。当禁用时,最好不要插入这些包装器。像调试和发布模式。不过,有时57K是不够的。同样的时间也被dll的运行时间所吞噬。 Renat Fatkhullin 2010.01.23 14:24 #18 HideYourRichess: 做一个特殊的编译器指令是个好主意,该指令默认为开启,并将这些包装器插入dll调用中。当禁用时,最好不要插入这些包装器。像调试和发布模式。不过,有时57K是不够的。同样的时间被dll的运行时间吃掉了。 240的构建简化了包装器,现在的呼叫率是每秒19,911,000次。 Renat Fatkhullin 2010.01.23 14:32 #19 关于MQL / MQL2 / MQL4 / MQL5的讨论:显然,你不太了解我们的历史。至少要去公司网站上看一下。自2001年以来,我们有条不紊地创造了4代交易语言,拥有一个庞大的交易员社区。竞争对手正在死亡,他们的控制语言没有发展,而我们已经工作,正在工作,并将继续工作。 kombat 2010.01.23 14:51 #20 Renat: 我们一直在努力,正在努力,并将继续努力。正如伟大的列宁爷爷所遗留的。;) 我不记得了,我想我以前问过... 是否可以使用mcl5工具创建简单的dlls。 用unitor写,然后编译......? 123456789...12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我注意到MQL4-DLL中字符串传递的这个问题。在MQL4代码中,我调用 DLL中的函数 并传递字符串。
而在dll中,我收到这个带有工具名称的字符串。
在某一时刻,在某些勾选中(可能运行了半天都很好),dll突然收到一个左手的字符串,其中有不清楚的字符,而不是符号名称。
也许你可以在mql5中查看类似的代码?在MQL4中,内存指针似乎是不正确的,或者有时对终端内部的流线的访问有冲突。
双重数组和int变量可以正常通过,没有任何问题。
我将为MQL5-DLL写一个测试,但如果你也在测试这些东西,请写一个这样的测试来验证字符串传递给dll的稳定性,通过在很长一段时间内重复每一个刻度的过程。
如果只能通过dll导出报价,那么就意味着要在每个要导出的工具上放置一个脚本?如果有很多这样的人呢?例如,50?
我知道可以在一个脚本中传递许多工具的报价,但它不会完全替代DDE,因为在DDE中不会丢失点数。
问题是,我们没有 "提供报价的接口 "的任务。
我们的任务是为开发分析系统创造一个完整的、自给自足的环境。这样的环境,以至于连第三方程序都不需要使用。
问题是,我们的任务不是 "提供一个发布报价的接口"。
我们的任务是为分析系统的开发创造一个完整和自给自足的环境。这样的环境,即使是第三方程序也没有太多使用的必要。
GUI非常弱--花了2天时间编写逻辑,花了一整天时间以任何方式显示计算的信息。
结果是我禁用了一切--我建立了数据传输(https://www.mql5.com/ru/forum/382),现在很高兴。
开发商的目标是不是定得太高了?
如果一切都在很久以前就已经完成了(C、Delphi......),为什么还要重新发明车轮呢?
GUI非常弱--我花了2天时间来写逻辑,花了一整天时间来以任何方式显示计算的信息
最后我放弃了一切--我建立了数据传输(https://www.mql5.com/ru/forum/382),并在享受我的生活。
开发商的目标是不是定得太高了?
为什么要重新发明轮子,因为一切都已经在很久以前完成了(C、Delphi...)?
IMHO,MT5的问题始于它的诞生:对这个产品要解决的问题缺乏清晰的认识。它要么是基于MT4的升级版,但在速度和扩展功能方面提高到了新的版本,要么是一个新的现代交易平台,具有深思熟虑的结构和可扩展性(即包含业务类,或交易框架,以执行明确定义的具体任务类别,并基于一些现代编程语言/环境的一般功能和广泛可用的软件支持工具)。为了解决这个难题,试图把对立面结合起来,通过 "最有才华的独唱者的即兴表演 "的方法,酝酿出一种可以说是复合的东西,似乎并没有完全成功。
如果有人认为这是纯粹的垃圾,没有建设性的影子,那就第二次把他带到澡堂去,或者把他枪毙了算了。)
2个pisara
找到它的根源。
MQL更适合没有什么编程技能的交易者。A la Basic for dummies。
我并不反对这样的立场--也感谢你的说法。
但将MQL5定位为"开发分析系统的一个完整和自给自足的环境。这是一种甚至不需要应用第三方程序的环境。" 这是个严肃的请求。这将需要多年的工作,不仅仅是个人爱好者,而是在一个好的架构师指导下的专业程序员团队,用一些可消化的汤集来 "绑定 "核心。对于预算和管理,我不能说什么--那是项目的另一个层面。
我想支持公司员工的辛勤工作。我想对他们的辛勤工作说声谢谢。但让我们面对现实吧--MQL5只是实现目标的一个阶段。
P.S. 莫斯科不是在一天之内建成的
检查通话速度非常容易。例如,你可以粗略地这样计算。
我在Quad Q9400 @2.66Ghz上得到每秒57,000次呼叫。同样的代码在MetaTrader 4中每秒可以得到约20,000,000次调用,因为没有控制和管道。
我们一定会努力减少MetaTrader 5中DLL调用的损失。
做一个特殊的编译器指令是个好主意,该指令默认为开启,并将这些包装器插入dll调用中。当禁用时,最好不要插入这些包装器。像调试和发布模式。不过,有时57K是不够的。同样的时间被dll的运行时间吃掉了。
自2001年以来,我们有条不紊地创造了4代交易语言,拥有一个庞大的交易员社区。竞争对手正在死亡,他们的控制语言没有发展,而我们已经工作,正在工作,并将继续工作。
Renat:
我们一直在努力,正在努力,并将继续努力。
正如伟大的列宁爷爷所遗留的。
;)
我不记得了,我想我以前问过...是否可以使用mcl5工具创建简单的dlls。
用unitor写,然后编译......?