6 numaralı hata

 
"Ticaret sunucusuyla bağlantı yok". Her şey iyi olurdu, ancak bir sipariş açmaya çalıştığınızda her seferinde ortaya çıkıyor. MT'yi yeniden başlatıyorum - sipariş hemen açılıyor. Neyin yanlış olduğunu bilen var mı?
 
Aynı zamanda geliştiricilere bir soru. Barın başında ve 1000 kişi daha ticaret yaparsam, barın başındaki sunucunun kullanılamamasının nedeni bu değil mi?

Cevap lütfen. Eğer öyleyse, o zaman sadece bir gecikme sağlayacağım, ama önce nedenini bilmek istiyorum.
 
Sevgili geliştiriciler!
Soruyu biraz farklı bir ifadeyle tekrarlıyorum: altı numaralı hata (alıntılar var, ancak ticaret sunucusu yok) - bunun nedeni sunucunun saatlik çubuğun başında aşırı yüklenmesi mi? Expert Advisor'da bir sorun aramalı mıyım, yoksa barın başlamasından 3 dakika sonra, sunucudaki yük daha az olduğunda, sadece fırsatlar mı açmalıyım?

Aynı seriden ikinci soru: Aynı anda birçok uzmanım olsa ve herkes barın başında bir şeyler yapıyorsa sorun olur mu? Yoksa hesaplamalar aynı hizaya mı gelecek? Örneğin, Uzman Danışmanın hesaplamak için zamanı yoksa, ancak yeni bir onay işareti geldiyse ne olacak - hesaplamayı eski fiyattan tamamlayacak mı? Ve bu yeni bir kene ise, hesaplamanın (eğitimde önerdiğiniz kodla çubuğun başlangıcını kontrol ediyorum) çubuğun başlangıcını yine de göstereceğini garanti ediyor musunuz?

Bunlar önemli sorular, detaylandırmak istiyorum.

Samimi olarak,
kuark
 
1. İşletim sisteminiz nedir?
2. Uzmanlar, her biri kendi alanında paralel olarak çalışır. yeni bir onay işareti gelirse ve EA hala çalışıyorsa, onay işareti yok sayılır. Expert Advisor'ın çalıştığı tüm fiyat verileri orijinal kalır (Uzman Danışman aslında verilerin bir kopyası ile çalışır). En son, değiştirilen verileri almak için RefreshRates işlevi vardır.
 
Windows 2000

Aslında soruyu sordum çünkü barın başında bir pozisyon açmaya çalışırken iki kez 6 hatası aldım:

bool bisBarEnd = yanlış;
if(timePrev != Zaman[0]) 
	bIsBarEnd = doğru;
timePrev = Zaman[0];

if(!bisBarEnd)
	dönüş(0);
....



Soru devam ediyor - çubuğun başındaki HER ŞEY daha aktif olduğundan, sunucunun aşırı yüklenmesinden mi kaynaklanıyor? Yoksa başka bir şey yüzünden mi?

 
sunucudan olma ihtimali yok. Şimdi win98'de böyle bir hatayı analiz ediyoruz. ama orada neden olduğu açık - yeterli tutamaç yok.
 
Şimdi, Moskova saatiyle 13.00'te aynı uzman 2 numaralı hatayı verdi - genel hata.
Alpari'den biri bu yazıyı okuyorsa hesap 116122'dir.

Bu, bu tür hatalar için uyarı veren tek Uzman Danışmanım. Demo Uzman Danışmanları olanların OrderSend -1 döndürmesi durumunda uyarı kurmalarını öneririm (ya bu durum her zaman oluyorsa). İşte satın almanın kodu, satmanın prensibi aynıdır:

int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, Ask, nSlip, Ask - dStopLoss, 
	0, "Yorum", nMagic, 0, Aqua);

if(nSonuç == -1)
{
	int nError = GetLastError();
	Uyarı(nHata);
}



Ayrıca, her ihtimale karşı, mantığın olduğu kısım hariç (kesinlikle ilgisi yoktur) tüm Expert Advisor'ı sunuyorum. Bak lütfen. Yine de MT olduğunu düşünüyorum. EA, EURUSD saatlik grafiğine asılır ve alım satım yerine periyodik olarak hatalar üretir.

İlk başlatmanın (Uzman Danışman grafiğe yapıştığında veya kodu yeniden derlendiğinde) herhangi bir hata vermeden normal şekilde çalıştığını belirtmek isterim. Yani bir hata aldık, 5 saniye sonra editörde F5'e bastık, Expert Advisor başladı, işlem açıldı.

Genel olarak, yardım edin, lütfen!

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

// ------


 
sunucudan olma ihtimali yok. Şimdi win98'de böyle bir hatayı analiz ediyoruz. ama orada neden olduğu açık - yeterli tutamaç yok.


Neyin kolları? Bu kollardan kaç tane var? Uzman sayısı, çizelge vb. konusunda herhangi bir kısıtlama var mı?

not Bu soru önceki yazımı iptal etmiyor :)
 
uzman 2 numaralı bir hata verdi - genel hata.
oldukça nadir bir hata =)
Yarım yıldır uzmanlarım var böyle bir hata sadece 5 kez verdi
Uyarılar pahasına - uygunsuz. Bir dosyaya sabun + yazma referansım var. Yakında kütüphaneleri ilgili işlevlerle bitireceğim - onları yayınlayacağım
 
эксперт выдал ошибку номер 2 - common error.
oldukça nadir bir hata =)
Yarım yıldır uzmanlarım var böyle bir hata sadece 5 kez verdi
Uyarılar pahasına - uygunsuz. Sabun + bir dosyaya yazma referansım var. Yakında kütüphaneleri ilgili işlevlerle bitireceğim - onları yayınlayacağım


Aksine, uygun. Uyarı hiçbir şeye müdahale etmiyor, MT çalışmaya devam ediyor ama hemen görebilirsiniz... ee... bilgisayar başında oturuyorsanız... Evet, anlıyorum :)

"Benim" EA, vakaların %70'inde bu hatayı oluşturur. Yani, bu değil, 2, 6, 14 .., tek kelimeyle, sistemsiz. Fiyatları kontrol ettim, doğru görünüyor... MT kaynakları geliştiricilerde ve sunucular Alpari'de olduğundan, temelde bu onlar için. Yine de bir başkası bu şeyi çalıştırsa ve sorunun bilgisayarlarında tekrarlanabilir olduğunu onaylasa harika olurdu.
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


Neyin kolları? Bu kollardan kaç tane var? Uzman sayısı, çizelgeler vb. konusunda herhangi bir kısıtlama var mı?

tanıtıcılar sistem kaynaklarının temsilcileridir. açık pozisyonların bir listesini çizerken gdi kaynaklarının sızıntısı olan bir hatayı buldu ve etkisiz hale getirdi. 98'de, işlem başına tutamaç sayısının 2000'den çok daha az olduğu yerde, ticaret için bir soket açamama da dahil olmak üzere çok hızlı bir kaynak sıkıntısı hatası ortaya çıktı. uzun çalışmalarla bu hata 2000 yılında da kendini gösteriyor. bu aksaklığın neden sadece son yapılanmalarda ortaya çıktığı bir doğa gizemi.
çizelge sayısında bir sınır vardır - 99. Bu, uzman sayısında aynı sınır anlamına gelir