エラー番号6 - ページ 6

 
悪くないが、本質的には同じだ :)<br / translate="no"> SetTraceとは何ですか?


おっとっと :)今からCMをやりますので、ご注目ください -http://forexsystems.ru/phpBB/viewtopic.php?t=694&start=45
 
хэндлов не хватает.


システム設定(W'XP)でハンドル数を変更することは可能ですか、またその方法は?
 
もうひとつ、開発者に質問です。

何が正しいのか。

1.
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); } } { if(OrderTicket(), OrderLots(), Bid, nSlip, Aqua)



2.

for(int nCnt = OrdersTotal() - 1; nCnt >= 0; 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); } } { if(OrderTicket(), OrderLots(), Bid, nSlip, Aqua)



3.無関心であること。
4.次のティックでリターンを設定し、次の注文を処理する必要があります。
5.他の方法で行うべきでしょう。

説明しよう。2つの未決済注文があり、両方とも決済する必要があると仮定します。ループ

for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++)



ゼロ次を終了し、その後、1次がゼロになります。そして、最初の注文を閉じようとして、エラーが発生します。そうだろ?

このスレッドで議論されているEAの全てのエラーがこの問題に関係しているとは思いません、例えば、共通のエラーは関係ありません。しかし、もし私が正しければ、a) 注文がロックされた類似の注文、b) エラーが出るために複数のExpert Advisorが必要であることを説明できるかもしれませんね。



 
хэндлов не хватает.


Можно ли изменить число хэндлов в системных установках (W'XP) и как?

ハンドルが足りない場合はエラーになりますが、そうでない場合は十分な数のハンドルがあります。
 
もちろん、2番目の選択肢は正しいのですが、returnの代わりに30秒間Sleep() を入れて、それでおしまいです。
 
を代入することで、そのようなことができることを付け加えておく。
for(int nCnt = 0; nCnt < OrdersTotal(); nCnt++)

for(int nCnt = OrdersTotal() - 1; nCnt >= 0; nCnt--)
エラー139から138になり、4109になりました。
(requote,配列内の文字列が初期化されて いない)
最後の1枚は、まったくコメントがありません...。
 
もちろん、2つ目のバリエーションは正しいのですが、returnの代わりに30秒間Sleep()を入れて、それでおしまいです。


1分間に10個のExpert Advisorで、それぞれ30秒ずつ...間違っている、そのような生き方は不可能である。
 
これで終わりかな?12のウィンドウがあり、それぞれ異なる通貨と異なるExpert Advisorを使用していました。そのうち11本で取引を禁止(ライブ取引を許可)しました。私のすべてのエラーは、まだ彼らから来ている。もうひとつ、バグがあります。
 
Конечно, второй вариант правилен, только вместо return надо ставить Sleep() секунд на 30 и усе.


10人の専門家が1分間のインターバルで、各30秒ずつ...間違っている、これでは生きていけない。



これが生き方であり、やっていることは鉄の強さが試されているのです。
 
テスト用の新バージョンのEA。何が変わったのか。
1.サイクルを修正しました。
2.マジックの番号はバーの開始時間に私物化されています。このため、私の記憶違いでなければ、開口部に遅れが生じます。つまり、mn 7のEAは、バーが始まってから7秒後にオープンすることになります。サーバーの過負荷、コンピューターのCPU、最大2.5秒の競合を避けることができます、まだどこかにあればいいのですが...。

しかし、残念なことに、エラーは残っています。

ルールは同じで、任意の時間枠(例えば数分)で複数のウィンドウを開き、待つ。

double dStopLoss;
int nHoursToHold;

datetime timePrev = 0;

int nSlip = 5;

double dLotSize = 0.1;

int nMagic = 0;

//////////////////
int init ()
{
	timePrev = 0;

	dStopLoss = 110 * Point;
	nHoursToHold = 1;
	
	if(Symbol() == "EURUSD")
		nMagic = 1;
	else if(Symbol() == "EURJPY")
		nMagic = 2;
	else if(Symbol() == "USDCHF")
		nMagic = 3;
	else if(Symbol() == "GBPUSD")
		nMagic = 4;
	else if(Symbol() == "GBPJPY")
		nMagic = 5;
	else if(Symbol() == "GBPCHF")
		nMagic = 6;
	else if(Symbol() == "USDJPY")
		nMagic = 7;
	else if(Symbol() == "AUDUSD")
		nMagic = 8;
	else if(Symbol() == "EURGBP")
		nMagic = 9;
	else if(Symbol() == "USDCAD")
		nMagic = 10;
	else if(Symbol() == "EURCHF")
		nMagic = 11;
	else if(Symbol() == "EURAUD")
		nMagic = 12;
		
	timePrev += nMagic;	// Open nMagic seconds after the new bar

	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] + nMagic) 
		bIsBarEnd = true;
	timePrev = Time[0] + nMagic;
	
	if(!bIsBarEnd)
		return(0);

	// ------
	
	int nSignal = GetSignal();

	if(nSignal == OP_BUY) 
		Buy();
	else if(nSignal == OP_SELL) 
		Sell();

	for(int nCnt = OrdersTotal() - 1; nCnt >= 0; 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, "Friday", nMagic, 0, OrangeRed);

	if(nResult == -1)
	{
		int nError = GetLastError();
		Alert(Symbol() + ", " + nError);
	}
}
// ------
void Buy()
{
	if(AccountFreeMargin() < 500)
		return;

	dLotSize = GetLotSize();

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

	if(nResult == -1)
	{
		int nError = GetLastError();
		Alert(Symbol() + ", " + nError);
	}
}
// ------

double GetLotSize()
{
	double dLot = 0.1;
	
	return(dLot);
}

// ------

int GetSignal()
{
	int nSignal;
	if(MathMod(Hour(), 2) == 0)
		nSignal = OP_BUY;
	else
		nSignal = OP_SELL;
		
	return(nSignal);
}

// ------