创建您自己的MetaTrader扩展(dll)。 - 页 5

 

我看你是个大商人。

这不是一个你可以出售你的这种狗屎的论坛。

你到底在DGC OZFX EA中修改了什么?

firedoji:
只要下载所有的外汇电子书,看看里面的说明。我从那里得到了200多本电子书和一些EA...那里的所有EA都是经过编辑和修改的...

-----------------------------------------

下载所有EA 下载所有指标 下载电子书
 
prasxz:
有没有可能让MT4 dll连接到网络服务,并通过php脚本显示MT4开仓,这样没有MT4的人就可以从网站上实时看到?

不久前有人发布了一个MQL/MySQL的例子,效果很好,唯一的问题是大多数托管公司不允许远程访问他们的数据库服务器。然而,如果你能完全访问和控制你的服务器,你可以写一个EA,连接到你的数据库,为每个新订单插入数据。然后从您的网站上简单地连接到数据库并读取数据......在我看来,这将是最好的方法。

现在MT4 DLL可以连接到php脚本,但我从未尝试过将信息从EA传递到网站,但我能够成功地以其他方式做到这一点......你必须研究一下windows套接字,以及HTTP_GET/HTTP_POST等函数

帕特里克

 
Mistigri:
不确定,那个库看起来很熟悉,你是用它来连接网站的吗?你有没有试着用wininet.lib代替?

我不认为问题出在def文件上,否则你的dll甚至无法加载和正常工作......。如果你能提供更多的信息(即你在dll中使用的一些代码),也许我可以尝试帮助你。

帕特里克

嗨,Patrick!

我在这里找到了这个库和源代码。

https://www.mql5.com/en/forum/178272

我把我的帖子放在那里,但管理员把它移到了这个主题里......

谢谢!

 

读取位于互联网上的文件

你好。

我想让EA读取一个文件,这个文件不在本地机器上,而是在互联网上。

FileOpen只在文件位于metatrader目录中时才工作。

我用c#-dll累了,但得到的错误信息是 "不能调用函数"。

有什么简单的方法可以解决这个问题吗?

谢谢

 

错误127的解决方法--无法调用函数

错误127的解决方法--无法调用函数

好的。

我昨天晚上终于回来看这个问题了。 这个问题与将错误的def文件或nodef 文件与dll关联有关。

在Visual Studio 2008 Express中是这样解决的 --

1) 转到项目,属性--或者alt-F7

2) 转到链接器--双击它,你会得到一个下拉列表

3) 选择输入

4) 把模块定义文件改成你给def文件起的名字

确保它有文件的路径和全名--比如.\MyDef.def。

在2008年Express版本中,这不是像专业版本那样自动生成的。

这是主要的罪魁祸首。 可能还有其他链接器/编译器的问题,仍然可能造成问题。 你需要做的是加载Metatrader4中的ExportFunction示例项目。这可以在experts/DllSample文件夹中找到。 现在逐页逐项查看它的属性,凡是写着ExportSample或ExpertSample的地方(或与它的命名惯例有关的任何东西),都要改变你的属性以符合你自己的命名惯例。 我逐项进行,然后检查我是否有127的错误。 我继续得到这个错误,直到正确的模块定义文件被明确说明为一个依赖关系。我并不是说除此之外可能没有其他问题,因为我把所有东西都改成了与样本一致,但是一旦定义文件被明确指出,就解决了问题。

记住,dll必须在lib文件夹中。 你必须在include目录下有一个mqh文件,明确地导入dll,并列出带有参数的函数名称、返回类型等。 然后,在你的指标或专家中,你必须包括头文件。 这样就可以了。

CodersGuru和Mistigri都有很好的例子说明如何做到这一点,但非专业的Express版本没有明确地将def文件作为一个依赖项加入,而这正是我们所有使用Express版本的人遇到的问题的根源。(至少在选择特定的项目时,它没有明确地添加它,以使我们有问题的人被选中)。

所附图片。 记住,你可能仍然想确保你的编译器和链接器的值与Metatrader附带的出口函数样本的值一致。

注意。

MG

附加的文件:
properties.jpg  75 kb
 
fedecosta:
嗨,Patrick!

我在这里找到了这个库和源代码。

https://www.mql5.com/en/forum/178272

我把我的帖子放在那里,但管理员把它移到了这个主题里......

谢谢!

对不起,我还没有机会看它,我一直很忙,但我没有忘记,我将尝试给你回复。

Peco07。

我想让EA读取一个文件,这个文件不在本地机器上,而是在互联网上。

你有两个选择,写一个C#应用程序,连接到网站,在你的电脑上写一个数据文件,然后从MT4读取,或者写一个C++ dll,连接到网站读取数据 ....

如果你走C#路线,到目前为止,它似乎比DLL路线快得多 ...如果你想写一个C++ DLL,这里有一些代码可以帮助你开始。

MT4 DLL网络连接|Mistigri

MG_1:

问题在于将错误的def文件或没有def文件与dll关联。

这就是你如何在Visual Studio 2008 Express中解决这个问题----。

谢谢你的信息!如果你不介意的话,我将在我的网站上复制你帖子的某些部分......

 
Mistigri:
谢谢你的信息!如果你不介意的话,我将在我的网站上复制你帖子的某些部分......

没问题,我知道很多人去那里学习,所以希望它能帮助Express用户和gnu等用户。

-MG

 
fedecosta:
大家好!

我在尝试使用这个库时遇到了一个问题。

我把它们放在metatrader/experts/library里。

我正确定义了.def文件的路径

...但我的EA在注册表上打印出这个错误:-65495

这到底是什么问题?

最重要的是,如何解决这个问题?

有没有可能是.def文件被破坏了?

提前感谢...

你好,Fedecosta。

试着把def文件直接复制到你的c:/驱动器下......。这对我来说似乎很有效。

请注意,这与DLL编程无关,它是针对这个EA的...

帕特里克

 
Mistigri:
你好,蒂姆。

当使用dev-c++时,def文件会自动为你生成,问题是你最终得到的函数名看起来像这样。

EXPORTS

_Z11GetSMAArrayP8RateInfoiiPd@16 @ 1

_Z12GetHighValueP8RateInfoii = _Z12GetHighValueP8RateInfoii@12 @ 2

_Z12GetHighValueP8RateInfoii@12 @ 3

_Z13GetCloseValueP8RateInfoii = _Z13GetCloseValueP8RateInfoii@12 @ 4

_Z13GetCloseValueP8RateInfoii@12 @ 5

_Z11GetSMAArrayP8RateInfoiiPd = _Z11GetSMAArrayP8RateInfoiiPd@16 @ 6[/PHP]

Now you need to make sure you add the following check around your code

[PHP]

#ifdef __cplusplus

extern "C" {

#endif

#ifdef __cplusplus

}

#endif

附上我为VS2008做的样本文件,但这次是用dev-c++ ...

希望这对您有所帮助

你的意思是说,当写dll文件时。

def文件中的函数 应该在开头加上_z12?

这意味着在.mq4文件中

调用finction: get_max_deviation

然后在.def文件中

转移的函数:_z12get_max_deviation?

函数名称后面的@数字是什么意思?

谢谢

 
Mistigri:

附上我为VS2008做的样本文件,但这次是用dev-c++ ...

希望这对你有帮助

附上的文件

MistigriFX Sample Debug.mq4 (2.1 KB, 15 views)

MSFXDEV.zip (8.6 KB, 17 views )

我已经下载了你的文件,并按图片显示编译了.cpp

但出现了错误

我的编译方法是否有误,如何将其编译成dll?(我是一个C++初学者^^)

附加的文件:
dev_dll.jpg  298 kb