Erreur numéro 6

 
"Pas de connexion avec le serveur commercial". Ce serait bien, mais ça apparaît de temps en temps quand on essaie d'ouvrir une commande. Lorsque je redémarre MT, l'ordre s'ouvre immédiatement. Quelqu'un sait-il ce qu'il en est ?
 
Aussi, une question pour les développeurs. Si je négocie au début du bar, et 1000 autres personnes aussi, n'est-ce pas la raison pour laquelle le serveur est indisponible au début du bar ?

Répondez, s'il vous plaît. Si c'est le cas, je fournirai un délai, mais j'aimerais d'abord en connaître la raison.
 
Chers développeurs !
Je répète ma question avec une formulation légèrement différente : Erreur numéro six (les cotations sont disponibles, mais le serveur de négociation ne l'est pas) - est-ce parce qu'au début de la barre horaire le serveur est surchargé ? Dois-je rechercher le problème dans un Expert Advisor ou simplement ouvrir des transactions, disons 3 minutes après le début d'une barre, lorsque la charge sur le serveur est moindre ?

Deuxième question de la même série : si j'ai beaucoup d'Expert Advisors en même temps et que tous font quelque chose au début d'une barre, y aura-t-il des problèmes ? Ou les calculs s'alignent juste ? Par exemple, que se passera-t-il si l'EA n'a pas eu le temps de terminer le calcul et qu'un nouveau tick est arrivé - terminera-t-il le calcul à l'ancien prix ? Et s'il y a un nouveau tick, pouvez-vous garantir que le calcul (je vérifie le début de la barre avec le code que vous avez recommandé dans votre tutoriel) montrera toujours le début de la barre ?

Ce sont des questions importantes, j'aimerais avoir plus de détails.

Regards,
Quark
 
1. Quel est votre système d'exploitation ?
2. les experts travaillent en parallèle, chacun dans son propre thread. si un nouveau tick arrive et que l'expert est toujours en train de travailler, le tick sera ignoré. toutes les données de prix avec lesquelles l'expert travaille restent originales (l'expert travaille en fait avec une copie des données). afin de prendre les données les plus récentes, modifiées, il y a une fonction RefreshRates
 
Windows 2000

En fait, j'ai posé la question parce que j'ai obtenu deux fois l'erreur 6 en essayant d'ouvrir une position au début d'une barre :

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



La question demeure : est-ce à cause de la surcharge des serveurs, car ALL est plus actif au début de la barre ? Ou est-ce dû à quelque chose d'autre ?

 
Je ne pense pas que cela vienne du serveur. Nous sommes actuellement confrontés à cette erreur sur win98. Mais la cause est claire : les poignées sont manquantes.
 
Maintenant, à 13:00 heure de Moscou, le même Expert Advisor a obtenu l'erreur numéro 2 - erreur commune.
Si quelqu'un d'Alpari lit ce message - compte 116122.

C'est le seul de mes conseillers experts qui émet une alerte pour les erreurs de cette nature. Je suggère à ceux qui ont des EAs de démonstration de mettre des alertes si OrderSend retourne -1 (au cas où cette situation se produit assez souvent). Voici le code pour l'achat, le principe est le même pour la vente :

int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 0, "Comment", nMagic, 0, Aqua) ; if(nResult == -1) { int nError = GetLastError() ; Alert(nError) ; }



Par ailleurs, juste au cas où, je cite l'expert dans son intégralité, à l'exception de la partie où la logique est impliquée (elle n'a certainement rien à voir avec elle). Regardez, s'il vous plaît. Pourtant, il me semble qu'il s'agit de MT. Le conseiller-expert se contente de traîner sur le graphique horaire de l'EURUSD et génère périodiquement des erreurs au lieu de transactions.

Je tiens à noter que la première exécution (lorsque l'EA est attaché à un graphique ou lorsque son code est recompilé) ne montre pas d'erreurs et fonctionne normalement. C'est-à-dire que vous obtenez une erreur, appuyez sur F5 dans l'éditeur après 5 secondes, l'Expert Advisor a démarré et une transaction a été ouverte.

Aide en général, s'il vous plaît !

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);
}

// ------




 
Je ne pense pas que cela vienne du serveur. nous sommes actuellement confrontés à cette erreur sur win98. mais la cause est claire : il n'y a pas assez de poignées.


Des poignées de quoi ? Combien de poignées avez-vous ? Le nombre d'EA, de graphiques, etc. est-il limité ?

P.S. Cette question n'invalide pas mon message précédent :)
 
Le conseiller expert a émis l'erreur numéro 2 - erreur commune.
Erreur assez rare =)
Les conseillers experts n'ont donné cette erreur que 5 fois en six mois
A propos des alertes - gênantes. J'ai un envoi à l'email + écriture au fichier. Bientôt je terminerai les bibliothèques avec les fonctions appropriées - je les posterai
 
эксперт выдал ошибку номер 2 - common error.
une erreur assez rare =)
Je n'ai eu cette erreur que 5 fois en six mois.
A propos des alertes - c'est gênant. J'ai un envoi à l'email + écriture au fichier. Je vais bientôt finaliser la bibliothèque avec les fonctions appropriées - je la posterai.


Au contraire, c'est pratique. L'alerte n'interfère avec rien, MT continue de fonctionner, mais on le voit tout de suite... hum... si vous êtes assis devant votre ordinateur... Oui, j'ai compris :)

"Mon" expert donne cette erreur dans 70% des cas. Je veux dire, pas celui-là, mais 2, 6, 14... bref, pas systématiquement. J'ai vérifié les prix, ils semblent corrects... Étant donné que les sources MT sont chez les développeurs et que les serveurs sont chez Alpari, c'est à eux de décider. Bien que ce serait formidable si quelqu'un d'autre exécutait la chose, et confirmait que le problème est reproduit sur son ordinateur.
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


Des poignées de quoi ? Combien de ces poignées avez-vous ? Y a-t-il une limite au nombre d'experts, de graphiques, etc. ?

sur 98, où le nombre de handles par processus est un ordre de grandeur plus petit qu'en 2000, l'erreur de manque de ressources est apparue très rapidement, y compris l'incapacité d'ouvrir un socket pour le commerce. pendant un long travail, cette erreur est apparue en 2000 également. pourquoi ce bug n'est apparu que dans les constructions récentes est un mystère naturel.
il y a une limite sur le nombre de graphiques - 99. donc il y a aussi une limite sur le nombre d'EAs
Raison: