MT4 一个EA的 start()函数有50行, ordersend()函数在第20行。
当遇到一个信号时, ordersend()正在执行中(因网络或交易商原因 ordersend没有立即执行成功) ,请问这时EA会怎样执行?
我的假设:当ordersend()正在执行中还未成功时,EA继续执行下一个语句(第21行),直到最后一个语句(第50行),然后从start函数第1行重新开始。
由于ordersend()还在执行中,系统判断没有订单,对同一个信号又重复下单了
请问我的假设是错的吗。 正确的EA 执行流程会是什么样的,请指点,谢谢。
- MQL4 ea ordersend正在执行中,EA会继续执行下一个语句,直到最后一个语句,然后从start函数第一行重新开始吗
- call ordersend from within c++?
- ordersend error 131 with new version of MT4
用GetLastError()获取未执行成功的原因,然后根据返回错误代码的不同,采取不同的处理方式。处理下单不仅仅是OrderSend()一句就OK的。。
比如,用循环下单直到返回成功再退出,思路:OrderSend() failed - sleep() - RefreshRates() - OrderSend() ....
我认为对错误的处理以及在可接受的价格范围内确保成功下单,是下单模块必须具备的。
1648401654c:
记得哪篇文档里提过,EA 和 Script 都是独立线程,而在独立的线程中,交易函数都是阻塞型,即 ordersend() 未得到结果前,不会执行后续语句。
MT4 一个EA的 start()函数有50行, ordersend()函数在第20行。
当遇到一个信号时, ordersend()正在执行中(因网络或交易商原因 ordersend没有立即执行成功) ,请问这时EA会怎样执行?
我的假设:当ordersend()正在执行中还未成功时,EA继续执行下一个语句(第21行),直到最后一个语句(第50行),然后从start函数第1行重新开始。
由于ordersend()还在执行中,系统判断没有订单,对同一个信号又重复下单了
请问我的假设是错的吗。 正确的EA 执行流程会是什么样的,请指点,谢谢。
tradelife:
记得哪篇文档里提过,EA 和 Script 都是独立线程,而在独立的线程中,交易函数都是阻塞型,即 ordersend() 未得到结果前,不会执行后续语句。我最近用EA实测了,确实是阻塞型的。
记得哪篇文档里提过,EA 和 Script 都是独立线程,而在独立的线程中,交易函数都是阻塞型,即 ordersend() 未得到结果前,不会执行后续语句。我最近用EA实测了,确实是阻塞型的。