em 50 minutos de trabalho em gráficos de 10 minutos apenas 2 requotes. sem mais erros. vamos adicionar o dicionário do meta-editor e postar as mudanças
erro 138 pode facilmente ocorrer. potencialmente com 10 EAs de trabalho o tempo de espera para liberação do semáforo pode ser de 30 segundos ou mais. durante este tempo o preço pode facilmente mudar. neste caso use a função RefreshRates e faça uma nova oferta ou peça um novo valor. ou peça MarketInfo por um novo preço. 129 é o mesmo erro, preço errado - o preço foi longe demais e houve várias mudanças de preço durante o tempo de espera. 1 - isto não é um erro. aparece quando você está tentando modificar uma ordem com os mesmos valores que você já definiu. é estranho que isso ocorra quando você confirma manualmente uma troca quando a rejeita
Obrigado, mas... O último EA I postado tem um atraso de 3 segundos e 50 (!) pips slippage. Preço 12 gráficos de 3 segundos cada - o preço não terá tempo para correr tão longe. Ou estou entendendo mal alguma coisa?
Acrescentado RefreshRates a especialista (código abaixo). Os erros número 1 estão agora se acumulando. Esperamos que você possa rastreá-lo. "Rashing" significa cerca de uma vez a cada 2-3 minutos. Se você não o fizer - provavelmente o servidor está muito próximo, ou o computador está muito rápido. Tenho parte da minha CPU ocupada por um pacote de rede neural, então a MT recebe 50%. Agora... Aqui, desativou a rede neural (há um botão de pausa, ao contrário de alguns outros programas). O erro número um não desapareceu, mas se tornou um pouco menos freqüente. MT está "comendo" 55-99% da CPU. Ligando-o... MT recebe 1,5 vezes menos tempo de CPU. Os erros também se tornaram mais freqüentes.
Para resumir, eu acho. Parece que qualquer especialista, exceto aqueles que trabalham sozinhos, precisa de semáforos de proteção. Vou tentar o novo recurso introduzido pelos desenvolvedores na segunda-feira (e Rosh disse que o Desenvolvedor não quer mudar a versão! Eu deveria contatá-lo com mais freqüência, fica a apenas uma centena de postos). Na verdade, muito graças aos desenvolvedores. Graças também a Rosh e Composer. Entretanto, vamos esperar até segunda-feira :)
Para resumir, eu acho. Parece que qualquer especialista, exceto aqueles que trabalham sozinhos, precisa de semáforos de proteção. Vou tentar o novo recurso introduzido pelos desenvolvedores na segunda-feira (e Rosh disse que o Desenvolvedor não quer mudar a versão! Eu deveria contatá-lo com mais freqüência, fica a apenas uma centena de postos). Na verdade, muito graças aos desenvolvedores. Graças também a Rosh e Composer. No entanto, até segunda-feira :)<br / translate="no">
Quark, eu escrevi sobre a Desenvolvedora, não sobre os desenvolvedores. :) Entendeu? Em algumas religiões é Deus, em outras é um endereço diferente. Além disso, escrevi que meus 9 EAs funcionam bem em uma única conta. Mas você é bom em encontrar as condições quando o MT4 está empurrando algo errado :)
<br / translate="no"> Quark, eu escrevi sobre a Desenvolvedora, não sobre os desenvolvedores. :)
Eu estava apenas brincando :) Embora o princípio seja o mesmo em todos os lugares. Se você perguntar corretamente, você receberá uma resposta. Se você jurar, você será banido :)
E também escrevi que meus 9 EAs estão funcionando bem pelo mesmo motivo. Mas você é bom em encontrar as condições quando o MT4 está empurrando algo errado :)
72 janelas com 12 dos meus conselheiros - também. Depois acrescentei a 13ª, e aqui vamos nós... Em geral, é claro, se eu pegar o último EA postado neste ramo e usá-lo em relógios em vez de minutos, e aumentar a pausa de 3 segundos para 30 (como você sugeriu, a propósito) não haverá erros. Assim, o resultado é alcançado, um resultado positivo.
É uma pena os caras do fórum inglês, mas eu não vou traduzir nossos posts para eles. Não em boa saúde :(
Apesar do trabalho realizado, o erro número 6 continua a ocorrer. Isso acontece quando a MT usa o otimizador e abre uma posição ao mesmo tempo. Eu já o peguei duas vezes. A execução do Expert Advisor novamente - se as condições para abrir uma posição ainda forem válidas - resulta na abertura de uma posição, sem problemas.
Parece que quando o otimizador está correndo, o erro 6 é muito mais provável. Reiniciar o computador, MT etc. medidas não mudam a situação.
O problema ocorre em diferentes EAs. A lógica em todos eles foi modificada com semáforos (como Slava sugeriu) e atraso (Rosh) - de modo que em 10 segundos apenas 1 EA estava funcionando. Todos os erros que mencionei acima desapareceram (até o momento), exceto o número 6.
Obrigado, mas...
O último EA I postado tem um atraso de 3 segundos e 50 (!) pips slippage. Preço
12 gráficos de 3 segundos cada - o preço não terá tempo para correr tão longe. Ou estou entendendo mal alguma coisa?
Esperamos que você possa rastreá-lo. "Rashing" significa cerca de uma vez a cada 2-3 minutos. Se você não o fizer - provavelmente o servidor está muito próximo, ou o computador está muito rápido. Tenho parte da minha CPU ocupada por um pacote de rede neural, então a MT recebe 50%. Agora... Aqui, desativou a rede neural (há um botão de pausa, ao contrário de alguns outros programas). O erro número um não desapareceu, mas se tornou um pouco menos freqüente. MT está "comendo" 55-99% da CPU. Ligando-o... MT recebe 1,5 vezes menos tempo de CPU. Os erros também se tornaram mais freqüentes.
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); }O Sul está chamando, e o novo recurso será prontamente testado em uma semana =)))))
...e obrigado também, pelo menos alguém tentou resolver os bugs ;)
Quark, eu escrevi sobre a Desenvolvedora, não sobre os desenvolvedores. :) Entendeu? Em algumas religiões é Deus, em outras é um endereço diferente.
Além disso, escrevi que meus 9 EAs funcionam bem em uma única conta. Mas você é bom em encontrar as condições quando o MT4 está empurrando algo errado :)
Até segunda-feira :)
O Sul está chamando e a nova f-função será prontamente testada em uma semana =)))))
Um grande olá para o Sul.
...e obrigado também, pelo menos alguém tentou resolver os bugs ;)
Com um erro. E quantos deles...
Eu estava apenas brincando :) Embora o princípio seja o mesmo em todos os lugares. Se você perguntar corretamente, você receberá uma resposta. Se você jurar, você será banido :)
E também escrevi que meus 9 EAs estão funcionando bem pelo mesmo motivo. Mas você é bom em encontrar as condições quando o MT4 está empurrando algo errado :)
72 janelas com 12 dos meus conselheiros - também. Depois acrescentei a 13ª, e aqui vamos nós... Em geral, é claro, se eu pegar o último EA postado neste ramo e usá-lo em relógios em vez de minutos, e aumentar a pausa de 3 segundos para 30 (como você sugeriu, a propósito) não haverá erros. Assim, o resultado é alcançado, um resultado positivo.
É uma pena os caras do fórum inglês, mas eu não vou traduzir nossos posts para eles. Não em boa saúde :(
Boa sorte,
Quark
O problema ocorre em diferentes EAs. A lógica em todos eles foi modificada com semáforos (como Slava sugeriu) e atraso (Rosh) - de modo que em 10 segundos apenas 1 EA estava funcionando. Todos os erros que mencionei acima desapareceram (até o momento), exceto o número 6.