文章 "使用WinInet.dll通过网络在终端间进行数据交互" - 页 4

 
好吧,我改变主意了。这个对象值得一试,因为 MetaQuotes 的这些变态白痴禁止在 Strategy Tester 中使用WebRequest 函数
 

设法在 mt5 x64 上运行(metagrabber 脚本无错误运行)

internetlib.mqh 类 ::reqest 中的代码更改

// 创建请求描述符
   string null = NULL;
   hRequest=HttpOpenRequestW(Connect,Verb,Object,Vers,nill,null,FLAG_KEEP_CONNECTION|FLAG_RELOAD|FLAG_PRAGMA_NOCACHE,0);
 

但我知道 Market 产品中不能使用来自 Internet 的请求,因为那里禁止使用 dll。

没有其他方法可以使用 #import "wininet.dll" 而不使用 dll 本身吗?

 
Yurij Izyumov:

但我知道 Market 产品中不能使用来自 Internet 的请求,因为那里禁止使用 dll。

没有其他方法可以使用 #import "wininet.dll "而不使用 dll 本身吗?

WebRequest 已经存在很久了,市场上也允许使用。
 

在下面的代码中,我用 path 替换了 URL 变量,因为 URL 是 ParseURL 函数的外部变量

void ParseURL(string path,string &host,string &request,string &filename)

{

host=StringSubstr(path,7);

// 删除

int i=StringFind(host,"/");

request=StringSubstr(host,i);

host=StringSubstr(host,0,i);

string file="";

for(i=StringLen(path)-1; i>=0; i--)

if(StringSubstr(path,i,1)=="/")

{

file=StringSubstr(path,i+1);

断开;

}

if(file!="") filename=file;

}

 

晚上好!

我使用 XAMPP 安装了 php 和 apache。但是,我无法从 MQL5 通过 GET 访问页面。

下面是返回的错误:

禁止访问!

您没有访问请求对象的权限。

该对象受读保护或服务器不可读

有人知道如何解决这个问题吗?
 
Andrey Khatimlianskii:
WebRequest 存在已久,市场上也允许使用。

它在市场上已经存在问题(在 mcl5 上的访问被关闭),而且在 indicators.... 中无法使用。

 
Vladimir Pastushak:

市场上已经出现了一些问题(µl5 的访问被关闭),而且它在指标中也不起作用...

WebRequest 从未在指标中使用过。拒绝的原因并不清楚,因为开发人员可以在编写程序 时决定是否使用 WebRequest。我们在 21 世纪推出了 WinInet.dll
 
Vladimir Pastushak:

市场上已经出现了一些问题(MCL5 的访问被关闭),而且它在指标中也不起作用...

市场上有什么问题?

为什么要使用 µl5?


Vitaly Muzichenko:
WebRequest 从未在指标中使用过。拒绝的原因并不清楚,因为开发人员可以在编写程序 时决定是否使用 WebRequest。我们在 21 世纪推出了 WinInet.dll

原因很简单--指标在界面线程中工作,任何停顿都会暂停整个图表。没有人能保证即时执行 Web 请求。

或许,您可以制作一种类似于 CopyRates 的特殊模式,即第一次调用只请求数据,随后的调用将使用该数据。但我不认为 MQ 会为网络请求制作这样的拐杖,我们必须自己发明它(通过启动脚本或其他方式)。

 
Andrey Khatimlianskii:

市场上有哪些问题?

为什么要访问 µl5?


原因很简单--指标在界面线程中工作,任何暂停都会使整个图表暂停。没有人能保证即时执行网络请求。

也许您可以采用类似于 CopyRates 的特殊模式,即第一次调用只请求数据,随后的调用使用它。但我不认为 MQ 会为网络请求制作这样的拐杖,我们必须自己想办法(通过运行脚本或其他方式)。

让它在运行时 暂停计划,有什么问题呢?我再说一遍:"开发人员自己可以在 编写程序时决定 是否使用 WebRequest"