Andrey Kisselyov: вынужден адресовать вас к справке, дабы вы не учудили такое у себя в советнике.
как видно возвращаемое значение в 5ке будет зависеть от типа счета и учета позиций в нем, и при
вернет количество ордеров (независимых позиций), а не количество позиций по символам. что не приемлемо при поставленной задаче.в моем варианте вы получите реальное количество загруженных символов не зависимо от того какой учет позиций будет в вашем терминале, неттинг или хедж.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
Пример цикла по позициям с сохранением их символов в хешсете? Думаю, это тривиально. И вообще я не собирался эту тему в направлении МТ5 раздувать, т.к. вопрос был про МТ4. Я просто отметил, что упомянутый до меня способ для МТ5 - неоптимальный.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
Stanislav Korotky:
Пример цикла по позициям с сохранением их символов в хешсете? Думаю, это тривиально. И вообще я не собирался эту тему в направлении МТ5 раздувать, т.к. вопрос был про МТ4. Я просто отметил, что упомянутый до меня способ для МТ5 - неоптимальный.
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
Представьте ТС, которая должна сделать ExpertRemove сразу, как CurrencyPairs достигнет 100 (много, чтобы не достигалось, но честно считалось) - проверка на каждом OnTick в тестере без использования OnTrade*.
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
приведите продвинутый и оптимальный код, иначе ваши слова сплошное надувание щек перед девушкой, которой нужна была помощь.
с уважением.
При чем тут девушка? Она спрашивала про четверку. Некто предложил для пятерки "левый" способ. Поскольку ветку другие люди читают, в том числе которые пятерочный код могут взять на вооружение, я высказал свое мнение.
Ну, если так сложно понять как две штатные функции использовать... Для тех, кто в танке:
HashSet h;
for(int i = 0; i < PositionsTotal(); ++i)
{
h.put(PositionGetSymbol(i));
}
Print(h.getCount());
Класс хэша можете взять любой любимый. Если такого нет, можно использовать простой массив и приведенную выше функцию ArraySearchStr.
Представьте ТС, которая должна сделать ExpertRemove сразу, как CurrencyPairs достигнет 100 (много, чтобы не достигалось, но честно считалось) - проверка на каждом OnTick в тестере без использования OnTrade*.
для начала скажу так. в поставленной задаче топик стартера необходимо работать только на 2х символах, не более. как следствие не следует проверять количество рабочих символов на каждом тике. я бы проверял при появлении сигнала для входа и если сигнал есть, а количество символов в работе больше допустимого идет отмена сигнала.
занимает больше строк кода и команд чем у меня, будет работать медленнее чем представленный мной код. кроме того, с увеличением количества ордеров время работы цикла будет увеличиваться, что не очень приятно.
Stanislav Korotky:
При чем тут девушка? Она спрашивала про четверку. Некто предложил для пятерки "левый" способ. Поскольку ветку другие люди читают, в том числе которые пятерочный код могут взять на вооружение, я высказал свое мнение.
Ну, если так сложно понять как две штатные функции использовать... Для тех, кто в танке:ЧТО ЗА МАНЕРА ОСКОРБЛЯТЬ ЛЮДЕЙ, ЕСТЬ ЧТО СКАЗАТЬ ГОВОРИТЕ, НЕЧЕГО СКАЗАТЬ ИДИТЕ МИМО.УВАЖАЙТЕ СЕБЯ И ОКРУЖАЮЩИХ !!!
Класс хэша можете взять любой любимый. Если такого нет, можно использовать простой массив и приведенную выше функцию ArraySearchStr.
приведите полный код. во включаемый файл я могу написать сколько угодно кода, а вам кинуть одну строку по его включению и по вашему такой код будет оптимальный? жду полный код со всеми функциями работы на чистом MQL5.
Andrey Kisselyov: занимает больше строк кода и команд чем у меня, будет работать медленнее чем представленный мной код. кроме того, с увеличением количества ордеров время работы цикла будет увеличиваться, что не очень приятно.
то есть перебор всех символов 50-200 штук - это быстрее чем двух позиций? а с увеличением числа позиций до 5-10, будет еще неприятней, чем 50-200 символов?
то есть перебор всех символов 50-200 штук - это быстрее чем двух позиций? а с увеличением числа позиций до 5-10, будет еще неприятней, чем 50-200 символов?
:)
согласен, что при сравнении скорости исполнения вашего и моего кода зависит от того сколько символов и сколько ордеров в рынке, но у меня в обзоре только те символы по которым я торгую. зачем загружать поток котировками которые не нужны в работе? ордеров в рынке может быть намного больше, чем символов в окне "обзор рынка", а вот символов всегда определенное количество.
с уважением.
P.S. да кстати по условиям топик стартера, будет не больше двух позиций при неттинг подсчете позиций(и тут вы правы, ваш алгоритм будет работать быстрее при условии что символов куда больше в обзоре рынка), но если у вас хедж подсчет позиций, то тут позиций может быть больше чем символов в обзоре рынка, например при работе сеточника.
вот только ваш код под мт4, а мы обсуждаем разные варианты мт5 кода.
P.S.P.S. у топик стартера сеточник, так что ордеров будет больше чем символов в обзоре рынка.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
вынужден адресовать вас к справке, дабы вы не учудили такое у себя в советнике.
как видно возвращаемое значение в 5ке будет зависеть от типа счета и учета позиций в нем, и при
вернет количество ордеров (независимых позиций), а не количество позиций по символам.
что не приемлемо при поставленной задаче.в моем варианте вы получите реальное количество загруженных символов не зависимо от того какой учет позиций будет в вашем терминале, неттинг или хедж.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
пример в коде пожалуйста.
с уважением.
пример в коде пожалуйста.
Пример цикла по позициям с сохранением их символов в хешсете? Думаю, это тривиально. И вообще я не собирался эту тему в направлении МТ5 раздувать, т.к. вопрос был про МТ4. Я просто отметил, что упомянутый до меня способ для МТ5 - неоптимальный.
Справку я знаю. Не надо понимать все так буквально. Все очень даже приемлемо.
Разумеется, на хеджевом счете можно иметь несколько позиций по одному и тому же символу. Однако их перебор - и определение уникальных символов - в любом случае лучше, чем тупой цикл по всем доступным символам и попытка выделить позицию на каждом из них.
Пример цикла по позициям с сохранением их символов в хешсете? Думаю, это тривиально. И вообще я не собирался эту тему в направлении МТ5 раздувать, т.к. вопрос был про МТ4. Я просто отметил, что упомянутый до меня способ для МТ5 - неоптимальный.
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
приведите продвинутый и оптимальный код, иначе ваши слова сплошное надувание щек перед девушкой, которой нужна была помощь.
с уважением.
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
Представьте ТС, которая должна сделать ExpertRemove сразу, как CurrencyPairs достигнет 100 (много, чтобы не достигалось, но честно считалось) - проверка на каждом OnTick в тестере без использования OnTrade*.
я бы сделал так:
это вот этот код для мт5 "тупой и не оптимальный" по вашему ?
приведите продвинутый и оптимальный код, иначе ваши слова сплошное надувание щек перед девушкой, которой нужна была помощь.
с уважением.
При чем тут девушка? Она спрашивала про четверку. Некто предложил для пятерки "левый" способ. Поскольку ветку другие люди читают, в том числе которые пятерочный код могут взять на вооружение, я высказал свое мнение.
Ну, если так сложно понять как две штатные функции использовать... Для тех, кто в танке:
Класс хэша можете взять любой любимый. Если такого нет, можно использовать простой массив и приведенную выше функцию ArraySearchStr.
Представьте ТС, которая должна сделать ExpertRemove сразу, как CurrencyPairs достигнет 100 (много, чтобы не достигалось, но честно считалось) - проверка на каждом OnTick в тестере без использования OnTrade*.
у вашей @fxsaber задачи другое решение.
я бы сделал так:
При чем тут девушка? Она спрашивала про четверку. Некто предложил для пятерки "левый" способ. Поскольку ветку другие люди читают, в том числе которые пятерочный код могут взять на вооружение, я высказал свое мнение.
Ну, если так сложно понять как две штатные функции использовать... Для тех, кто в танке: ЧТО ЗА МАНЕРА ОСКОРБЛЯТЬ ЛЮДЕЙ, ЕСТЬ ЧТО СКАЗАТЬ ГОВОРИТЕ, НЕЧЕГО СКАЗАТЬ ИДИТЕ МИМО.УВАЖАЙТЕ СЕБЯ И ОКРУЖАЮЩИХ !!!
Класс хэша можете взять любой любимый. Если такого нет, можно использовать простой массив и приведенную выше функцию ArraySearchStr.
с уважением.
P.S.
сейчас посмотрел, можно еще короче написать.
кто сможет написать еще короче, чтоб выполнялось еще быстрее?
занимает больше строк кода и команд чем у меня, будет работать медленнее чем представленный мной код. кроме того, с увеличением количества ордеров время работы цикла будет увеличиваться, что не очень приятно.
то есть перебор всех символов 50-200 штук - это быстрее чем двух позиций?
а с увеличением числа позиций до 5-10, будет еще неприятней, чем 50-200 символов?
:)
то есть перебор всех символов 50-200 штук - это быстрее чем двух позиций?
а с увеличением числа позиций до 5-10, будет еще неприятней, чем 50-200 символов?
:)
с уважением.
P.S. да кстати по условиям топик стартера, будет не больше двух позиций при неттинг подсчете позиций(и тут вы правы, ваш алгоритм будет работать быстрее при условии что символов куда больше в обзоре рынка), но если у вас хедж подсчет позиций, то тут позиций может быть больше чем символов в обзоре рынка, например при работе сеточника.
вот только ваш код под мт4, а мы обсуждаем разные варианты мт5 кода.
P.S.P.S. у топик стартера сеточник, так что ордеров будет больше чем символов в обзоре рынка.