Как в mql4 ордера объединять в группы?

 

Всем привет! Вопрос такой, как объединить ордера в группы, для дальнейшей работы с ними. В группе ордера могут меняться например Sell Stop стать рыночным ордером у него может измениться ТП и так далее.

Может, как то можно, маркировать ордера при их открытии. Гуглин ничего не нашёл, может не там ищу, направьте на путь истеный)))

Может номер тикета заносить в массив и с массивом уже работать? 

 
Artem Onopin:

Всем привет! Вопрос такой, как объединить ордера в группы, для дальнейшей работы с ними. В группе ордера могут меняться например Sell Stop стать рыночным ордером у него может измениться ТП и так далее.

Может, как то можно, маркировать ордера при их открытии. Гуглин ничего не нашёл, может не там ищу, направьте на путь истеный)))

Может номер тикета заносить в массив и с массивом уже работать? 


Для чего все это нужно? 

Можно по магику выбирать или по комментарию, по символу, по типу. Далее заносите в массив. Массив это уже группировка целая.

 

Зависит от цели. Если могут быть несколько независимых групп, то можно менять магики. В каждой группе обязательно есть первый, стартовый ордер, его тикет можно использовать для всей группы ордеров связанных каким-то условием с этим стартовым. Можно цену разделить на _Point и получив число типа int его использовать в качестве магика.

В общем вариантов, далеко не один. Выбирай на вкус.

 
Evgeny Belyaev:


Для чего все это нужно? 

Можно по магику выбирать или по комментарию, по символу, по типу. Далее заносите в массив. Массив это уже группировка целая.


Для работы с локирующими ордерами
 
Alexey Viktorov:

Зависит от цели. Если могут быть несколько независимых групп, то можно менять магики. В каждой группе обязательно есть первый, стартовый ордер, его тикет можно использовать для всей группы ордеров связанных каким-то условием с этим стартовым. Можно цену разделить на _Point и получив число типа int его использовать в качестве магика.

В общем вариантов, далеко не один. Выбирай на вкус.


Да буду разбираться с массивами, других вариантов не вижу в моей ситуации))
 
Artem Onopin:

Да буду разбираться с массивами, других вариантов не вижу в моей ситуации))

Так для локирующих как раз удобней использовать тикет того ордера который локируется.

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

Одна только проблема, совместно с таким советником сложно поставить другой советник и этим не цеплять ордера другого советника. Сам не очень понял такой каламбур... ладно, надеюсь сможешь и это понять.

 
ставьте метку в комментарий, по которой будете определять группу/тикет...
 

Все способы не очень...
Массив теряется при перезапуске и других неприятных коллизиях,
комментарии ордеров могут меняться при частичных закрытиях.
Ну а тикет и магик... Тут тоже есть подводные камни - действие другого советника может вмешаться случайно например...


Запись пары в файл может быть?

Залокировали тикет 5 тикетом 10 - записали в файл "5-10;"
залокировали тикет 10, тикетом 11 - вписали в файл "10-11;".
Закрыли тикет 5 - удалили из файла "5-10" - осталось в файле "10-11;"

Или, если было в файле 5-10; 10-11; и был закрыт 10, то все пары разрушены, и необходимо удалить все записи из файла с вхождением 10 - т.е., удалить все записи - нет парных.

Ну и читаем из файла строки для определения парных.

Первое, что приходит в голову ...

 
Artyom Trishkin:

Запись пары в файл может быть?

Залокировали тикет 5 тикетом 10 - записали в файл "5-10;"
залокировали тикет 10, тикетом 11 - вписали в файл "10-11;".
Закрыли тикет 5 - удалили из файла "5-10" - осталось в файле "10-11;"

Или, если было в файле 5-10; 10-11; и был закрыт 10, то все пары разрушены, и необходимо удалить все записи из файла с вхождением 10 - т.е., удалить все записи - нет парных.

Ну и читаем из файла строки для определения парных.

Первое, что приходит в голову ...


Все верно. Ведение таблиц соответствия в памяти плюс запись таблицы в случае изменения в файл (это для случаев нештатного завершения программы)
 
Artem Onopin:

Да буду разбираться с массивами, других вариантов не вижу в моей ситуации))


А что массивы? Перазапустите эксперта или терминал и все накроется.

Самый простой способ - глобальные переменные. У ордера есть тикет, значит глобальная переменная должна включать тикет ордера, таким образом, имея тикет можно сразу обратиться к глобальной переменной. Этой глобальной переменной присваивается идентификатор группы, это может быть тикет начального ордера группы или время.  Так можно к ордеру любое колиячество данных привязать - идентификатор группы, номер ордера в группе.

Так же в комментарий можно писать идентификатор группы и номер ордера в группе. 

 
Dmitry Fedoseev:


А что массивы? Перазапустите эксперта или терминал и все накроется.

Массивы, которые при каждом изменении (добавлении/удалении тикета) записываются в файл. То есть все сохранится.

Самый простой способ - глобальные переменные.

Простой, но и непонятный. Какое-то время не открывался терминал - вся информация утеряна, т. к. терминал почистил данные, к которым долго не обращались.