第6号错误

 
"与贸易服务器没有连接"。这本来是很好的,但在试图打开一个订单时,每隔一段时间就会跳出来。当我重新启动MT时,该订单立即打开。有谁知道是什么问题吗?
 
另外,有一个问题要问开发者。如果我在酒吧一开始就进行交易,还有1000人也在交易,这不就是酒吧一开始就没有服务器的原因吗?

请回答。如果是这样,我就提供一个延迟,但我想先知道原因。
 
亲爱的开发者们!
我重复我的问题,但措辞略有不同:错误六(报价可用,但交易服务器不可用)--这是因为服务器在小时条开始时超载吗?我应该在专家顾问中搜索问题,还是直接打开交易,比如说,在一个条形图开始后的3分钟,当服务器的负载较小的时候?

同一系列的第二个问题:如果我在同一时间有很多专家顾问,并且所有的专家顾问都在一个条形图的开头做一些事情,会不会有问题?或者计算只是排队?例如,如果EA没有时间完成计算,而一个新的tick已经到来,会发生什么情况--它是否会以旧的价格完成计算?如果有一个新的刻度线,你能保证计算(我用你在教程中推荐的代码检查条形图的开头)仍然显示条形图的开头?

这些都是很重要的问题,我想了解更多细节。

注意到。
夸克
 
1.你的操作系统是什么?
2.专家并行工作,每个人都在自己的线程中。如果一个新的tick出现,而专家还在工作,那么这个tick将被忽略。专家工作的所有价格数据仍然是原始的(专家实际上是用数据的一个副本工作的)。
 
Windows 2000

实际上,我之所以提出这个问题,是因为当我试图在一个条形图的开头开仓时,两次得到错误6:

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



问题是--这是因为服务器过载,因为ALL在酒吧开始时比较活跃?还是由于其他原因呢?

 
我认为这不是来自服务器。我们目前正在处理win98上的这个错误。但很清楚是什么原因造成的--手柄丢失。
 
现在,在莫斯科时间13:00,同一个专家顾问出现了第2个错误--普通错误。
如果有Alpari公司的人在看这个帖子--账户116122。

这是我的专家顾问系统中唯一一个对这种性质的错误发出警报的系统。我建议那些拥有模拟EA的人在OrderSend返回-1时发出警报(以防这种情况经常发生)。下面是买入的代码,卖出的原理是一样的:

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



另外,为了以防万一,我引用了整个专家的话,除了涉及逻辑的部分(当然与此无关)。请看一下。不过,在我看来,这与MT有关。专家顾问只是挂在欧元兑美元的 小时图上,周期性地产生错误,而不是交易。我想指出的是,第一次运行(当EA被连接到图表上或其代码被重新编译时)没有显示错误,运行正常。也就是说,你得到一个错误,5秒钟后在编辑器中按下F5,专家顾问已经开始,交易已经打开。请提供一般性的帮助!





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

// ------




 
我认为这不是来自服务器。我们目前正在处理win98上的这个错误。但很清楚是什么原因造成的--没有足够的手柄。


什么的手柄?你有多少个手柄?EAs、图表等的数量是否有限制?

P.S. 这个问题并不意味着我之前的帖子无效 :)
 
专家顾问发出了第2号错误--常见错误。罕
见的错误=)
我的Expert Advisors在半年内只出现过5次这样的错误
关于警报 - 不方便。我有一个发送至电子邮件+写入文件的 功能。我很快就会完成带有适当功能的库--我会把它们贴出来。
 
эксперт выдал ошибку номер 2 - common error.
相当罕见的错误=)
半年来,我只出现过5次这种错误。
关于警报--不方便。我有一个发送至电子邮件+写入文件的功能。我很快就会敲定具有适当功能的库--我会把它贴出来。


相反,它很方便。警报并不干扰任何东西,MT继续工作,但你可以马上看到它......嗯...如果你正坐在电脑前...是的,我明白了 :)

我的 "专家 "在70%的情况下会出现这种错误。我的意思是,不是这个,而是2、6、14......总之,没有系统地。检查了价格,似乎是正确的...由于MT资源在开发者那里,而服务器在Alpari那里,所以基本上由他们决定。虽然如果有其他人运行这个东西,并确认这个问题在他们的电脑上重现,那就太好了。
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


什么的手柄?你有多少个这样的手柄?对专家、图表等的数量有限制吗?

在98年,每个进程的句柄数量比2000年小一个数量级,资源短缺的错误很快就出现了,包括无法为交易打开一个套接字。在长时间的工作中,这个错误在2000年也出现过。为什么这个错误只出现在最近的版本中,这自然是个谜。 ,图表的数量有限制--99。因此,EA的数量也有限制。