Forex Trader  
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
Forex Trader  
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
Forex Trader  
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?

Forex Trader  
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.
Forex Trader  
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);
}

// ------




Forex Trader  
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 :)
Forex Trader  
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ò
Forex Trader  
эксперт выдал ошибку номер 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.
Forex Trader  
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин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
Motivazione: