第6号错误 - 页 11 1...456789101112131415161718...32 新评论 Forex Trader 2005.08.12 12:05 #101 在10分钟图表的50分钟工作中,只有2个重新报价。 没有更多的错误。让我们加入元编辑的字典,并发布变化 Forex Trader 2005.08.12 14:49 #102 在这种情况下,使用RefreshRates函数并获取一个新的买入或卖出值,或者向MarketInfo询问一个新的价格。129是同样的错误,错误的价格--价格已经走得太远了,在等待的时间里有几次价格变化。1 - 这根本不是一个错误。它出现在你试图用你已经设定的相同数值修改一个订单时。很奇怪的是,当你手动确认一个交易时,当你拒绝它时,它就会出现。 谢谢,但是... 我发布的最后一个EA有3秒的滞后和50(!)点的滑移。价格 12张图,每张3秒--价格不会有时间跑那么远。或者我有什么误解吗? Forex Trader 2005.08.12 15:02 #103 为专家添加了RefreshRates(代码如下)。1号错误现在已经堆积如山。 希望你能追踪到它。"冲洗 "是指大约每2-3分钟一次。如果你不这样做--可能是服务器太近,或者电脑速度太快。我的CPU有一部分被一个神经网络包占用了,所以MT得到了50%...现在...在这里,禁用神经网络(有一个暂停按钮,与其他一些程序不同)。第一号错误并没有消失,但已经变得不那么频繁了。MT在 "吃 "55-99%的CPU。把它打开...MT获得的CPU时间减少了1.5倍。错误也变得更加频繁。 double dStopLoss; int nHoursToHold; datetime timePrev = 0; int nBars; int nDelaySeconds = 3; int nSlip = 50; double dLotSize = 0.1; int nMagic = 0; int nDigits; string strTradeSemaphore = "TradeSemaphore"; ////////////////// int init() { nBars = Bars; if(!IsTesting() && !GlobalVariableCheck(strTradeSemaphore)) GlobalVariableSet(strTradeSemaphore, 0.0); dStopLoss = 110 * Point; nHoursToHold = 1; nDigits = MarketInfo( Symbol(), MODE_DIGITS ); if(Symbol() == "EURUSD") nMagic = 1; else if(Symbol() == "EURJPY") nMagic = 2; else if(Symbol() == "USDCHF") nMagic = 3; else if(Symbol() == "GBPUSD") nMagic = 4; else if(Symbol() == "GBPJPY") nMagic = 5; else if(Symbol() == "GBPCHF") nMagic = 6; else if(Symbol() == "USDJPY") nMagic = 7; else if(Symbol() == "AUDUSD") nMagic = 8; else if(Symbol() == "EURGBP") nMagic = 9; else if(Symbol() == "USDCAD") nMagic = 10; else if(Symbol() == "EURCHF") nMagic = 11; else if(Symbol() == "EURAUD") nMagic = 12; return(0); } // ------ int deinit() { return(0); } // ------ int start() { if(Bars < 5) return(0); /* // The previous bar just closed bool bIsBarEnd = false; if(timePrev != Time[0] + nMagic) bIsBarEnd = true; timePrev = Time[0] + nMagic; */ bool bIsBarEnd = false; if(nBars != Bars) { if(IsTesting() || (!IsTesting() && CurTime() > Time[0] + nMagic * nDelaySeconds)) { bIsBarEnd = true; nBars = Bars; } } if(!bIsBarEnd) return(0); // ------ if(!IsTesting()) { while(!IsStopped()) { if(GlobalVariableGet(strTradeSemaphore) == 0.0) GlobalVariableSet(strTradeSemaphore, nMagic); if(GlobalVariableGet(strTradeSemaphore) == nMagic) break; Sleep(1000); } } RefreshRates(); for(int nCnt = OrdersTotal() - 1; nCnt >= 0; nCnt--) { OrderSelect(nCnt, SELECT_BY_POS, MODE_TRADES); if(OrderMagicNumber() == nMagic) { if(CurTime() - OrderOpenTime() > (nHoursToHold - 1) * 60 * 60) { if(OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, nSlip, Aqua); else if(OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, nSlip, OrangeRed); } } } int nSignal = GetSignal(); if(nSignal == OP_BUY) Buy(); else if(nSignal == OP_SELL) Sell(); if(!IsTesting()) GlobalVariableSet(strTradeSemaphore, 0.0); return(0); } // ------ void Sell() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); double dNormalizer = MathPow(10, nDigits); double dBid = Bid;//MathFloor(Bid * dNormalizer) / dNormalizer; //NormalizeDouble(Bid, nDigits); double dStop = Bid + dStopLoss;//MathFloor((Bid + dStopLoss) * dNormalizer) / dNormalizer; //NormalizeDouble(Bid + dStopLoss, nDigits); int nResult = OrderSend(Symbol(), OP_SELL, dLotSize, dBid, nSlip, dStop, 0, "Friday", nMagic, 0, OrangeRed); if(nResult == -1) { int nError = GetLastError(); Alert(Symbol() + ", sell: " + dBid + ", Stop: " + dStop + ", error: " + nError); } } // ------ void Buy() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); double dNormalizer = MathPow(10, nDigits); double dAsk = Ask;//MathFloor(Ask * dNormalizer) / dNormalizer; //NormalizeDouble(Bid, nDigits); double dStop = Ask - dStopLoss;//MathFloor((Ask - dStopLoss) * dNormalizer) / dNormalizer; //NormalizeDouble(Bid + dStopLoss, nDigits); int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, dAsk, nSlip, dStop, 0, "Friday", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(Symbol() + ", buy: " + dAsk + ", Stop: " + dStop + ", error: " + nError); } } // ------ double GetLotSize() { double dLot = 0.1; return(dLot); } // ------ int GetSignal() { int nSignal; if(MathMod(Hour(), 2) == 0) nSignal = OP_BUY; else nSignal = OP_SELL; return(nSignal); } Forex Trader 2005.08.12 21:28 #104 总结一下,我想。似乎任何专家,除了那些独自工作的人,都需要保护性的信号灯。我将在周一尝试开发者推出的新功能(Rosh说开发者不想改变版本!)。我应该多和他联系,这只是一百个帖子的距离)。实际上,非常感谢开发者。也感谢Rosh和作曲家。然而,我们会等到星期一 :) Forex Trader 2005.08.12 22:32 #105 不,肯定要到星期一才行 =))) 南方在召唤,新功能将在一周内及时测试=))))) ...也谢谢你,至少有人尝试解决了错误;) Forex Trader 2005.08.12 22:42 #106 总结一下,我想。似乎任何专家,除了那些独自工作的人,都需要保护性的信号灯。我将在周一尝试开发者推出的新功能(Rosh说开发者不想改变版本!)。我应该多和他联系,这只有一百个帖子的距离)。实际上,非常感谢开发者。也感谢Rosh和作曲家。然而,周一见 :)<br / translate="no"> 夸克,我写的是开发者,而不是开发者。:)明白吗?在一些宗教中,它是上帝,在其他宗教中,它是一个不同的地址。 另外,我还写道,我的9个EA在一个账户上运行良好。但你很善于发现MT4在铲除一些错误时的状况 :) Forex Trader 2005.08.13 09:02 #107 <br / translate="no"> 不,要到星期一才行 =))) 周一见 :) 南方在召唤,新的f函数将在一周内及时测试=))))) 向南方打个招呼。 ...也谢谢你,至少有人尝试解决了错误;) 有一个错误。而其中有多少人... Forex Trader 2005.08.13 09:09 #108 <br / translate="no"> 夸克,我写的是开发者,而不是开发商。:) 我只是在开玩笑 :)虽然这个原则在哪里都是一样的。如果你问得正确,你就会得到答案。如果你说脏话,你会被禁言 :) 而且我还写道,我的9个EA在同一个账户上运行良好。但你很善于发现MT4在铲除一些错误时的状况 :) 72个窗口与我的12名议员--也是。然后我加上了第13个,就这样了......。当然,一般来说,如果我采用这个分支中发布的最后一个EA,用它来代替分钟,并将暂停时间从3秒增加到30秒(顺便说一下,按照你的建议),就不会出现错误。因此,结果已经达到了,一个积极的结果......。 对于英语论坛的人来说,这是一个遗憾,但我不会为他们翻译我们的帖子。健康状况不佳 :( 好运。 夸克 Forex Trader 2005.08.22 15:12 #109 尽管做了这些工作,第6号错误仍在发生。当MT使用优化器并同时开仓时就会发生这种情况。我已经抓了两次。再次运行专家顾问--如果开仓的 条件仍然有效--结果是开仓了,没有问题。 Forex Trader 2005.08.22 23:07 #110 看来,当优化器运行时,错误6的可能性更大。重启计算机、MT等措施都不能改变情况。 这个问题发生在不同的EA上。所有这些的逻辑都被修改了,用semaphores(如Slava建议的那样)和延迟(Rosh)--所以在给定的10秒内只有一个EA在工作。我上面提到的所有错误都消失了(到目前为止),除了第6条。 1...456789101112131415161718...32 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢,但是...
我发布的最后一个EA有3秒的滞后和50(!)点的滑移。价格
12张图,每张3秒--价格不会有时间跑那么远。或者我有什么误解吗?
希望你能追踪到它。"冲洗 "是指大约每2-3分钟一次。如果你不这样做--可能是服务器太近,或者电脑速度太快。我的CPU有一部分被一个神经网络包占用了,所以MT得到了50%...现在...在这里,禁用神经网络(有一个暂停按钮,与其他一些程序不同)。第一号错误并没有消失,但已经变得不那么频繁了。MT在 "吃 "55-99%的CPU。把它打开...MT获得的CPU时间减少了1.5倍。错误也变得更加频繁。
南方在召唤,新功能将在一周内及时测试=)))))
...也谢谢你,至少有人尝试解决了错误;)
夸克,我写的是开发者,而不是开发者。:)明白吗?在一些宗教中,它是上帝,在其他宗教中,它是一个不同的地址。
另外,我还写道,我的9个EA在一个账户上运行良好。但你很善于发现MT4在铲除一些错误时的状况 :)
周一见 :)
南方在召唤,新的f函数将在一周内及时测试=)))))
向南方打个招呼。
...也谢谢你,至少有人尝试解决了错误;)
有一个错误。而其中有多少人...
我只是在开玩笑 :)虽然这个原则在哪里都是一样的。如果你问得正确,你就会得到答案。如果你说脏话,你会被禁言 :)
而且我还写道,我的9个EA在同一个账户上运行良好。但你很善于发现MT4在铲除一些错误时的状况 :)
72个窗口与我的12名议员--也是。然后我加上了第13个,就这样了......。当然,一般来说,如果我采用这个分支中发布的最后一个EA,用它来代替分钟,并将暂停时间从3秒增加到30秒(顺便说一下,按照你的建议),就不会出现错误。因此,结果已经达到了,一个积极的结果......。
对于英语论坛的人来说,这是一个遗憾,但我不会为他们翻译我们的帖子。健康状况不佳 :(
好运。
夸克
这个问题发生在不同的EA上。所有这些的逻辑都被修改了,用semaphores(如Slava建议的那样)和延迟(Rosh)--所以在给定的10秒内只有一个EA在工作。我上面提到的所有错误都消失了(到目前为止),除了第6条。