Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.