Вот функция, считающая количество пар с открытыми ордерами:
int CountTradesSymbol() //Считаем количество пар с открытыми ордерами { if (OrdersTotal() == 0) return(0); int count = 0; string sym = ""; for (int i = OrdersTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { if (StringFind(sym, OrderSymbol(), 0) < 0) { sym += OrderSymbol() + ","; count++; } } } } return(count); }
Возможно пригодится в вашем случае.
В if (OrderType() == подставьте нужные вам типы ордеров.
Если добавляешь вручную, то записывай в настройках советника тоже вручную.
Ну, можешь ещё глянуть этот пример если надо по другому. Но разработчики ещё не сремонтировали поломку, так что криво будет работать.
https://forum.mql4.com/ru/11241/page4#1020082
Вопрос. Мне нужно торговать в своём советнике несколькими активами (валютными парами). Как это сделать? То есть, я бы хотел добавлять в процессе торговли на свой счёт новые валютные пары вручную, а моя программа должна «видеть» добавленные валютные пары и знать их количество! Есть функция SymbolsTotal(), но она находит число всех доступных символов (активов) в окне
MarketWatc и число получается больше 400(?). Но мне нужно знать количество активов (символов), которые я добавил для торговли на своём счету! Например, добавил 5 символов — значит 5 символов программа и должна «видеть». Пока у меня так не получается! В общем, как написать грамотно советник, работающий с несколькими валютными парами (символами)?
1. Если нужно работать только с окном обзора рынка (ООР). Удалить все символы из ООР (или не все, но оставшиеся запомнить). Затем добавлять в ООР, а советник каждые 5 секунд пусть сверяет состав символов в ООР с тем, что он уже знает.
2. На диске вручную вести список символов. Добавлять не в ООР, а в него. Советник каждые 5 секунд сличает составы в файле со своими, если на диске появился новый, добавляет его в ООР (SymbolSelect) и в свой список. Имейте в виду, что программное добавление в ООР занимает сравнительно много времени, секунды.
1. Если нужно работать только с окном обзора рынка (ООР). Удалить все символы из ООР (или не все, но оставшиеся запомнить). Затем добавлять в ООР, а советник каждые 5 секунд пусть сверяет состав символов в ООР с тем, что он уже знает.
2. На диске вручную вести список символов. Добавлять не в ООР, а в него. Советник каждые 5 секунд сличает составы в файле со своими, если на диске появился новый, добавляет его в ООР (SymbolSelect) и в свой список. Имейте в виду, что программное добавление в ООР занимает сравнительно много времени, секунды.
1) Дада. Тему мою читал?
Прочел. https://www.mql5.com/ru/forum/107435, да? По-моему, разработчики ведут себя правильно. Список инструментов, видимо или невидимо находящихся в окне обзора рынка (точнее, среди тех, по которым поставляются котировки), это их элемент пользовательского (и не только пользовательского, еще и межпрограммного) интерфейса. Для меня он означает лишь возможность прояснить, идут ли котировки по инструменту. Мне непонятно Ваше "Дада". Эксплуатировать чужой список как свой - очень опасно, все права его изменения остаются не у Вас. Интерфейсный элемент терминала совсем не то, что свой список на диске с абсолютными Вашими правами. Проверять наличие нужных инструментов в окне обзора рынка и добавлять туда при необходимости недостающие - это, на мой взгляд, нормально. Но требовать от этого списка еще чего-либо нет оснований. Файл на диске, в частности, выполняет дополнительную роль протокола: при выключении терминала окно обзора рынка исчезает, а файл нет.
Прочел. https://www.mql5.com/ru/forum/107435, да? По-моему, разработчики ведут себя правильно. Список инструментов, видимо или невидимо находящихся в окне обзора рынка (точнее, среди тех, по которым поставляются котировки), это их элемент пользовательского (и не только пользовательского, еще и межпрограммного) интерфейса. Для меня он означает лишь возможность прояснить, идут ли котировки по инструменту. Мне непонятно Ваше "Дада". Эксплуатировать чужой список как свой - очень опасно, все права его изменения остаются не у Вас. Интерфейсный элемент терминала совсем не то, что свой список на диске с абсолютными Вашими правами. Проверять наличие нужных инструментов в окне обзора рынка и добавлять туда при необходимости недостающие - это, на мой взгляд, нормально. Но требовать от этого списка еще чего-либо нет оснований. Файл на диске, в частности, выполняет дополнительную роль протокола: при выключении терминала окно обзора рынка исчезает, а файл нет.
Да да.
В перечисление ENUM_SYMBOL_INFO_INTEGER добавлен член SYMBOL_VISIBLE
P.S. Так бесит когда вместо улучшений правил игры, все начинают подстраиватся.
Да да.
В перечисление ENUM_SYMBOL_INFO_INTEGER добавлен член SYMBOL_VISIBLE
P.S. Так бесит когда вместо улучшений правил игры, все начинают подстраиватся.
Не зарывайтесь.
Вы тут не один. Кода за 10 лет написано очень много и невозможно точно оценить, как скажутся изменения в правилах игры на ходу.
Но можно точно сказать - написано много кода, который перестанет работать, если внести желаемые только Вами изменения.
Вы согласились с предложенным нами изменением. Это изменение не ломает ничью логику. Зачем опять там чешете?
Не зарывайтесь.
Вы тут не один. Кода за 10 лет написано очень много и невозможно точно оценить, как скажутся изменения в правилах игры на ходу.
Но можно точно сказать - написано много кода, который перестанет работать, если внести желаемые только Вами изменения.
Вы согласились с предложенным нами изменением. Это изменение не ломает ничью логику. Зачем опять там чешете?
Где чешу?
Всё что я предлагаю не ломает логики предыдущих наработок
например
OrdersTotal(int magics=all,int types=all)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
MarketWatc и число получается больше 400(?). Но мне нужно знать количество активов (символов), которые я добавил для торговли на своём счету! Например, добавил 5 символов — значит 5 символов программа и должна «видеть». Пока у меня так не получается! В общем, как написать грамотно советник, работающий с несколькими валютными парами (символами)?