エラー番号6 - ページ 11

 
10分足チャートで50分の作業で2回の再クオートのみ。もうエラーはない。
 
この場合、RefreshRates関数を使用して、新しい買値または売値を取得するか、MarketInfoに新しい価格を要求してください。129 - 同じエラー、間違った価格 - 価格が行き過ぎたため、待ち時間の間に何度も価格変更があった。1 - これはエラーではありません。すでに設定されている同じ値で注文を変更しようとしたときに表示されます。


ありがとう、でも...
前回掲載したEAは、3秒のタイムラグと50(!)pipsのスリッページがあります。価格
各3秒のチャート12枚 - 価格がそこまで走っている時間はないでしょう。それとも、私が何か勘違いしているのでしょうか?
 
エキスパートにRefreshRatesを追加(下記コード)。エラー番号1は、今、積み重なっています。
うまくいけば、追跡できるかもしれません。"落とす "とは、2~3分に1回程度の頻度で落とすことです。もしそうでなければ、サーバーが近すぎるか、コンピュータが速すぎるのでしょう。CPUの一部をニューラルネットワークのパケットに取られているので、MTは50%になってしまうのですが...。今は...ここで、ニューラルネットワークを無効にする(他のプログラムと違い、一時停止ボタンがある)。1番目のエラーは消えてはいませんが、少し頻度が減ってきました。MTは55〜99%のCPUを「食って」いる。電源を入れると...MTはCPU時間が1.5倍になる。エラーも頻発するようになった。

double dStopLoss;
int nHoursToHold;

datetime timePrev = 0;
int nBars;
int nDelaySeconds = 3;

int nSlip = 50;

double dLotSize = 0.1;

int nMagic = 0;
int nDigits;

string strTradeSemaphore = "TradeSemaphore";

//////////////////
int init()
{
	nBars = Bars;

	if(!IsTesting() && !GlobalVariableCheck(strTradeSemaphore)) 
		GlobalVariableSet(strTradeSemaphore, 0.0);
	
	dStopLoss = 110 * Point;
	nHoursToHold = 1;

	nDigits = MarketInfo( Symbol(), MODE_DIGITS );
	
	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;
		
	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;
*/

	bool bIsBarEnd = false;
	if(nBars != Bars)
	{
		if(IsTesting() || (!IsTesting() && CurTime() > Time[0] + nMagic * nDelaySeconds))
		{
			bIsBarEnd = true;
			nBars = Bars;
		}
	}
	
	if(!bIsBarEnd)
		return(0);

	// ------
	
	if(!IsTesting())
	{
		while(!IsStopped())
		{
			if(GlobalVariableGet(strTradeSemaphore) == 0.0)
				GlobalVariableSet(strTradeSemaphore, nMagic);

			if(GlobalVariableGet(strTradeSemaphore) == nMagic)
				break;
		
			Sleep(1000);
		}
	}
	
	RefreshRates();
	
	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);
			}
		}
	}

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

	if(!IsTesting())
		GlobalVariableSet(strTradeSemaphore, 0.0);	
	
	return(0);
}
// ------

void Sell()
{
	if(AccountFreeMargin() < 500)
		return;

	dLotSize = GetLotSize();

	double dNormalizer = MathPow(10, nDigits);
	double dBid = Bid;//MathFloor(Bid * dNormalizer) / dNormalizer; //NormalizeDouble(Bid, nDigits);
	double dStop = Bid + dStopLoss;//MathFloor((Bid + dStopLoss) * dNormalizer) / dNormalizer; //NormalizeDouble(Bid + dStopLoss, nDigits);

	int nResult = OrderSend(Symbol(), OP_SELL, dLotSize, dBid, 
		nSlip, dStop, 0, "Friday", nMagic, 0, OrangeRed);

	if(nResult == -1)
	{
		int nError = GetLastError();
		Alert(Symbol() + ", sell: " + dBid + ", Stop: " + dStop + ", error: " + nError);
	}
}

// ------

void Buy()
{
	if(AccountFreeMargin() < 500)
		return;

	dLotSize = GetLotSize();

	double dNormalizer = MathPow(10, nDigits);
	double dAsk = Ask;//MathFloor(Ask * dNormalizer) / dNormalizer; //NormalizeDouble(Bid, nDigits);
	double dStop = Ask - dStopLoss;//MathFloor((Ask - dStopLoss) * dNormalizer) / dNormalizer; //NormalizeDouble(Bid + dStopLoss, nDigits);

	int nResult = OrderSend(Symbol(), OP_BUY, dLotSize, dAsk, 
		nSlip, dStop, 0, "Friday", nMagic, 0, Aqua);

	if(nResult == -1)
	{
		int nError = GetLastError();
		Alert(Symbol() + ", buy: " + dAsk + 
			", Stop: " + dStop + ", error: " + 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);
}


 
要約すると、ですね。一人で作業している人以外の専門家は、保護セマフォが必要なようです。月曜日に開発者が紹介した新機能を試してみます(Roshは開発者がバージョン変更を望んでいないと言ってました!)。もっと頻繁に連絡を取るべきですね、たった100回の書き込みで)。実は、開発者の方々には大変感謝しています。Roshさん、Composerさんもありがとうございました。ただし、月曜日まで待ちます :)
 
いや、確実に月曜日までは無理です =)))
南が呼んでいる、新機能のテストは1週間後に速やかに行います =)))))

...そして、少なくとも誰かがバグを解決しようとしたことに感謝します ;)
 
要約すると、ですね。一人で作業している人以外の専門家は、保護セマフォが必要なようです。月曜日に開発者が紹介した新機能を試してみます(Roshは開発者がバージョン変更を望んでいないと言ってました!)。もっと頻繁に連絡を取るべきですね、たった100回の書き込みで)。実は、開発者の方々には大変感謝しています。Roshさん、Composerさんもありがとうございました。ただし、月曜日にお会いしましょう :)<br /> translate="no">.


クオーク 開発者ではなく、デベロッパーのことを書きました。:)わかったか?ある宗教ではそれが神であり、別の宗教ではそれが別の住所である。
また、私の9つのEAは1つの口座で問題なく動作すると書きました。でも、MT4が何か間違ったシャベルを打っているときの条件を見つけるのは得意ですよね :)
 
<br / translate="no">いや、月曜日までは無理です =)))


また月曜日に会いましょう :)


南が呼んでいるので、新しいf機能は1週間以内に速やかにテストされるでしょう =))))


南の国へようこそ


...そして、少なくとも誰かがバグを解決しようとしたことに感謝します ;)


1つのミスをもって。そして、そのうちの何人が...
 
<br / translate="no"> Quarkさん、私が書いたのは開発者のことではなく、Developerのことです。:)


冗談で言っただけです :)原理はどこも同じですが。正しく聞けば、答えが返ってくる。もし悪態をついたら、出入り禁止になります :)


そして、私の9つのEAが同じアカウントで問題なく動いていることも書きました。でも、MT4が何か間違ったシャベルを打っているときの条件を見つけるのは得意ですよね :)


参議院議員12名と72枚の窓-も。そして、13日分を加えて、こうなりました...。もちろん一般的には、このブランチに投稿された最後のEAを、分ではなく時計で使用し、一時停止を3秒から30に増やせば(ちなみにあなたの提案通り)、エラーは発生しません。だから、結果が出る、プラスになる...。

英語掲示板の人たちには申し訳ないのですが、私たちの投稿を翻訳することはありません。体調が悪い :(

頑張ってください。
クオーク
 
その結果、6番のエラーが発生するようになりました。MTがオプティマイザーを使用し、同時にポジションを開くと発生します。すでに2回キャッチしています。Expert Advisor を再度実行し、ポジションをオープン する条件が有効であれば、問題なくポジションをオープンすることができます。
 
オプティマイザーが動作しているときは、エラー6が多くなるようです。パソコンの再起動、MTなどの対策をしても状況は変わりません。

異なるEAで問題が発生する。これらすべてのロジックは、(Slavaが提案した)セマフォと(Roshの)ディレイによって修正され、与えられた10秒間に1つのEAだけが動作するようにしました。上に書いたエラーは、6番を除いて(今のところ)すべて消えました。