Erro número 6

 
"Sem conexão com servidor comercial". Seria ótimo, mas aparece de vez em quando ao tentar abrir uma ordem. Quando reinicio a MT, o pedido se abre imediatamente. Alguém sabe o que está acontecendo?
 
Também, uma pergunta para os desenvolvedores. Se estou negociando no início do bar, e 1000 outras pessoas também, não é essa a razão pela qual o servidor não está disponível no início do bar?

Responda, por favor. Se for o caso, vou apenas providenciar um atraso, mas gostaria de saber o motivo primeiro.
 
Caros desenvolvedores!
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
 
1. Qual é o seu sistema operacional?
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
 
Windows 2000

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?

 
Não acho que seja do servidor. estamos lidando atualmente com este erro no win98. mas é claro o que está causando isto lá - as alças estão faltando.
 
Agora, às 13h00, horário de Moscou, o mesmo Expert Advisor tem o erro número 2 - erro comum.
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);
}

// ------




 
Não acho que seja do servidor. atualmente estamos lidando com este erro no win98. mas é claro o que está causando isto lá - não há alças suficientes.


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 :)
 
O Expert Advisor deu o erro número 2 - erro comum.
Erro raro o suficiente =)
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
 
эксперт выдал ошибку номер 2 - common error.
um erro bastante raro =)
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.
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


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
Razão: