python连接mt4_软件开发公司_软件外包_项目外包平台外汇交易软件MT4的Python接口程序的BUG修改...

附件中的C++源代码是实现用python来控制MT4交易软件的工具,主要是使用boost中的通信协议,一个是MT4中的EA程序,在MT4中执行它,它作为一个服务端,用一个端口来监听命令,另一个是python的链接库,供python来和MT4中的服务器程序进行沟通,从而实现MT4命令的执行。

这段代码是用vs2015写的,可以正常编译,但是这段程序有一个BUG,就是当涉及到时间的时候,一些在MT4上执行得很好的命令,在pythhon中调用命令的时候,却执行得不对,例如我在 PyMT4_example_account_information.py 中

if __name__ == "__main__":

connected = Connect()

if connected:

后面增加:

print "TimeCurrent".ljust(10),":", time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(TimeCurrent()))

print "TimeLocal".ljust(10),":", time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(TimeLocal()))

print "TimeGMT".ljust(10),":", time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(TimeGMT()))

print "iBars".ljust(10),":", iBars("EURUSD", PERIOD_M1)

print "iClose".ljust(10), ":", iClose("EURUSD", PERIOD_M1, 3)

print "iVolume".ljust(10), ":", iVolume("EURUSD", PERIOD_M1, 3)

print "iTime".ljust(10),":", iTime("EURUSD", PERIOD_M1, 3)

前面三个不包含参数的关于时间函数的调用 TimeCurrent()、 TimeLocal()、TimeGMT()都返回了很大的一个整数,这个是时间戳,没有错误,可是最后一句 iTime("EURUSD", PERIOD_M1, 3), PERIOD_M1是个整数常量,表示取得是1分钟数据,3表示第3个行情柱,却取不到值,返回0,从2开始就都是0了,即使是0,返回的值也不对。我看了一下代码,应该在 pymt4_client_dispatcher.h 中的

template R DispatchFunction(const CommandIdentifier& commandIdentifier, const A&... args)

{

//boost::mutex::scoped_lock dispatchLock(_dispatchLock);

std::tuple< const A*...> tuple(&args;...);

这一段,这一段都是boost的通信协议方面的代码,我不知道怎么改了,能否帮我改一下,让iTime()能返回正常的值。我的运行环境是python2.7 64位版本,也就是需要你提供编译好的64位的python动态链接库文件 PyMT4.pyd。

我只要求你修改这个源代码的一个关于调用MT4时间的一个BUG,相信会的人很快就调试好了,不会花很多时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值