エラー番号6

 
"トレードサーバーとの接続ができない"それはいいのですが、注文を開こうとすると、たまにポップアップします。MTを再起動すると、すぐに注文が開かれてしまいます。どなたかご存知の方はいらっしゃいますか?
 
あと、開発者の方に質問です。飲み会の最初に取引して、他の1000人も取引していたら、飲み会の最初にサーバーが使えなくなるのはそのせいでは?

答えてください。もしそうであれば、遅延を設けるだけですが、まずは理由を教えてほしいです。
 
開発者の皆様へ
少し表現を変えて質問を繰り返しますが、6番のエラー(気配値は出ているが、トレードサーバーは出ていない)ですが、時間足のバーの始まりでサーバーに負荷がかかっているためでしょうか?Expert Advisorで問題を探すべきか、それともサーバーの負荷が少ないバー開始3分後などにディールを開くだけでよいのか。

同じシリーズの2つ目の質問:一度にたくさんのExpert Advisorを持っていて、すべてのExpert Advisorがバーの最初に何かをした場合、問題が発生するでしょうか?それとも計算が並んだだけ?例えば、EAが計算を完了する時間がなく、新しいティックが到着した場合、どうなるでしょうか。また、新しいティックがあったとしても、計算(チュートリアルで推奨されているコードでバーの始まりをチェックします)でバーの始まりを表示することを保証してくれますか?

重要な質問なので、もっと詳しく教えてほしい。

リーズナブル。
クオーク
 
1. オペレーティングシステムは何ですか?
2. エキスパートはそれぞれ独自のスレッドで並行して動作します。新しいティックが来て、エキスパートがまだ動作している場合、そのティックは無視されます。エキスパートが動作するすべての価格データはオリジナルのままです(エキスパートは実際にはデータのコピーで動作します)。
 
Windows 2000

実は、バーの先頭でポジションを開こうと すると、エラー6が2回出たので質問しました:

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



ALLはバーの最初の方がアクティブなので、サーバーの過負荷が原因なのか、という疑問が残ります。それとも何か別の原因があるのでしょうか?

 
サーバーの問題ではないと思います。現在、Win98でこのエラーに対処していますが、そちらではハンドルが欠けていることが原因であることは明らかです。
 
現在、モスクワ時間の13:00に、同じExpert Advisorにエラー番号2(共通エラー)が発生しました。
アルパリからこの投稿を読んでいる人がいたら - アカウント 116122。

私のExpert Advisorの中で、この種のエラーにアラートを出すのはこれだけです。デモ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のことだと思われます。Expert AdvisorはEURUSDの 1時間足チャートに ぶら下がるだけで、定期的にトレードではなくエラーを発生させます。なお、初回実行時(EAをチャートに貼り付けた時、またはコードを再コンパイルした時)には、エラーは表示されず、正常に実行されることを確認しています。つまり、エラーが発生し、5秒後にエディタでF5を押すと、Expert Advisorが起動し、トレードが開始された状態です。一般的なヘルプをお願いします!





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でこのエラーに対処していますが、そこでの原因は明らかで、ハンドルが足りないのです。


何のハンドル?ハンドルは何本ですか?EAやグラフなどの数に制限はありますか?

追伸:この質問は、私の前回の投稿を無効にするものではありません :)
 
Expert Advisorは、エラー番号2 - 共通のエラーを出力しています。
Rare enough error =)
Expert Advisorsでこのエラーが出たのは半年で5回だけ
アラートについて - 不便です。メールへの送信+ファイルへの 書き込みがあるのですが。近々、適切な機能を持つライブラリが完成する予定なので、それを掲載します。
 
эксперт выдал ошибку номер 2 - common error.
かなり珍しいエラーです =)
このエラーは半年で5回しか発生していません。
アラートについて - 不便です。メールへの送信+ファイルへの書き込みがあるのですが。近々、適切な機能を持ったライブラリが完成しますので、掲載します。


逆に言えば、便利なんです。アラートは何の邪魔にもならず、MTは動き続けるが、すぐにわかる...。其のパソコンに向かうと...ああ、わかったよ :)

「私の」専門家は、70%の確率でこのエラーを出します。これじゃなくて、2、6、14...要するに、システム的にダメなんです。価格を確認したところ、正しいようです・・・。MTのソースは開発者側にあり、サーバーはアルパリ側にあるので、基本的には開発者側に任されています。他の人が実行して、自分のパソコンで問題が再現されることを確認してくれれば最高なんですけどね。
 
вряд ли это от сервера. сейчас мы разбираем такую ошибку на вин98. но там понятно отчего происходит - хэндлов не хватает.


何のハンドル?このハンドルは何本あるのですか?エキスパート、グラフなどの数に制限はありますか?

2000年に比べてプロセスあたりのハンドル数が一桁少ない98では、トレード用のソケットが開けないなど、リソース不足のエラーがすぐに出た。長い作業中にこのエラーは2000でも出た。なぜこのバグが最近のビルドにしか出ないのかは、当然の謎だ。 チャート数に制限がある-99。だからEA数にも制限がある。
理由: