Ошибка номер 6 - страница 28

 
Вот что у меня вчера вылезло. Билд 183 бета от 7/10. После ручного перезапуска все стало нормально.

18:29:55 TradeContext: start connection
18:29:55 'Alpari-Demo': start connection
18:29:56 '67794' - login error (6, 10054)
18:29:56 '67794': cannot login [No connection]
18:30:35 TradeContext: start connection
18:30:35 'Alpari-Demo': start connection
18:30:35 '67794' - login error (6, 10054)
18:30:35 '67794': cannot login [No connection]
18:31:03 TradeContext: start connection
18:31:03 'Alpari-Demo': start connection
18:31:03 '67794' - login error (6, 10054)
18:31:03 '67794': cannot login [No connection]
18:31:10 TradeContext: start connection
18:31:10 'Alpari-Demo': start connection
18:31:10 '67794' - login error (6, 10054)
18:31:10 '67794': cannot login [No connection]
18:31:11 TradeContext: start connection
18:31:11 'Alpari-Demo': start connection
18:31:11 '67794' - login error (6, 10054)
18:31:11 '67794': cannot login [No connection]
18:31:20 TradeContext: start connection
18:31:20 'Alpari-Demo': start connection
18:31:20 '67794' - login error (6, 10054)
18:31:20 '67794': cannot login [No connection]
18:31:27 TradeContext: start connection
18:31:27 'Alpari-Demo': start connection
18:31:27 '67794' - login error (6, 10054)
18:31:27 '67794': cannot login [No connection]
 
ххх
 
Результаты теста по эксперту, предложенного Славой "возьмите из этой ветки и погоняйте".
"Погонял" на двух компах на разных версиях МТ4 с 18:00 до 24:00 11.10.2005.
Первый комп: версия с расширенным логированием от 05.10.2005: 114 ошибок номер 146 и 1 номер 138
Второй комп: официальная версия от 07.10.2005: 278 ошибок номер 146

Поясните, Слава...
 
Первый комп: версия с расширенным логированием от 05.10.2005: 114 ошибок номер 146 и 1 номер 138
Второй комп: официальная версия от 07.10.2005: 278 ошибок номер 146

Поясните, Слава...

поясняю. чтобы исключить ошибку 146 (trade context is busy), необходимо сделать паузу перед освобождением семафора. вместо
	if(!IsTesting())
		GlobalVariableSet(strTradeSemaphore, 0.0);	


написать

	if(!IsTesting())
	{
		Sleep(1000);
		GlobalVariableSet(strTradeSemaphore, 0.0);
	}


размер задержки подобрать "органолептически". для разных компьютеров она может быть разной

 

размер задержки подобрать "органолептически". для разных компьютеров она может быть разной
Класс !
"Что-то у меня в движке стало постукивать
Послушаем
И какой-то запах бензина стал появляться в салоне
Понюхаем"
 
Sleep(1000); - ошибка не исчезла
Sleep(10000); - ошибка не исчезла
Какой же ее делать "органолептически"?
 
Sleep(1000); - ошибка не исчезла
Sleep(10000); - ошибка не исчезла
Какой же ее делать "органолептически"?

большая просьба подобрать значение, когда ошибка исчезнет. сообщить это значение и прислать логи эксперта, получившиеся от предыдущего (ещё ошибочного) значения на stringoATmetaquotesDOTru
 
вдогонку. по некотором размышлении оказалось, что есть точный метод. попробую его сформулировать
    while(!IsStopped() && !IsTradeAllowed()) Sleep(1000);
    GlobalVariableSet(strTradeSemaphore, 0.0);


то есть, мы сами ждём освобождения занятого нами же торгового контекста

и вообще, исключительно странная ситуация. после проведения торговой операции контекст освобождается моментально. в противном случае нельзя было бы в цикле закрывать позиции

 
Sleep(1000); - ошибка не исчезла
Sleep(10000); - ошибка не исчезла
Какой же ее делать "органолептически"?

ещё вопрос. а у Вас нет других экспертов, которые торгуют? они могут ничего не знать про наш торговый семафор. тогда ошибка 146 очень даже хорошо объяснима
 
логи послал.
А куда вставлять этот код?
while(!IsStopped() && !IsTradeAllowed()) Sleep(1000);
    GlobalVariableSet(strTradeSemaphore, 0.0);