# Паралельная модификация ордеров (8 в 1)

Раздел: Язык программирования MQL4
Автор темы: profit777Qq
Создана: 2018-12-11 17:04
Ответов: 9 | Просмотров: 2969
Страница 1 из 1
Источник: https://forexsystemru.com/threads/87181/

---

## profit777Qq — 2018-12-11 17:04

Здравствуйте. Подскажите пожалуйста как можно одномоментно (в 8 потоков) модифицировать огромное количество ордеров (sl/tp) в параллельно открытых окнах графиков одного терминала мт4. В какую сторону копать? Для примера когда - то для мт4 была возможность одновременно модифицировать 8 ордеров - открывая 8 графиков в одном терминала. может есть пример или идея. Спасибо.

## Ugar — 2018-12-11 23:44

> Цитата (profit777Qq):
> Здравствуйте. Подскажите пожалуйста как можно одномоментно (в 8 потоков) модифицировать огромное количество ордеров (sl/tp) в параллельно открытых окнах графиков одного терминала мт4. В какую сторону копать? Для примера когда - то для мт4 была возможность одновременно модифицировать 8 ордеров - открывая 8 графиков в одном терминала. может есть пример или идея. Спасибо.

  Есть же GV переменные. Они доступны всем программам, работающим внутри терминала. Функция сигнальщик пишет команду в GV. Советники на нескольких окнах проверяют состояние GV, как только там появляется сигнал -выполняют. Если все советники стоят на одном символе, тики будут там одновременно. Значит одновременно они обнаружат сигнал и одновременно будут выполнять.
Главное не превысить количество потоков отправки ордеров.

PS Мне стыдно, но я не знаю сколько сейчас потоков отправки ордеров в МТ4. Раньше был только один поток. Я до сих пор, перед отправкой ордера, проверяю есть ли свободный поток.

## AlexeyVik — 2018-12-12 12:17

Андрей, не знать не стыдно. Нет нужды и знать не надо... 8 потоков уже так давно, что и вспомнить сложно.

Что касается решаемой проблемы, на мой взгляд GV не помогут. получается что на одном тике ведущий советник пишет GV, а другие читают только на следующем тике. Получается задержка. Потом как остановить всю эту вакханалию модификации? Видимо надо удалить GV, но как определить момент удаления?
Мои рассуждения вслух:
Восемь советников отслеживают момент модификации и модифицируют каждый свой ордер. Пусть будет 18 ордеров, один советник модифицирует из списка OrdersTotal() 0, 8 и 16, второй 1, 9 и 17 третий только 2 и 9 ... восьмой 7 и 15
Но это надо проверять...

## profit777Qq — 2018-12-12 16:47

> Цитата (AlexeyVik):
> Восемь советников отслеживают момент модификации и модифицируют каждый свой ордер. Пусть будет 18 ордеров, один советник модифицирует из списка OrdersTotal() 0, 8 и 16, второй 1, 9 и 17 третий только 2 и 9 ... восьмой 7 и 15
> Но это надо проверять...

 
Спасибо всем за ответы. Задумывался над этим... вот только вопрос - отдельные терминалы или черты с отдельными советниками в пределах одного терминала. Спасибо.

П.С. А где можно прочитать о 8 поточности... так как что-то не могу найти. Спасибо

## Ugar — 2018-12-12 20:58

> Цитата (AlexeyVik):
> Андрей, не знать не стыдно. Нет нужды и знать не надо... 8 потоков уже так давно, что и вспомнить сложно.
>
> Что касается решаемой проблемы, на мой взгляд GV не помогут. получается что на одном тике ведущий советник пишет GV, а другие читают только на следующем тике. Получается задержка. Потом как остановить всю эту вакханалию модификации? Видимо надо удалить GV, но как определить момент удаления?
> Мои рассуждения вслух:
> Восемь советников отслеживают момент модификации и модифицируют каждый свой ордер. Пусть будет 18 ордеров, один советник модифицирует из списка OrdersTotal() 0, 8 и 16, второй 1, 9 и 17 третий только 2 и 9 ... восьмой 7 и 15
>  Но это надо проверять...

Алексей, я имел ввиду что сигнальщик только сигналит, не модифицирует. Остальные модифицируют по сигналу. GV это только способ связать их между собой. Но твой способ быстрее. Естественно, проблема ещё и в том что бы они не подрались за закрытие одного ордера, вместо этого закрывал каждый свой. Ориентироваться по номеру ордера в списке, не очень. Ведь там могут быть ордера другого символа и маджика. Но различать как то надо. Либо задействовать 8 маджиков, либо метки в комментарии, либо собрать свои ордера в массив и работать с номерами ячеек массива. Всё это вопрос реализации. Хотя, если подумать, синхронность работы будет только у первой восьмёрки. Далее они разъедутся во времени, ведь время исполнения приказов обычно не одинаковое.

## AlexeyVik — 2018-12-12 22:21

> Цитата (Ugar):
> Алексей, я имел ввиду что сигнальщик только сигналит, не модифицирует. Остальные модифицируют по сигналу. GV это только способ связать их между собой. Но твой способ быстрее. Естественно, проблема ещё и в том что бы они не подрались за закрытие одного ордера, вместо этого закрывал каждый свой. Ориентироваться по номеру ордера в списке, не очень. **Ведь там могут быть ордера другого символа и маджика.** Но различать как то надо. Либо задействовать 8 маджиков, либо метки в комментарии, либо собрать свои ордера в массив и работать с номерами ячеек массива. Всё это вопрос реализации. Хотя, если подумать, синхронность работы будет только у первой восьмёрки. Далее они разъедутся во времени, ведь время исполнения приказов обычно не одинаковое.

 Я считаю что ставить с таким скорострельным советником какой-то ещё, это самоубийство. Поэтому о разных магиках даже и не думал.
В принципе, если учесть, что других советников не будет, можно сделать восемь магиков и поставить работу каждого дополнительного советника на работу со своим магиком, чтобы они не дрались за один ордер. В общем полёт фантазии никто не отменял.

## profit777Qq — 2018-12-13 11:49

Сспасибо за Ваши ответы! Да была такая идея с разделением ордеров на групы. Вы имели ввиду в пределах одного терминала на разных чартах или в нескольких терминалах?

## Ugar — 2018-12-13 13:07

> Цитата (profit777Qq):
> Спасибо всем за ответы. Задумывался над этим... вот только вопрос - отдельные терминалы или черты с отдельными советниками в пределах одного терминала. Спасибо.
>
> П.С. А где можно прочитать о 8 поточности... так как что-то не могу найти. Спасибо

О 8 потоках стоит думать только если работать в пределах одного терминала. Именно терминал имеет ограничение в количестве потоков. При работе несколькими терминалами, каждый из них может 8 потоков.

## profit777Qq — 2018-12-14 14:01

> Цитата (Ugar):
> О 8 потоках стоит думать только если работать в пределах одного терминала. Именно терминал имеет ограничение в количестве потоков. При работе несколькими терминалами, каждый из них может 8 потоков.

Спасибо за ответ. А есть оф. документация на такое решение или подсказка как такое можно реализовать (может какой-то пример со схожей логикой). Так как ничего не находится. Спасибо огромное.

## Ugar — 2018-12-14 14:05

> Цитата (profit777Qq):
> Спасибо за ответ. А есть оф. документация на такое решение или подсказка как такое можно реализовать (может какой-то пример со схожей логикой). Так как ничего не находится. Спасибо огромное.

У меня нет примера. Я такого пока не писал. Никто не заказывал такой комплекс советников.

