Скачать MetaTrader 5

OrderModify в тестере

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел ошибку в наших продуктах? Смело пиши в Сервисдеск!
Forex Trader
114257
Forex Trader 2005.09.16 15:29 
Столкнулся с проблемой, в советнике есть такой код:
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
ticket=OrderTicket();
....
Print("ticket=",ticket);
OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),,16384);


Так вот в журнале получаем:
2005.09.16 15:14:10 2004.05.05 08:00 <Sovet> USDJPY,H4: unknown ticket 1 for OrderModify function
2005.09.16 15:14:10 2004.05.05 08:00 <Sovet> USDJPY,H4: ticket=8
(порядок как есть в журнале)

От куда взялось изменять 1-й ордер???

Замена "ticket" на "OrderTicket()" ни к чему не приводит.

Forex Trader
114257
Forex Trader 2005.09.16 16:49  
Выведи cnt и ticket в лог
Forex Trader
114257
Forex Trader 2005.09.16 16:56  
и надо проверять результат OrderSelect:
if ( OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) == false ) { return(-1); }
Forex Trader
114257
Forex Trader 2005.09.19 08:04  
С утра уже другая ошибка:
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==false) {Print("Not select"); return(-1);}
ticket=OrderTicket();
...
Print("ticket/cnt=",ticket,"/",cnt);
OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),,16384);


Результат:

2005.09.19 07:59:34	2004.05.05 00:00  <Sovet> USDJPY,H4: ticket/cnt=8/0
2005.09.19 07:59:34	2004.05.05 00:00  <Sovet> USDJPY,H4: ticket for OrderModify function must be an integer
Forex Trader
114257
Forex Trader 2005.09.19 10:25  
Вот тебе и ответ. Проблема в логике советника. cnt и ticket не совпадают
MetaQuotes Software Corp.
Модератор
181282
MetaQuotes Software Corp. 2005.09.19 10:39  
OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),_где_параметр_,16384);
В функции не хватает параметров...
Forex Trader
114257
Forex Trader 2005.09.22 09:43  
Вот тебе и ответ. Проблема в логике советника. cnt и ticket не совпадают

Они и не должны совпадать. Один порядковый номер ордера в списке открытых ордеров в данный момент, второй - уникальный номер ордера.
Forex Trader
114257
Forex Trader 2005.09.22 09:46  
OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),_где_параметр_,16384);
В функции не хватает параметров...


Сенкс - это помогло.
Но почему компилер не ругался? И насколько мне позволяют мои знания анг., сообщение об ошибке совсем о другом. В обоих случаях.
Forex Trader
114257
Forex Trader 2005.09.22 14:13  
OrderModify(ticket,OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice(),_где_параметр_,16384);
В функции не хватает параметров...


Сенкс - это помогло.
Но почему компилер не ругался? И насколько мне позволяют мои знания анг., сообщение об ошибке совсем о другом. В обоих случаях.

потому что там последних 4 параметра могут вообще не заполнятся - надо быть очень внимательным с такими ф-циями.
И справку почаще читать =)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий