- Erro ao ativar VPS
- Universal MA Cross EA
- Problemas de comunicação difíceis
Responda, por favor. Se for o caso, vou apenas providenciar um atraso, mas gostaria de saber o motivo primeiro.
Estou repetindo minha pergunta com uma redação ligeiramente diferente: Erro número seis (as citações estão disponíveis, mas o servidor comercial não está) - é porque o servidor está sobrecarregado no início da barra de horas? Devo pesquisar o problema em um Expert Advisor ou apenas abrir negócios, digamos, 3 minutos após o início de um bar, quando a carga no servidor é menor?
A segunda pergunta da mesma série: se eu tiver muitos Expert Advisors de uma só vez e todos eles fizerem algo no início de um bar, haverá problemas? Ou cálculos apenas alinhados? Por exemplo, o que acontecerá se a EA não tiver tido tempo de completar o cálculo, e um novo tick tiver chegado - ela terminará o cálculo pelo preço antigo? E se houver um novo tick, você garantirá que o cálculo (eu verifico o início da barra com o código que você recomendou em seu tutorial) ainda vai mostrar o início da barra?
Estas são perguntas importantes, eu gostaria de ter mais detalhes.
Cumprimentos,
Quark
2. os especialistas trabalham em paralelo, cada um em seu próprio fio. se um novo tick chegar e o especialista ainda estiver trabalhando, o tick será ignorado. todos os dados de preço com os quais o especialista trabalha permanecem originais (o especialista trabalha de fato com uma cópia dos dados). para tomar os dados mais recentes, alterados, há uma função RefreshRates
Na verdade, fiz a pergunta porque cometi 6 erros duas vezes ao tentar abrir uma posição no início de um bar:
bool bIsBarEnd = false; if(timePrev != Time[0]) bIsBarEnd = true; timePrev = Time[0]; if(!bIsBarEnd) return(0);
A questão permanece - é por causa da sobrecarga do servidor, já que TODOS estão mais ativos no início do bar? Ou é devido a algo mais?
Se alguém da Alpari estiver lendo este post - conta 116122.
Este é o único dos meus Conselheiros Especializados que dá um alerta para erros desta natureza. Sugiro àqueles que têm EAs de demonstração que coloquem alertas se a OrderSend retornar -1 (caso esta situação ocorra com bastante freqüência). Aqui está o código para comprar, o princípio é o mesmo para vender:
int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Comment", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(nError); }
Além disso, por precaução, estou citando todo o especialista, exceto a parte em que a lógica está envolvida (certamente não tem nada a ver com isso). Dê uma olhada, por favor. Ainda assim, me parece que se trata de MT. O Expert Advisor apenas fica pendurado no gráfico horário do EURUSD e periodicamente gera erros em vez de negociações.
Quero observar que a primeira execução (quando a EA é anexada a um gráfico ou quando seu código é recompilado) não mostra erros e corre normalmente. Ou seja, você recebe um erro, pressione F5 no editor após 5 segundos, o Expert Advisor começou e uma profissão foi aberta.
Ajuda em geral, por favor!
double dStopLoss; int nHoursToHold; datetime timePrev = 0; bool bIsFirst = true; int nSlip = 5; double dTp = 0; double dLotSize = 0.1; int nNumOfExperts = 5; int nMagic = 0; ////////////////// int init () { timePrev = 0; if(Symbol() == "EURUSD" && Period() == 60) { dStopLoss = 110 * Point; nHoursToHold = 1; nMagic = 23; } 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]) bIsBarEnd = true; timePrev = Time[0]; if(!bIsBarEnd) return(0); // ------ int nSignal = GetSignal(); if(nSignal == OP_BUY) Buy(); else if(nSignal == OP_SELL) Sell(); for(int nCnt = 0; nCnt < OrdersTotal(); 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); } } } return(0); } // ------ void Sell() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_SELL, dLotSize, Bid, nSlip, Bid + dStopLoss, 0, "Comment", nMagic, 0, OrangeRed); if(nResult == -1) { int nError = GetLastError(); Alert(nError); } } // ------ void Buy() { if(AccountFreeMargin() < 500) return; dLotSize = GetLotSize(); int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Comment", nMagic, 0, Aqua); if(nResult == -1) { int nError = GetLastError(); Alert(nError); } } // ------ double GetLotSize() { double dLot = 0.1; return(dLot); } // ------ int GetSignal() { int nSignal = OP_BUY; return(nSignal); } // ------
Manuseio de quê? Quantas alças você tem? Existe um limite para o número de EAs, gráficos, etc.?
P.S. Esta pergunta não cancela meu post anterior :)
Já tive Expert Advisors dando este erro apenas 5 vezes em meio ano
Sobre alertas - inconveniente. Eu tenho um envio para e-mail + escrita para arquivo. Em breve terminarei as bibliotecas com as funções apropriadas - vou colocá-las
Eu só tive esse erro 5 vezes em meio ano
Sobre os alertas - inconveniente. Eu tenho um envio para e-mail + escrita para arquivo. Em breve finalizarei a biblioteca com as funções apropriadas - afixá-la-ei.
Pelo contrário, é conveniente. O alerta não interfere em nada, MT continua trabalhando, mas você pode vê-lo imediatamente... um.... se você estiver sentado no seu computador... Sim, eu entendo :)
"Meu" perito dá este erro 70% do tempo. Quero dizer, não este, mas 2, 6, 14... em suma, não sistematicamente. Verificado os preços, parece estar correto... Como as fontes de MT estão com os desenvolvedores e os servidores estão com a Alpari, é basicamente com eles que se trata. Embora seria ótimo se outra pessoa executasse a coisa e confirmasse que o problema é reproduzido em seu computador.
Manuseio de quê? Quantos desses cabos você tem? Existe um limite para o número de especialistas, gráficos, etc.?
em 98, onde o número de alças por processo é uma ordem de magnitude menor do que em 2000, o erro de falta de recursos apareceu muito rapidamente, incluindo a incapacidade de abrir um soquete para o comércio. durante um longo trabalho, este erro também apareceu em 2000. por que este erro apareceu apenas em construções recentes é um mistério natural.
há um limite no número de gráficos - 99. por isso também há um limite no número de EAs
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso