Error número 6

 
"No hay conexión con el servidor de comercio". Estaría bien, pero aparece de vez en cuando al intentar abrir un pedido. Cuando reinicio MT, la orden se abre inmediatamente. ¿Alguien sabe cuál es el problema?
 
Además, una pregunta para los desarrolladores. Si estoy negociando al principio de la barra, y otras 1000 personas también, ¿no es esa la razón por la que el servidor no está disponible al principio de la barra?

Responde, por favor. Si es así, le proporcionaré un retraso, pero me gustaría saber primero la razón.
 
Queridos desarrolladores
Repito mi pregunta con una redacción ligeramente diferente: Error número seis (las cotizaciones están disponibles, pero el servidor de comercio no lo está), ¿se debe a que al principio de la barra de horas el servidor está sobrecargado? ¿Debo buscar el problema en un Asesor Experto o simplemente abrir operaciones, digamos, 3 minutos después del comienzo de una barra, cuando la carga en el servidor es menor?

La segunda pregunta de la misma serie: si tengo muchos Asesores Expertos a la vez y todos ellos hacen algo al principio de una barra, ¿habrá problemas? ¿O los cálculos sólo se alinean? Por ejemplo, ¿qué ocurrirá si el EA no ha tenido tiempo de completar el cálculo y llega un nuevo tick: terminará el cálculo con el precio anterior? Y si hay un nuevo tick, ¿me garantizas que el cálculo (compruebo el inicio de la barra con el código que has recomendado en tu tutorial) seguirá mostrando el inicio de la barra?

Son preguntas importantes, me gustaría tener más detalles.

Saludos,
Quark
 
1. ¿cuál es su sistema operativo?
2. los expertos trabajan en paralelo, cada uno en su propio hilo. si llega un nuevo tick y el experto sigue trabajando, el tick será ignorado. todos los datos de precios con los que trabaja el experto siguen siendo originales (el experto trabaja realmente con una copia de los datos). para tomar los datos más recientes, modificados, existe una función RefreshRates
 
Windows 2000

En realidad, hice la pregunta porque obtuve el error 6 dos veces al intentar abrir una posición al principio de una barra:

bool bIsBarEnd = false; if(timePrev != Time[0]) bIsBarEnd = true; timePrev = Time[0]; if(!bIsBarEnd) return(0); ....



La pregunta sigue siendo: ¿se debe a la sobrecarga del servidor, ya que TODO está más activo al principio de la barra? ¿O se debe a algo más?

 
No creo que sea del servidor. actualmente estamos lidiando con este error en win98. pero está claro lo que está causando allí - las asas están desaparecidas.
 
Ahora, a las 13:00 hora de Moscú, el mismo Asesor Experto tiene el error número 2 - error común.
Si alguien de Alpari está leyendo este post - cuenta 116122.

Este es el único de mis Asesores Expertos que da una alerta por errores de esta naturaleza. Sugiero a los que tienen EAs de demostración que pongan alertas si OrderSend devuelve -1 (en caso de que esta situación ocurra con bastante frecuencia). Este es el código para comprar, el principio es el mismo 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); }



Además, por si acaso, cito a todo el experto, excepto la parte en la que interviene la lógica (desde luego no tiene nada que ver). Echa un vistazo, por favor. Aun así, me parece que se trata de MT. El Asesor Experto sólo se cuelga en el gráfico horario del EURUSD y periódicamente genera errores en lugar de operaciones.

Quiero señalar que la primera ejecución (cuando el EA se adjunta a un gráfico o cuando se recompila su código) no muestra errores y se ejecuta normalmente. Es decir, se obtiene un error, se presiona F5 en el editor después de 5 segundos, el Asesor Experto se ha iniciado y se ha abierto una operación.

Ayuda en general, 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);
}

// ------




 
No creo que sea del servidor. actualmente estamos lidiando con este error en win98. pero está claro lo que lo causa allí - no hay suficientes asas.


¿Manillas de qué? ¿Cuántas asas tienes? ¿Existe un límite en el número de EAs, gráficos, etc.?

P.D. Esta pregunta no invalida mi post anterior :)
 
El Asesor Experto ha dado el error número 2 - error común.
Error bastante raro =)
He tenido Asesores Expertos que dan este error sólo 5 veces en medio año
Sobre las alertas - inconveniente. Tengo un envío a correo electrónico + escritura a archivo. Pronto terminaré las bibliotecas con las funciones apropiadas - las publicaré
 
эксперт выдал ошибку номер 2 - common error.
un error bastante raro =)
Sólo he tenido este error 5 veces en medio año
En cuanto a las alertas, es un inconveniente. Tengo un envío a correo electrónico + escritura a archivo. Pronto terminaré la biblioteca con las funciones adecuadas - la publicaré.


Al contrario, es conveniente. La alerta no interfiere con nada, la MT sigue funcionando, pero se nota enseguida... um... si estás sentado en tu ordenador... Sí, lo entiendo :)

"Mi" experto da este error el 70% de las veces. Es decir, no este, sino el 2, el 6, el 14... en fin, no sistemáticamente. He comprobado los precios, parece que son correctos... Dado que las fuentes de MT están en manos de los desarrolladores y los servidores en las de Alpari, básicamente depende de ellos. Aunque sería estupendo que alguien más ejecutara la cosa, y confirmara que el problema se reproduce en su ordenador.
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


¿Manillas de qué? ¿Cuántas de estas asas tienes? ¿Hay un límite en el número de expertos, gráficos, etc.?

en 98, donde el número de handles por proceso es un orden de magnitud menor que en 2000, el error de escasez de recursos apareció muy rápidamente, incluyendo la incapacidad de abrir un socket para el comercio. durante el trabajo largo este error apareció en 2000 también. por qué este error apareció sólo en las construcciones recientes es un misterio natural.
hay un límite en el número de gráficos - 99. así que también hay un límite en el número de EAs