创建您自己的MetaTrader扩展(dll)。 - 页 9 123456789101112131415 新评论 babelproofreader 2011.06.27 17:25 #81 DLL没有随着新的刻度线更新 作为我之前的DLL帖子(#81)的后续,我现在有一个额外的问题;当DLL被这样调用时。 int start() { double Rates[][6]; int MaximumRecords = ArrayCopyRates( Rates, Symbol(), 0 ); for( int zz = MaximumRecords; zz >= 0; zz-- ) { OutPut[zz] = EMPTY; } GetSMAArray( Rates, MaximumRecords, Periods, OutPut ) 。 返回(0)。 } 在图表上,它工作得很好,正如预期的那样,但不幸的是,它并没有随着新的、传入的点数而更新--它只是在其最初的调用中绘图。我还可以添加什么代码来使DLL在有新的点数时更新?在我的搜索中,几乎所有的搜索结果都是关于使用以下方法的变化 ExtCountedBars = IndicatorCounted()。 来强迫一个while循环进行计算,但这些都适用于.mq4文件本身的计算。我想强制DLL重新计算。其次,我希望这种重新计算只在一个条形图完成时发生,而不是在所有和每个tick 到达时发生。 [删除] 2011.06.27 17:40 #82 循环应该是 for(int zz=MaximumRecords-1;................. 10条记录在一个数组中占据0到9的位置 babelproofreader 2011.06.27 22:07 #83 Tzuman: 循环应该是for(int zz=MaximumRecords-1;................. 10条记录在一个数组中占据0到9的位置 恐怕这没有帮助,DLL仍然没有随着新的刻度线而更新。 [删除] 2011.07.25 07:02 #84 Mistigri的样本视频不可用 大家好。 谁能在互联网上提供Mistigri的样本视频? [删除] 2011.07.26 06:32 #85 jocinet: 大家好,谁能把Mistigri的样本视频放在网上? Mistigri在以下网址再次提供了它。 项目|PsNouvion pipscooper 2011.07.28 20:53 #86 为C#开发人员提供的路径。MT4/5 -> C# DLL 那些想用C#语言为Metatrader编写DLL而不是C++语言的C#开发者,现在有了一条通往这个目的的道路。有一篇非常有趣的文章,题目是 "使用非托管导出将C#代码暴露给MQL5",我刚刚读过。 阅读/略过这篇文章,并阅读2.5节以后的内容。 使用非管理出口将C#代码暴露给MQL5 - MQL5文章 阅读指示,然后下载C#"非托管导出库 "的模板,并将压缩文件放到正确的目录中(按照该页的指示)。 用于非托管导出的C#项目模板 加载VS并选择 "非托管导出库 "模板。按照代码样本操作。希望这能帮助到别人! onewithzachy 2011.10.31 02:42 #87 关键错误,但没有崩溃,这就是编写dll的方法 终于能够在Visual Studio 2008 Express上使用MistigriFX Sample Debug(简称MFX_SD)编写我的dll。 但是我遇到了一个有趣的问题。 在图表上运行三个MFX_SD,输入不同的周期时,没有问题。然而,当把另外三个MFX_SD连接到第二个图表上,并有不同的周期输入时,我有两个错误信息(函数'GetSMAArray'从dll'Mistigri FX Sample 1.dll'调用的关键错误'),专家停止工作。 所以我看到两个图表,在一个图表中,所有三个MFX_SD每隔一段时间都运行良好,而在另一个图表中,我看到只有一个MFX_SD每隔一段时间运行,其他两个则没有。 有什么建议吗? 附上我在visual studio 2008中编写dll的方法。我把它写在文本文件中,所以你可以从你的Visual Studio中读取它。 如果你有任何错误,请诅咒你自己不要听从像我这样的程序员新手的建议 。 请提前感谢。 附加的文件: how_to_write_dll_in_vs_2008.txt 7 kb onewithzachy 2011.10.31 23:32 #88 关键错误 解决了 经过多次尝试,我终于解决了 "关键错误 "的信息(请看我之前的帖子)。 这与我制作.dll的方式无关,但它与MFX_SD代码中GetSMAArray函数的错误逻辑有关。 这里是MFX_SD代码,我强调了错过的逻辑。 for ( int i = 0; i < MaximumRecords; i++) { double Sum = 0.0; for ( int k = 0; k < Period; k++ ) { Sum += Rates[MaximumRecords-i-1-k].关闭。 } 结果[MaximumRecords-i-1] = Sum / Period ; } 例如,假设我们有Period = 2,MaximumRecord = 75,i = 74。这使得计算时出现错误。 Sum += Rates[MaximumRecords-i-1-k].close。 因为MaximumRecord - i - 1 - k的结果是等于-1。Rates[-1]的唯一值是零,这使得sum的值也等于零。由于我们计算SMA,我们必须用Period除以sum,也就是零除以2,于是出现了 "关键错误",专家停止了工作。 如果您不相信,请将几个MFX_SD连接到1分钟图表上,输入周期不同,但其中一个MFX_SD的输入周期必须=1。看看MT终端窗口,点击专家标签。你会看到一个关键的错误信息,并且专家停止工作。然而,如果你看一下图表,只有周期=1的MFX_SD仍在运行。 我认为MistigriFX在他的视频中试图展示的是如何制作dll和向dll传递数组。如果他必须纠正他的SMA逻辑,这将是一个让人严重头痛的视频。这就是为什么他用不正确但简单的例子向我们展示简单的MA。 祝你制作dll愉快。 数据科学与机器学习(第 09 部分):K-最近邻算法(KNN) 液态图表 神经网络变得轻松(第二十六部分):强化学习 holesovsky 2011.12.04 15:42 #89 MT4扩展--您的课程 你好,编码大师。 能否请你给我一些你的课程的链接。 或pdf手册。 我需要任何文献来了解它。 非常感谢。 最好的问候 伊万 Mladen Rakic 2011.12.04 15:56 #90 ... 在metatrader的experts/samples/DLLSample 文件夹中(每个metatrader都安装在那里),你有一个例子(mql和C++源代码,包括项目和def文件),这是所有你需要知道的dll调用(metatrader支持的所有可能的参数 类型到dll和返回 "通信 "都包括在那里),其余的取决于你的C/C++知识。 holesovsky: 你好,codersguru。 能否请你给我一些你的课程的链接。或pdf手册。我需要任何文献来了解它。非常感谢。最好的问候 伊万 123456789101112131415 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
DLL没有随着新的刻度线更新
作为我之前的DLL帖子(#81)的后续,我现在有一个额外的问题;当DLL被这样调用时。
int start()
{
double Rates[][6];
int MaximumRecords = ArrayCopyRates( Rates, Symbol(), 0 );
for( int zz = MaximumRecords; zz >= 0; zz-- ) { OutPut[zz] = EMPTY; }
GetSMAArray( Rates, MaximumRecords, Periods, OutPut ) 。
返回(0)。
}
在图表上,它工作得很好,正如预期的那样,但不幸的是,它并没有随着新的、传入的点数而更新--它只是在其最初的调用中绘图。我还可以添加什么代码来使DLL在有新的点数时更新?在我的搜索中,几乎所有的搜索结果都是关于使用以下方法的变化
ExtCountedBars = IndicatorCounted()。
来强迫一个while循环进行计算,但这些都适用于.mq4文件本身的计算。我想强制DLL重新计算。其次,我希望这种重新计算只在一个条形图完成时发生,而不是在所有和每个tick 到达时发生。
循环应该是
for(int zz=MaximumRecords-1;.................
10条记录在一个数组中占据0到9的位置
循环应该是
for(int zz=MaximumRecords-1;.................
10条记录在一个数组中占据0到9的位置恐怕这没有帮助,DLL仍然没有随着新的刻度线而更新。
Mistigri的样本视频不可用
大家好。
谁能在互联网上提供Mistigri的样本视频?
大家好,谁能把Mistigri的样本视频放在网上?
Mistigri在以下网址再次提供了它。
项目|PsNouvion
为C#开发人员提供的路径。MT4/5 -> C# DLL
那些想用C#语言为Metatrader编写DLL而不是C++语言的C#开发者,现在有了一条通往这个目的的道路。有一篇非常有趣的文章,题目是 "使用非托管导出将C#代码暴露给MQL5",我刚刚读过。
阅读/略过这篇文章,并阅读2.5节以后的内容。
使用非管理出口将C#代码暴露给MQL5 - MQL5文章
阅读指示,然后下载C#"非托管导出库 "的模板,并将压缩文件放到正确的目录中(按照该页的指示)。
用于非托管导出的C#项目模板
加载VS并选择 "非托管导出库 "模板。按照代码样本操作。希望这能帮助到别人!
关键错误,但没有崩溃,这就是编写dll的方法
终于能够在Visual Studio 2008 Express上使用MistigriFX Sample Debug(简称MFX_SD)编写我的dll。
但是我遇到了一个有趣的问题。
在图表上运行三个MFX_SD,输入不同的周期时,没有问题。然而,当把另外三个MFX_SD连接到第二个图表上,并有不同的周期输入时,我有两个错误信息(函数'GetSMAArray'从dll'Mistigri FX Sample 1.dll'调用的关键错误'),专家停止工作。
所以我看到两个图表,在一个图表中,所有三个MFX_SD每隔一段时间都运行良好,而在另一个图表中,我看到只有一个MFX_SD每隔一段时间运行,其他两个则没有。
![](https://c.mql5.com/forextsd/smiles/sad_smile.png)
有什么建议吗?
附上我在visual studio 2008中编写dll的方法。我把它写在文本文件中,所以你可以从你的Visual Studio中读取它。
如果你有任何错误,请诅咒你自己不要听从像我这样的程序员新手的建议
。
请提前感谢。
关键错误 解决了
经过多次尝试,我终于解决了 "关键错误 "的信息(请看我之前的帖子)。
这与我制作.dll的方式无关,但它与MFX_SD代码中GetSMAArray函数的错误逻辑有关。
这里是MFX_SD代码,我强调了错过的逻辑。
for ( int i = 0; i < MaximumRecords; i++)
{
double Sum = 0.0;
for ( int k = 0; k < Period; k++ )
{
Sum += Rates[MaximumRecords-i-1-k].关闭。
}
结果[MaximumRecords-i-1] = Sum / Period ;
}
例如,假设我们有Period = 2,MaximumRecord = 75,i = 74。这使得计算时出现错误。
Sum += Rates[MaximumRecords-i-1-k].close。
因为MaximumRecord - i - 1 - k的结果是等于-1。Rates[-1]的唯一值是零,这使得sum的值也等于零。由于我们计算SMA,我们必须用Period除以sum,也就是零除以2,于是出现了 "关键错误",专家停止了工作。
如果您不相信,请将几个MFX_SD连接到1分钟图表上,输入周期不同,但其中一个MFX_SD的输入周期必须=1。看看MT终端窗口,点击专家标签。你会看到一个关键的错误信息,并且专家停止工作。然而,如果你看一下图表,只有周期=1的MFX_SD仍在运行。
我认为MistigriFX在他的视频中试图展示的是如何制作dll和向dll传递数组。如果他必须纠正他的SMA逻辑,这将是一个让人严重头痛的视频。这就是为什么他用不正确但简单的例子向我们展示简单的MA。
祝你制作dll愉快。
MT4扩展--您的课程
你好,编码大师。
能否请你给我一些你的课程的链接。
或pdf手册。
我需要任何文献来了解它。
非常感谢。
最好的问候
伊万
...
在metatrader的experts/samples/DLLSample 文件夹中(每个metatrader都安装在那里),你有一个例子(mql和C++源代码,包括项目和def文件),这是所有你需要知道的dll调用(metatrader支持的所有可能的参数 类型到dll和返回 "通信 "都包括在那里),其余的取决于你的C/C++知识。
你好,codersguru。
能否请你给我一些你的课程的链接。
或pdf手册。
我需要任何文献来了解它。
非常感谢。
最好的问候
伊万