Новая версия MetaTrader 4 Client Terminal build 409 - страница 9

 
stringo:

Открою секрет. Изначально была задумка: код записанный вне всяких функций группировать в блок начальной инициализации, выполняемый сразу после загрузки эксперта, но до вызова функции init(). По ряду причин в конце концов отказались, тем не менее компилятор трогать не стали, чтобы не задеть жизненно важные органы. Код вне функций компилируется, но не выполняется.
Эти секреты должны быть описаны в документации. Беда в другом, даже на четверке не отработан синтаксический анализатор этого простейшего языка. Я тут писал о глюках, но воз и нынче там. А ведь так все просто - есть же готовые анализаторы, бесплатные, отработанные сотнями программеров.
 

ИМХО, в группе разработчиков МТ? уже нет инициативных людей, которые что-либо хотят дорабатывать с МТ4, т.к. у них родилось новое дитё: МТ5.

Зачем лохматить старушку ? (с) :)

 
LEOK:

ИМХО, в группе разработчиков МТ? уже нет инициативных людей, которые что-либо хотят дорабатывать с МТ4, т.к. у них родилось новое дитё: МТ5.

Зачем лохматить старушку ? (с) :)


https://www.mql5.com/ru/forum/138260

Вот вам - начинайте лохматить. только надолго ли вас хватит ?

 

Хитрый какой!
В Штатах за такую работу за каждый баг приплачивают и не хило ...

 
LEOK:

Хитрый какой!
В Штатах за такую работу за каждый баг приплачивают и не хило ...


Почему же хитрый. Он же не сотрудник метаквотов. Работает на себя. Как и большинство на этом форуме
 
Вот. как ныть так все гаразды, а как сделать что нибудь для себя, и для всех. так сразу начинается... Вот такая логика с лирикой...
 

При одновременной работе двух экспертов и попытке одновременно провести сделку по одной и тойже валюте,

произошла подмена номеров ордеров или Magic номеров.

Эксперт A, Magic A2 - OrderSend вернул номер тикета A1,

Эксперт B, Magic B2 - OrderSend вернул номер тикета B1,

Но в результате было открыто 2 позиции:

A1 с Magic номером B2

B1 с Magic номером A2

Такое впервые.

 
При одновременной работе 3х экспертов повторяется ошибка с подменой Magic номеров.

Вероятно, терминал просто неверно заполняет Log файл, указывая в начале строк ошибочные имена рабочих экспертов.

Эксперт выводит с помощью Print() возвращаемый OrderSend () номер тикета, а также номер ошибки, если тикет меньше нуля.

Эксперты (ID в названии эксперта соответсвует Magic номеру)

00:44:03 BOT19.ID190 EURUSD,M1: Ticket: -1
00:44:03 BOT19.ID190 EURUSD,M1: Error: 146
00:44:03 BOT18.ID180 EURUSD,M1: open #1217647478 buy 0.01 EURUSD at 1.31150 sl: 1.30800 tp: 1.31950 ok
00:44:03 BOT18.ID180 EURUSD,M1: Ticket: 1217647478
00:44:07 BOT34.ID340 EURUSD,M1: open #1217647479 buy 0.03 EURUSD at 1.31149 sl: 1.30769 tp: 1.31909 ok
00:44:07 BOT34.ID340 EURUSD,M1: Ticket: 1217647479
00:47:27 BOT19.ID190 EURUSD,M1: Ticket: -1
00:47:27 BOT19.ID190 EURUSD,M1: Error: 128

Журнал

2012.03.07 00:44:03 '330356': order buy 0.03 EURUSD opening at 1.31150 sl: 1.30770 tp: 1.31910 failed [Trade context is busy]
2012.03.07 00:44:03 TradeDispatcher: trade context is busy
2012.03.07 00:44:05 '330356': instant order buy 0.01 EURUSD at 1.31150 sl: 1.30800 tp: 1.31950
2012.03.07 00:44:05 '330356': request was accepted by server
2012.03.07 00:44:05 '330356': request in process
2012.03.07 00:44:07 '330356': order was opened : #1217647478 buy 0.01 EURUSD at 1.31150 sl: 1.30800 tp: 1.31950
2012.03.07 00:44:07 '330356': instant order buy 0.03 EURUSD at 1.31149 sl: 1.30769 tp: 1.31909
2012.03.07 00:44:08 '330356': request was accepted by server
2012.03.07 00:44:08 '330356': request in process
2012.03.07 00:44:10 '330356': order was opened : #1217647479 buy 0.03 EURUSD at 1.31149 sl: 1.30769 tp: 1.31909
2012.03.07 00:47:27 '330356': order buy 0.03 EURUSD opening at 1.31149 sl: 1.30769 tp: 1.31909 failed [Trade timeout]

Результат - открыто только 2 позиции:

1217647478 ID340 buy 0.01 EURUSD at 1.31150 sl: 1.30800 tp: 1.31950
1217647479 ID190 buy 0.03 EURUSD at 1.31149 sl: 1.30769 tp: 1.31909
ID180 - позиция не открылась
 

Ошибка с "instead of sell" не исправлена

https://www.mql5.com/ru/forum/111288/page2

При попытке открыть новую позицию OrderSend() возвращает тикет ордера, который был открыт ранее другим экспертом и имеет другой Magic.

Например, при попытке открыть позицию на продажу получается следующее:

2012.03.20 14:18:05 BOT30.ID300 USDJPY,M1: open #1217887288 buy (instead of sell) 0.01 USDJPY at 83.422 sl: 82.652 tp: 87.722 ok

При этом ордер #1217887288 был открыт другим экспертом за сутки до этого:

2012.03.19 02:18:14 BOT01.ID010 USDJPY,M1: open #1217887288 buy 0.01 USDJPY at 83.422 sl: 82.652 tp: 87.722 ok


Причина обращения: