Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 643
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не последней по списку, а самой "молодой" по времени.
Хотя и я так-же не внимателен. Вопрос о модификации, а я пишу закрытие... А если просто модифай то и дыр никаких в списке ордеров не будет... Только может потребоваться добавить переменные и им присвоить значения и ОБЯЗАТЕЛЬНО проверку параметров, чтобы не получать ошибку #1. Ну с этим Мила сама справится.
Откуда вы можете быть точно уверены, что не появится зависимость от сортировки, и вы пропустите совсем не тот ордер, который бы хотели?
Ещё раз повторю: для надёжного нахождения именно последнего ордера, его нужно определить по времени открытия, а не по позиции в списке.
Насколько я знаю, ордера в списке располагаются как раз от самого раннего (OrdersTotal()-1) до самого позднего (0). Если это не так (список сортируется не по времени) и у Вас есть доказательства, предоставьте их пожалуйста.
Если же Вы говорите о том, что в момент запроса истории функцией OrdersTotal() другой эксперт выставил ордер, то он либо будет пропущен (в любом случае, т.к. не успел попасть в историю ордеров), либо так же станет последним в списке ордеров.
Можно, конечно, сильно-сильно перестраховаться и сравнивать время открытия всех ордеров от total-1 до 0 но, вряд ли, при использовании большого количества ордеров и торгуемых символов, это будет оптимальным решением.
Насколько я знаю, ордера в списке располагаются как раз от самого раннего (OrdersTotal()-1) до самого позднего (0). Если это не так (список сортируется не по времени) и у Вас есть доказательства, предоставьте их пожалуйста.
Если же Вы говорите о том, что в момент запроса истории функцией OrdersTotal() другой эксперт выставил ордер, то он либо будет пропущен (в любом случае, т.к. не успел попасть в историю ордеров), либо так же станет последним в списке ордеров.
Можно, конечно, сильно-сильно перестраховаться и сравнивать время открытия всех ордеров от total-1 до 0 но, вряд ли, при использовании большого количества ордеров и торгуемых символов, это будет оптимальным решением.
Хоспидя... Доказательства им подавай...
Видать, вы не совсем помните такие ситуации, будучи давно обсуждаемыми на mql4.com. Вот тогда-то и пришли к выводу, что лучше всё же искать по времени ордер для однозначного определения его времени открытия/закрытия. Уже устал повторять, что была зависимость от сортировки. Потом сделали так, что перестала быть. Народ расслабился, и начал делать так, как предлагаете вы. А потом бац.., и опять появилась зависимость от сортировки. Народ взвыл - роботы с ума сошли. А потом опять зависимость пропала от сортировки.
Если у вас есть желание в угоду мнимой оптимальности попасть снова когда-нибудь под раздачу, то делайте так, как делаете. Но не предлагайте такие решения другим людям. Либо, предлагая, предупреждайте о вероятности когда-либо потерять деньги из-за сбоев поиска нужного ордера, который (поиск) зависит от сортировки символов в списке, который в свою очередь никак не зависит от вас и вашего алгоритма. Наоборот - ваш алгоритм целиком зависит от кого-то...
Только не нужно говорить о том, что дилер может мухлевать со временем открытия/закрытия - это уже вопрос из другой плоскости.
Удачи.
Хоспидя... Доказательства им подавай...
Видать, вы не совсем помните такие ситуации, будучи давно обсуждаемыми на mql4.com. Вот тогда-то и пришли к выводу, что лучше всё же искать по времени ордер для однозначного определения его времени открытия/закрытия. Уже устал повторять, что была зависимость от сортировки. Потом сделали так, что перестала быть. Народ расслабился, и начал делать так, как предлагаете вы. А потом бац.., и опять появилась зависимость от сортировки. Народ взвыл - роботы с ума сошли. А потом опять зависимость пропала от сортировки.
Если у вас есть желание в угоду мнимой оптимальности попасть снова когда-нибудь под раздачу, то делайте так, как делаете. Но не предлагайте такие решения другим людям. Либо, предлагая, предупреждайте о вероятности когда-либо потерять деньги из-за сбоев поиска нужного ордера, который (поиск) зависит от сортировки символов в списке, который в свою очередь никак не зависит от вас и вашего алгоритма. Наоборот - ваш алгоритм целиком зависит от кого-то...
Только не нужно говорить о том, что дилер может мухлевать со временем открытия/закрытия - это уже вопрос из другой плоскости.
Удачи.
Да, подобных обсуждений не помню, форум четверки читал не часто. Возможно, когда-то, что-то подобное и было. Но, если закладываться на все, что было "когда-то" никаких ресурсов не хватит.
Если у вас есть желание в угоду мнимой оптимальности попасть снова когда-нибудь под раздачу, то делайте так, как делаете. Но не предлагайте такие решения другим людям. Либо, предлагая, предупреждайте о вероятности когда-либо потерять деньги из-за сбоев поиска нужного ордера, который (поиск) зависит от сортировки символов в списке, который в свою очередь никак не зависит от вас и вашего алгоритма. Наоборот - ваш алгоритм целиком зависит от кого-то...
"Попасть под раздачу", как Вы говорите, можно и кучей других способов. Повсюду, где потребуется быстро определить последний ордер перебирать их все по времени, имхо, крайне не рационально, почему - уже сказал.
А принимать мой способ или нет - пусть каждый для себя решает сам. Самый лучший вариант, открыть много ордеров и посмотреть, как же СЕЙЧАС происходит сортировка.
И Вам удачи.
Вы уверены, что показали надёжный способ пропуска последней позиции в списке?
Если торговать реально, то не беспокоит, что от сортировки может вдруг появиться зависимость?
Всё же, ИМХО, тут нужны два цикла - в первом ищем по времени открытия самую свежую позицию, во втором модифицируем все, кроме той, тикет которой нашли в первом цикле.
Нет, не уверен, но логически правильный.
Ниже прочел о коварстве MQ - появилась тревожность. Спасибо за предостережение.
Повсюду, где потребуется быстро определить последний ордер перебирать их все по времени, имхо, крайне не рационально, почему - уже сказал.
Зачем каждый раз перебирать? Вот это и есть не рационально.
Можно же перебрать единожды за тик для рыночных позиций и для закрытых ордеров, и заполнить все поля структуры всеми нужными данными двух последних ордеров - открытого и закрытого.
И пользуйтесь данными, полученными на этом тике. После их изменения на этом тике, на следующем вы получите новые данные и новые поля двух структур. Мне кажется - это нормальный баланс между надёжностью и скоростью. Вот это и есть оптимальность. А то, что вы называете оптимальностью, ИМХО - это шапкозакидательство ;)
Зачем каждый раз перебирать? Вот это и есть не рационально.
Можно же перебрать единожды за тик для рыночных позиций и для закрытых ордеров, и заполнить все поля структуры всеми нужными данными двух последних ордеров - открытого и закрытого.
И пользуйтесь данными, полученными на этом тике. После их изменения на этом тике, на следующем вы получите новые данные и новые поля двух структур. Мне кажется - это нормальный баланс между надёжностью и скоростью. Вот это и есть оптимальность. А то, что вы называете оптимальностью, ИМХО - это шапкозакидательство ;)
Вы углубляетесь в нюансы, про каждый раз, вообще, никто не говорил. Я, как и Вы, выступаю за рациональность, просто у нас с Вами взгляд на это разный.
Вы углубляетесь в нюансы, про каждый раз, вообще, никто не говорил. Я, как и Вы, выступаю за рациональность, просто у нас с Вами взгляд на это разный.
Ваши же слова:
Повсюду, где потребуется быстро определить последний ордер перебирать их все по времени, имхо, крайне не рационально...
"Повсюду" - разве в данном контексте обсуждения не синоним "каждый раз"?
Потому и ответил - перебирать один раз за тик, заполнять поля структуры нужными данными и использовать их повсюду, где нужно получить данные о последнем ордере, а не каждый раз повсюду перебирать.
Может я не так вас понял? Но ваше, мною процитированное выражение, ИМХО, исключает неоднозначность понимания.
Ваши же слова:
"Повсюду" - разве в данном контексте обсуждения не синоним "каждый раз"?
Потому и ответил - перебирать один раз за тик, заполнять поля структуры нужными данными и использовать их повсюду, где нужно получить данные о последнем ордере, а не каждый раз повсюду перебирать.
Может я не так вас понял? Но ваше, мною процитированное выражение, ИМХО, исключает неоднозначность понимания.
Вы не учитываете что в программе могут быть паузы/просто долгие расчеты, после которых нужно обновлять торговое окружение. Таскать за собой массив ордеров не всегда удобно, и глобальный массив - не всегда хорошее решение.
В любом случае, как я уже сказал, никто Вас не отговаривает, но бывают случаи, когда Ваш вариант будет менее предпочтительным (мультивалютные/мультиордерные системы). А перестраховываться на то, что MQ опять поменяют порядок сортировки (учитывая, что он такой и в mql4, и в mql5), я считаю, не нужно.
Вы не учитываете что в программе могут быть паузы/просто долгие расчеты, после которых нужно обновлять торговое окружение. Таскать за собой массив ордеров не всегда удобно, и глобальный массив - не всегда хорошее решение.
В любом случае, как я уже сказал, никто Вас не отговаривает, но бывают случаи, когда Ваш вариант будет менее предпочтительным (мультивалютные/мультиордерные системы). А перестраховываться на то, что MQ опять поменяют порядок сортировки (учитывая, что он такой и в mql4, и в mql5), я считаю, не нужно.
Уже давно сделан класс, который позволяет легко и не напрягаясь иметь данные по любым символам и любым магикам. И ничего таскать не нужно, тем более целый массив, а лишь ДВА ордера - последний открытый и последний закрытый. Каждый раз, после долгих расчётов или ожидания, нужно перезаполнять поля структур, что впрочем, и вам приходится делать, или вы не обновляете окружение?
Ладно. Разговор "ниочём"... Делайте как вам удобнее. Не заморачивайтесь о надёжности - ну её...
Уже давно сделан класс, который позволяет легко и не напрягаясь иметь данные по любым символам и любым магикам. И ничего таскать не нужно, тем более целый массив, а лишь ДВА ордера - последний открытый и последний закрытый. Каждый раз, после долгих расчётов или ожидания, нужно перезаполнять поля структур, что впрочем, и вам приходится делать, или вы не обновляете окружение?
Ладно. Разговор "ниочём"... Делайте как вам удобнее. Не заморачивайтесь о надёжности - ну её...