我如何Maintenance
从网站获得“”价值
使用MQL4
脚本?
据我了解,我必须设置互联网连接,从站点获取数据,解析它并获取数据。
有没有办法我可以做到这一点?
我将不胜感激任何例子。
这意味着(如果不使用 DLL 解决方法)整个任务将需要重新发明轮子并在 MQL4 中构建 HTML 解析器。可行但浪费任何人的资源。
一旦要使用 DLL 导入的功能,可能只是绕过 MQL4 代码执行限制并调用 Windows-API 服务来分叉子进程并使事情向前发展,但在我看来,Windows-API 是功能丰富的接口框架,但是对于基本服务的相当低级的访问,所以您终于可以发现自己再次重新发明轮子,好吧,现在“超出”了 MQL4 沙盒的限制。
如果您不限制我们的想象力,您的项目可能会受益于 Python 中的快速原型设计,并在异构 Python/MQL4 环境中设置对等分布式消息传递/控制。
除了其他好处之外,Python 在智能和强大(不仅)Web 内容处理方面的优势是惊人的,因此这种分布式方法将把您的 MQL4 项目打开到战略性的新的、看不见的维度。
Python 智能抓取(不是一个愚蠢的):
def askAtPublisherWebURL( aControlDICT,
aURL = "https://globalde?.?.?.?y?.com/en/products/.../...-DLON?Class_type=class_symbol=???&Class_exchange=???&ps=999&md=03-2014",
anOPT = "ESX",
aMaturityDATE = "03-2014",
anEmailRECIPIENT = "Me.Robot-GWY-2013-PoC@gmail.com",
aFileNAME = "ESX_2014-03_anObservedStateTIMESTAMP[]"
):
import time, urllib, re, winsound, urllib2 # late, dirty import
try:
aReturnFLAG = True
anOutputSTRING = "|TRYING: " + aURL # a crash-proof proxy-value for a case IOError <EXC> would appear
# --------------------------------------------------------# urllib2 MODE
anInputHANDLER = urllib2.urlopen( aURL, None, 120 ) # urllib2 MODE with a 120 [sec] timeout before urllib2.URLError ... still gets stuck during peak-hours ( on aMaturityDATE )
aListOfLINEs = anInputHANDLER.readlines()
anInputHANDLER.close()
# --------------------------------------------------------# urllib2 MODE
except urllib2.URLError as anExcREASON:
aReturnFLAG = False
# no RET here // JMP .FINALLY: to log IOError....
except exceptions.IOError as ( ErrNO, ErrSTR ): # an IOError <EXC> hase appeared, handle with care before JMP .FINALLY:
aReturnFLAG = False
else: # no IOError or any other <EXC>, process the <content> .. JMP .FINALLY:
# ------------------------------------------------------# HTML-processor
# smart html-processing goes here
# ...
# ------------------------------------------------------# HTML-processor
finally: # in any case do all this TIDY-UP-BEFORE-EXIT
# fileIO + pre-exit ops
# sendMsg4MQL() --> SIG MT4
return aReturnFLAG # MISRA-motivated single point of RET
对于鹰派 Pythoneers,该帖子有意使用非 PEP-8 源代码格式,因为作者体验到,在学习阶段,代码可读性提高了对任务解决方案的关注,并有助于习惯底层概念,而不是花费精力关于正式遵守的排版。希望提供帮助的原则得到尊重,以易于阅读的名义原谅非 PEP-8 样式格式。