1. 同一段代码在EA中执行和在Script脚本中执行有什么区别。我写了一段代码,放在EA中的start()函数中运行一切正常,但是复制到Script脚本中的start()函数中不能运行,提示“不能调用函数”。
请问这是怎么回事,将上述代码加入到Script脚本中,还需要做哪些调整,谢谢!
2. 如何查看MQL4中的系统函数原代码,比如OrderSend()函数的原代码,可以看吗?在哪里看到?
谢谢!
1、通常,EA是随着tick数据的不断更新,而持续运行、计算的;脚本则不同,它只运行一次然后自动卸载退出。
2、通常,EA和脚本的基本代码是相通的,比如OrderSend()函数无论是在EA还是脚本里面都会被支持;但完整的结构上会有不同,所以具体的情况要具体的对待。
3、至于MQL4自身的函数,没有现成的办法看到源代码,似乎也完全没有这个必要,除非另有企图~~
以上仅代表个人观点~~
int total=OrdersTotal();
for(int i=total-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{Print("选择订单失败,",GetLastError());continue;}
if(0==OrderType())
if(OrderClose(OrderTicket(),OrderLots(),Bid,30));
else Print("平单-buy失败:",GetLastError());
else if(1==OrderType())
if(OrderClose(OrderTicket(),OrderLots(),Ask,30));
else Print("平单-sell失败:",GetLastError());
else
if(OrderDelete(OrderTicket()));
else Print("删除订单失败",GetLastError());
}
如上几行代码,如果写在EA中运行无误,可以实现既定目的;但是写在Script脚本里,没法运行,且提示无法调用函数“cann't call function”,不知此为何故?
谢谢!
要表达的是平掉所有订单并且删除所有挂单,本身不复杂;
但是写法个人感觉有点凌乱,导致逻辑上出现错误;在EA里面能运行无误已经很了不得了。
今天没有行情数据,我没办法完成修改后的测试,你在仔细检查一下吧。