Скачать MetaTrader 5

IsTradeAllowed() - непонятки в работе или глюк МТ

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114318
Forex Trader  
У меня перед торговыми операциями идёт проверка IsTradeAllowed() (разработчики рекомендовали).
Когда я спрашивал - что эта ф-ция значит, мне отвечали примерно следующее: "она возвращает правду, если в настройках эксперта стоит галочка "разрешить торговлю" и торговый поток свободен (т.е. не торгует другой эксперт)"
По этому поводу я сделал не просто проверку, а проверку в течении 5 секунд (если торгует другой эксперт, у него будет шанс закончить).

Вчера (время не помню) и сегодня (5 минут назад) у меня сложилась следующая ситуация: эксперты (вчера - все прикреплённые, сегодня - один), которые хотели торговать, возвращали сообщение "Эксперту запрещена торговля!!!", т.е. IsTradeAllowed () возвращал false в течении 5 секунд, и так несколько раз (достаточно долго - сегодня 10 минут)... При этом никто не торговал, ни я, ни эксперты. Галочки я раз десять проверил у каждого эксперта, пробовал включать и отключать опять.. Помог только перезапуск терминала.

Кусок кода:
.....
if ( !_IsTradeAllowed() ) return(-1);
OrderClose(......);
......


/////////////////////////////////////////////////////////////////////////////////
/**/ bool _IsTradeAllowed ()
/////////////////////////////////////////////////////////////////////////////////
// Если IsTradeAllowed() в течении 5 секунд не становится = true, возвращаем false.
/////////////////////////////////////////////////////////////////////////////////
{
	if ( IsTesting() ) { return(true); }
	for ( int z = 0; z < 50; z ++ )
	{
		if ( IsTradeAllowed() ) { return(true); }
		Sleep(100);
	}
	Print ( "Эксперту запрещена торговля!!!" );
return(false);
}
Forex Trader
114318
Forex Trader  
очень бы хотелось разобраться в ситуации...
Помогите, плз...
Forex Trader
114318
Forex Trader  
будем разбираться.
вопрос. что будет, если Вы всё же вопреки запрещению попытаетесь провести торговую операцию? теоретически, я знаю, что должно быть, хотелось бы узнать про Ваш конкретный случай
Forex Trader
114318
Forex Trader  
будем разбираться.
вопрос. что будет, если Вы всё же вопреки запрещению попытаетесь провести торговую операцию? теоретически, я знаю, что должно быть, хотелось бы узнать про Ваш конкретный случай

не догадался попробовать... сейчас сделаем ;)

только заминочка может быть - ситуация не стабильно проявляется...
Forex Trader
114318
Forex Trader  
Сделал. Результат - ошибка №146 (trade context is busy)
С тех пор, как появилась первый раз, не прекращалась...
Лечится только перезапуском МТ.
Forex Trader
114318
Forex Trader  
будем воспроизводить
Forex Trader
114318
Forex Trader  
будем воспроизводить
на всякий случай: советник открывает и закрывает позицию в цикле, т.е. не ждёт прихода тика - частота сделок 1 в 10 сек. Ошибка появилась на 1778 операции этого эксперта (кроме них за это время было совершено ещё 58 операций) через 5 часов и 16 минут работы.

Надеюсь на скорейшее решение.
Forex Trader
114318
Forex Trader  
второй раз ситуация воспроизвелась достаточно быстро - перед тем, как писАть пост, я перезапустил МТ и уже через 15 минут - то же самое.

зы: (ещё не говорил) проблема появляется одновременно у всех экспертов, работающих в данный момент.
Forex Trader
114318
Forex Trader  
Уважаемый Компостер!
Здравствуйте!
Я прочитал немного форум- я у меня есть вопрос к Вам тоже касается возможности торговли.
Дайте совет,если можно
Я написал блок модификации- перемещения стопа. Не трейлинг стоп.
{
if (OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES)==true)
{
double stopprice_ticket1=OrderStopLoss();
if ((Low[1]-Low[2])>0)
{
double stopprice_ticket1_new=Low[1]-StopLoss*Point;
OrderModify(OrderTicket(),OrderOpenPrice(),stopprice_ticket1_new,OrderTakeProfit(),0,Green);
}
}
В тестере- пальчики оближешь! В реальном времени- стоп мертвый. Не двигается.
Вы встречались с этой проблемой? Как вы её решали???

Начинающий
Forex Trader
114318
Forex Trader  
Попробуй использовать нормализацию stopprice_ticket1_new
Forex Trader
114318
Forex Trader  
OrderSelect(ticket1,SELECT_BY_TICKET,MODE_TRADES
почитаейте хелп по этой ф-ции - уже сотню раз говорилось про SELECT_BY_TICKET
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий