Скачать MetaTrader 5

Примеры: MagicNumber – "магический" идентификатор ордера

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся активность участников MQL5.community на одной странице!
MetaQuotes Software Corp.
Модератор
181419
MetaQuotes Software Corp. 2006.05.24 15:29 

New article MagicNumber – "магический" идентификатор ордера has been published:

Статья посвящена бесконфликтной торговле нескольких экспертов на одном терминале МТ 4. Она научит эксперта управлять только "своими" ордерами, не модифицируя и не закрывая "чужие" (открытые вручную или другими экспертами) позиции. Статья рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL 4.

Author: Andrey Khatimlianskii

MQL4 Comments
16319
MQL4 Comments 2007.05.29 12:14  

Предлагаю для создания уникального MagicNumber использовать функцию TimeLocal(), которая вызывается при инициализации эксперта в функции init(). Значение функции TimeLocal() и присваивается целой переменной magik. Поскольку старт экспертов и инициализация их переменных на одном компьютере может производиться только последовательно, переменной magik будет присваиваться уникальный номер, что и требуется для работы с любым количеством запущенных экспертов...

Andrey Khatimlianskii
136
Andrey Khatimlianskii 2007.05.29 12:31  
NPV:

Предлагаю для создания уникального MagicNumber использовать функцию TimeLocal(), которая вызывается при инициализации эксперта в функции init(). Значение функции TimeLocal() и присваивается целой переменной magik. Поскольку старт экспертов и инициализация их переменных на одном компьютере может производиться только последовательно, переменной magik будет присваиваться уникальный номер, что и требуется для работы с любым количеством запущенных экспертов...

Во-первых, за одну секунду может инициализироваться хоть 100 экспертов - и у них получится одинаковый меджик.
А во-вторых, как эксперт "узнает" открытую ранее позицию? Если после каждого запуска будет новый меджик, он будет "терять" старые позиции.
MQL4 Comments
16319
MQL4 Comments 2007.06.04 16:32  
komposter:
NPV:

Предлагаю для создания уникального MagicNumber использовать функцию TimeLocal(), которая вызывается при инициализации эксперта в функции init(). Значение функции TimeLocal() и присваивается целой переменной magik. Поскольку старт экспертов и инициализация их переменных на одном компьютере может производиться только последовательно, переменной magik будет присваиваться уникальный номер, что и требуется для работы с любым количеством запущенных экспертов...

Во-первых, за одну секунду может инициализироваться хоть 100 экспертов - и у них получится одинаковый меджик.
А во-вторых, как эксперт "узнает" открытую ранее позицию? Если после каждого запуска будет новый меджик, он будет "терять" старые позиции.


Как можно за одну секунду запустить 100 экспертов, если их можно запускать только последовательно?!... Ведь они запускаются на разных таймфреймах...
И какую "открытую ранее позицию" должен узнавать эксперт? Эксперт запускается один раз на одном таймфрейме и работает пока его не закроет хозяин. Все это время он открывает и закрывает только свои позиции с уникальным меджиком, остальные же позиции пропускаются при переборе открытых позиций перед их закрытием. Что можно потерять при этом...?
Andrey Khatimlianskii
136
Andrey Khatimlianskii 2007.06.04 17:20  
NPV писал(а):
Как можно за одну секунду запустить 100 экспертов, если их можно запускать только последовательно?!...
Например, загрузив терминал.
Если запустить несколько экспертов а потом перезапустить терминал, они начнут работать практически одновременно.

NPV писал(а):
И какую "открытую ранее позицию" должен узнавать эксперт? Эксперт запускается один раз на одном таймфрейме и работает пока его не закроет хозяин. Все это время он открывает и закрывает только свои позиции с уникальным меджиком, остальные же позиции пропускаются при переборе открытых позиций перед их закрытием. Что можно потерять при этом...?

Опять же, если эксперт откроет позицию, а потом терминал перезагрузится (например, электричество отключат), он уже не найдет открытую позицию, т.к. сгенерируется новый мейджик.
MQL4 Comments
16319
MQL4 Comments 2007.06.05 10:07  
komposter:
NPV писал(а):
Как можно за одну секунду запустить 100 экспертов, если их можно запускать только последовательно?!...
Например, загрузив терминал.
Если запустить несколько экспертов а потом перезапустить терминал, они начнут работать практически одновременно.

NPV писал(а):
И какую "открытую ранее позицию" должен узнавать эксперт? Эксперт запускается один раз на одном таймфрейме и работает пока его не закроет хозяин. Все это время он открывает и закрывает только свои позиции с уникальным меджиком, остальные же позиции пропускаются при переборе открытых позиций перед их закрытием. Что можно потерять при этом...?

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

Да, согласен, в этом случае мое предложение не работает... Вы правы, нужно учитывать возможные сбои...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий