Errore numero 6

 
"Nessuna connessione con il server commerciale". Andrebbe bene, ma ogni tanto salta fuori quando si cerca di aprire un ordine. Quando riavvio MT, l'ordine si apre immediatamente. Qualcuno sa qual è il problema?
 
Inoltre, una domanda per gli sviluppatori. Se io commercio all'inizio del bar, e anche altre 1000 persone, non è questa la ragione per cui il server non è disponibile all'inizio del bar?

Rispondi, per favore. Se è così, fornirò un ritardo, ma prima vorrei sapere il motivo.
 
Cari sviluppatori!
Ripeto la mia domanda con una formulazione leggermente diversa: Errore numero sei (le quotazioni sono disponibili, ma il server commerciale no) - è perché all'inizio della barra delle ore il server è sovraccarico? Devo cercare il problema in un Expert Advisor o semplicemente aprire le operazioni, diciamo, 3 minuti dopo l'inizio di una barra, quando il carico sul server è minore?

La seconda domanda della stessa serie: se ho molti Expert Advisor contemporaneamente e tutti fanno qualcosa all'inizio di una barra, ci saranno problemi? O i calcoli si allineano e basta? Per esempio, cosa succederà se l'EA non ha avuto il tempo di completare il calcolo ed è arrivato un nuovo tick - finirà il calcolo al vecchio prezzo? E se c'è un nuovo tick, mi garantisci che il calcolo (controllo l'inizio della barra con il codice che hai consigliato nel tuo tutorial) mostrerà ancora l'inizio della barra?

Queste sono domande importanti, vorrei maggiori dettagli.

Saluti,
Quark
 
1. qual è il vostro sistema operativo?
2. gli esperti lavorano in parallelo, ognuno nel proprio thread. se arriva un nuovo tick e l'esperto sta ancora lavorando, il tick sarà ignorato. tutti i dati di prezzo con cui l'esperto lavora rimangono originali (l'esperto lavora effettivamente con una copia dei dati). per prendere i dati più recenti, modificati, c'è una funzione RefreshRates
 
Windows 2000

In realtà, ho fatto la domanda perché ho ottenuto l'errore 6 due volte quando ho cercato di aprire una posizione all'inizio di una barra:

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



La domanda rimane - è a causa del sovraccarico del server, dato che TUTTO è più attivo all'inizio della barra? O è dovuto a qualcos'altro?

 
Non credo che provenga dal server. Attualmente abbiamo a che fare con questo errore su win98. ma è chiaro cosa lo sta causando lì - le maniglie sono mancanti.
 
Ora, alle 13:00 ora di Mosca, lo stesso Expert Advisor ha avuto l'errore numero 2 - errore comune.
Se qualcuno di Alpari sta leggendo questo post - conto 116122.

Questo è l'unico dei miei Expert Advisor che dà un avviso per errori di questa natura. Suggerisco a coloro che hanno EA demo di mettere avvisi se OrderSend restituisce -1 (nel caso in cui questa situazione accada abbastanza spesso). Ecco il codice per comprare, il principio è lo stesso per vendere:

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



Inoltre, per sicurezza, sto citando tutto l'esperto, tranne la parte in cui è coinvolta la logica (certamente non c'entra nulla). Dia un'occhiata, per favore. Tuttavia, mi sembra che si tratti di MT. L'Expert Advisor si blocca solo sul grafico orario di EURUSD e periodicamente genera errori invece di operazioni.

Voglio notare che la prima esecuzione (quando l'EA è attaccato a un grafico o quando il suo codice è ricompilato) non mostra errori e gira normalmente. Cioè, si ottiene un errore, si preme F5 nell'editor dopo 5 secondi, l'Expert Advisor è partito e si è aperto un trade.

Aiuto in generale, per favore!

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

// ------




 
Non credo che provenga dal server. Attualmente abbiamo a che fare con questo errore su win98. ma è chiaro cosa lo sta causando lì - non ci sono abbastanza maniglie.


Maniglie di cosa? Quante maniglie hai? C'è un limite al numero di EA, grafici, ecc.

P.S. Questa domanda non invalida il mio post precedente :)
 
Expert Advisor ha dato l'errore numero 2 - errore comune.
Errore abbastanza raro =)
Ho avuto Expert Advisors che ha dato questo errore solo 5 volte in mezzo anno
A proposito di avvisi - scomodo. Ho un invio a e-mail + scrittura su file. Presto finirò le librerie con funzioni appropriate - le posterò
 
эксперт выдал ошибку номер 2 - common error.
un errore abbastanza raro =)
Ho avuto questo errore solo 5 volte in mezzo anno
Riguardo agli avvisi - inopportuni. Ho un invio a e-mail + scrittura su file. Finirò presto la libreria con funzioni appropriate - la posterò.


Al contrario, è conveniente. L'allarme non interferisce con nulla, MT continua a lavorare, ma si vede subito... um... se sei seduto al tuo computer... Sì, ho capito :)

Il "mio" esperto dà questo errore il 70% delle volte. Cioè, non questo, ma 2, 6, 14... insomma, no sistematicamente. Controllato i prezzi, sembra essere corretto... Dal momento che i sorgenti di MT sono con gli sviluppatori e i server sono con Alpari, dipende fondamentalmente da loro. Anche se sarebbe bello se qualcun altro eseguisse la cosa, e confermasse che il problema si riproduce sul suo computer.
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


Maniglie di cosa? Quante di queste maniglie avete? C'è un limite al numero di esperti, grafici, etc.?

su 98, dove il numero di handle per processo è un ordine di grandezza inferiore a quello del 2000, l'errore di carenza di risorse è apparso molto rapidamente, compresa l'impossibilità di aprire un socket per il commercio. durante il lungo lavoro questo errore è apparso anche nel 2000. perché questo bug è apparso solo nelle build recenti è un mistero naturale.
c'è un limite sul numero di grafici - 99. quindi c'è anche un limite sul numero di EAs