同时运行一个以上的EA - 页 2 1234 新评论 Drazen Penic 2014.04.23 21:26 #11 首先,确保你用一些有意义的默认值初始化了所有的变量。例如,你在初始化BuyTicket之前 使用它,所以在第一次运行时它可以是任何值。 摘自MQL4参考文件(MQL4参考/语言基础知识/变量/变量的初始化)。 If a variable is not initialized explicitly, the value stored in this variable can be any. Implicit initialization is not used. 所以,在下面的部分中,给变量添加默认值。 //Global Variables int BuyTicket; int SellTicket; double InternalStopLoss; double CalcDigits; double CalcPoint; bool MABuyFanning; bool MASellFanning; int SelectedOrder; bool Closed; int ErrorCode; string ErrLog; double BuyStopLoss; double SellStopLoss; bool NewBar; double ThisBarOpen; double SmallMA; double MediumMA; double LargeMA; Drazen Penic 2014.04.23 21:31 #12 而且,是的,MQL4有错误和怪癖,但大部分的错误只需阅读参考手册中的基本知识就可以避免了。 另外,有一篇关于MQL4程序中常见错误的文章。查看 论坛的顶部,你会发现链接。 Syed Naufal Gaddafi 2014.04.23 21:37 #13 drazen64: 首先,确保你用一些有意义的默认值初始化了所有的变量。例如,你在初始化BuyTicket之前 使用它,所以在第一次运行时它可以是任何值。 摘自MQL4参考文件(MQL4参考/语言基础知识/变量/变量的初始化)。 所以,在下面的部分中,给变量添加默认值。 这是真的,但是,这取决于使用情况。有时你只想声明它,因为你知道值将来自哪里,而有时你确实需要用一些东西来初始化它,因为如果它没有用特定的默认值初始化,它可能无法正常工作。 Drazen Penic 2014.04.23 21:51 #14 deysmacro: 这是真的,然而,这取决于使用情况。有时你只想声明它,因为你知道值将从哪里来,而有时你确实需要用一些东西来初始化它,因为如果它没有用特定的默认值初始化,它可能无法正常工作。 他不需要在定义的地方初始化变量,但他绝对应该在使用变量之前将其初始化为某个值。 如果他在初始化之前使用它们,值是不可预知的。他的错误也是如此。在进行更深入的代码分析 之前,他应该先处理好这个问题。 如果你试图使用未初始化的变量,现代编译器会引发错误。不幸的是,MQL4不会这样做,所以编码者必须确保所有的东西都被正确初始化。 Syed Naufal Gaddafi 2014.04.23 21:54 #15 你可以向他指出 1点,他使用var时没有适当的初始化。 Drazen Penic 2014.04.23 22:05 #16 deysmacro: 你可以向他指出 一件事,他在使用var时没有适当的初始化。 请阅读https://www.mql5.com/en/forum/151167/page2#954612 第一行中的第二句话 你可以在批评之前先看看 答案。 BTW,你在这里有什么帮助?"聪明 "的言论并没有什么帮助。 Keith Watford 2014.04.23 22:07 #17 for(Counter = 0; Counter <=OrdersTotal()-1; Counter++) { SelectedOrder = OrderSelect(Counter,SELECT_BY_POS); if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && OrderType() == OP_BUY) { // while(IsTradeContextBusy()) Sleep(10); Closed = OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),Slippage,Red); if(Closed == true) BuyTicket = 0; else Alert("Symbol: ",Symbol()," Ticket: ",BuyTicket," unable to close buy order(s): buy ma convergence close routine"); } Counter--; } Syed Naufal Gaddafi 2014.04.23 22:07 #18 我在发我的帖子之前确实读过。我的意思是,给他看一个与var有关的东西,而那个var没有被正确初始化。 嘿嘿。GumRai打败了它。XD Drazen Penic 2014.04.23 22:28 #19 如果我没有理解错的话,你是说他使用了未初始化的变量这一事实不需要担心,只是因为我没有准确指出在程序启动时BuyTicket和其他一些变量包含一些未知的值而可能发生什么? 好吧,那就这样吧。让他使用未初始化的变量。有什么可能出错呢? Sneck55 2014.04.24 13:33 #20 我已经按照建议初始化了所有的变量,并从布尔运算中删除了"==true"。此外,我还删除了代码行内的所有银行空间。我在两个不同的符号上使用调试器进行了测试--一个在笔记本上,一个在电脑上,大约2个小时,它们都运行良好,在正确的时间卖出、买入和关闭,没有任何错误。然而,随后我将EA添加到PC和笔记本电脑上的另外3个符号上,这样,所有4个符号都在两个终端上工作,从那时起,所有符号都开始错过进场和退场。在测试结束时,在一个终端上,我在关闭未结头寸之前删除了EA,在另一个终端上,我在关闭未结头寸之后删除了EA。仍有未平仓头寸的终端花了很长的时间来移除EA,但没有未平仓头寸的终端则立即移除了所有4个EA。修订后的代码在下面单独发布。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
首先,确保你用一些有意义的默认值初始化了所有的变量。例如,你在初始化BuyTicket之前 使用它,所以在第一次运行时它可以是任何值。
摘自MQL4参考文件(MQL4参考/语言基础知识/变量/变量的初始化)。
If a variable is not initialized explicitly, the value stored in this variable can be any. Implicit initialization is not used.
所以,在下面的部分中,给变量添加默认值。
而且,是的,MQL4有错误和怪癖,但大部分的错误只需阅读参考手册中的基本知识就可以避免了。
另外,有一篇关于MQL4程序中常见错误的文章。查看 论坛的顶部,你会发现链接。
首先,确保你用一些有意义的默认值初始化了所有的变量。例如,你在初始化BuyTicket之前 使用它,所以在第一次运行时它可以是任何值。
摘自MQL4参考文件(MQL4参考/语言基础知识/变量/变量的初始化)。
所以,在下面的部分中,给变量添加默认值。
这是真的,但是,这取决于使用情况。有时你只想声明它,因为你知道值将来自哪里,而有时你确实需要用一些东西来初始化它,因为如果它没有用特定的默认值初始化,它可能无法正常工作。
这是真的,然而,这取决于使用情况。有时你只想声明它,因为你知道值将从哪里来,而有时你确实需要用一些东西来初始化它,因为如果它没有用特定的默认值初始化,它可能无法正常工作。
他不需要在定义的地方初始化变量,但他绝对应该在使用变量之前将其初始化为某个值。
如果他在初始化之前使用它们,值是不可预知的。他的错误也是如此。在进行更深入的代码分析 之前,他应该先处理好这个问题。
如果你试图使用未初始化的变量,现代编译器会引发错误。不幸的是,MQL4不会这样做,所以编码者必须确保所有的东西都被正确初始化。
你可以向他指出 一件事,他在使用var时没有适当的初始化。
请阅读https://www.mql5.com/en/forum/151167/page2#954612 第一行中的第二句话
你可以在批评之前先看看 答案。
BTW,你在这里有什么帮助?"聪明 "的言论并没有什么帮助。
我在发我的帖子之前确实读过。我的意思是,给他看一个与var有关的东西,而那个var没有被正确初始化。
嘿嘿。GumRai打败了它。XD
如果我没有理解错的话,你是说他使用了未初始化的变量这一事实不需要担心,只是因为我没有准确指出在程序启动时BuyTicket和其他一些变量包含一些未知的值而可能发生什么?
好吧,那就这样吧。让他使用未初始化的变量。有什么可能出错呢?