
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мы ночей не досыпаем, выискиваем в твоих постах к чему бы прикопаться. А ты аккуратный!
Брось, ты не то что "по лезвию", ты еще "с рукоятки" не сошел ;)
Говори смело, но не грубо. И запрещенные темы, естественно, не поднимай (ДЦ, брокеры, и т.д.).
Если ляпнешь лишнего (по их мнению), сделают предупреждение.
Банят хамов, нахалов, и голословных.
А "пытливые умы" не банят.
Эх, до пупа земли мне еще ой как далеко, если мои методы отождествляют с "ковырянием", знаете тоже обидно в какой-то степени, потому что реализация этих методов и знаний никому по сути не нужна, это только палки в колесах, которые так же подвержены контролю при их проявленной значимости, лишние проблемы...
А "пытливые умы" не банят. - Об этом надо спросить у того кто банит:) Уже ляпнул лишнего, уже было предупреждение, все проверено:)
А выложить сложно было? Не жалеешь чужое время, абсолютно...
Дык... Я же говорю, что засмущался, отбросил его, потом совсем запутался. Access этот еще...
Если надо, могу поделиться набросками.
Млин... Как же я не допер? Четко - нужную ячейку можно индивидуально отслеживать, остальные игнорить. Написано ведь по-русски - таргет! Вот что значит глаз замылился :() Таким образом можно в один лист набросать DDE-связей от разных источников и каждый со своего бока стругать. Нижайший поклон за наколку.Я в поисках встретил нечто об этом. Сразу не запомнил, а снова не смог найти. Нарисуй, если не в лом. Хоть концепцию понять. Хотя я примерно вижу. Это параметр который стандартно передается в это событие. Вот так?
В чем, по Вашему мнению,может заключаться "корявость подпорок (DDE)" в случае с чтением котировок с терминала MT4?
Во первых DDE использует для передачи информации shared memory. И в случае ошибочных ситуаций, занятости одного клиента или сервера, очень велика вероятность утечки памяти. Так как такие объекты с закрытием приложения не удаляются. Они должны быть явно закрыты. Во вторых весь обмен происходит посредством очереди сообщений виндов - что не является быстрым методом и скорость обмена зависит от загруженности очереди другими сообщениями. Винда вообще никогда не славилась умением распределять ресурсы процессора. Ладно если вы хотите получать данные на часовках и смогли написать грамотный ДДЕ клиент с обработкой ошибок и исключений (в чем я сомневаюсь, судя по задаваемым вопросам, и гемморой от плохой реализации будет постоянно беспокоить при дальнейшей эксплуатации), но при попытке получать тиковые данные вы упретесь в недостаточную и главное плавающую скорость обработки сообщений.
> Написать dll труда не составляет, но почему бы не воспользоваться, на мой взгляд, более простым решением(DDE).
Это кажущаяся простота, а на деле потратите время и устанете собирать грабли в лоб.
ЗЫ. Все это ИМХО и просто основано на большом опыте программирования.
В чем, по Вашему мнению,может заключаться "корявость подпорок (DDE)" в случае с чтением котировок с терминала MT4?
Во первых DDE использует для передачи информации shared memory. И в случае ошибочных ситуаций, занятости одного клиента или сервера, очень велика вероятность утечки памяти. Так как такие объекты с закрытием приложения не удаляются. Они должны быть явно закрыты. Во вторых весь обмен происходит посредством очереди сообщений виндов - что не является быстрым методом и скорость обмена зависит от загруженности очереди другими сообщениями. Винда вообще никогда не славилась умением распределять ресурсы процессора. Ладно если вы хотите получать данные на часовках и смогли написать грамотный ДДЕ клиент с обработкой ошибок и исключений (в чем я сомневаюсь, судя по задаваемым вопросам, и гемморой от плохой реализации будет постоянно беспокоить при дальнейшей эксплуатации), но при попытке получать тиковые данные вы упретесь в недостаточную и главное плавающую скорость обработки сообщений.
> Написать dll труда не составляет, но почему бы не воспользоваться, на мой взгляд, более простым решением(DDE).
Это кажущаяся простота, а на деле потратите время и устанете собирать грабли в лоб.
ЗЫ. Все это ИМХО и просто основано на большом опыте программирования.
Renat писал (а):
Сложность написания DDE сервера или клиента по сравнению с обычной DLL где-то 10:1. Не нужно ломать копий по поводу DDE - ее наверняка на будет в нашей следующей информационно-торговой платформе.
Экспорт данных по DDE из MT4 сам по себе надежен, но использовать его для собственных приложений не целесообразно.
Но DDE - это страшный анахронизм. Вместо него мы дадим гораздо более эффективные методы для сбора данных.
Экспорт по DDE из МетаТрейдер 4 надежен, так как встроенный DDE сервер имеет собственную очередь котировок, из которой и выдает данные DDE клиентам. То есть, если Вы подключились к DDE серверу (поддерживается главный автоматический режим ADVISE), то не пропустите ни одной котировки.
Но DDE - это страшный анахронизм. Вместо него мы дадим гораздо более эффективные методы для сбора данных.
Экспорт по DDE из МетаТрейдер 4 надежен, так как встроенный DDE сервер имеет собственную очередь котировок, из которой и выдает данные DDE клиентам. То есть, если Вы подключились к DDE серверу (поддерживается главный автоматический режим ADVISE), то не пропустите ни одной котировки.
Но DDE - это страшный анахронизм. Вместо него мы дадим гораздо более эффективные методы для сбора данных.
Я в поисках встретил нечто об этом. Сразу не запомнил, а снова не смог найти. Нарисуй, если не в лом. Хоть концепцию понять.
Удобно пользоваться Target.Row, Target.Column. И есть еще мощная функция, работающая с пересекающимися диапазонами, но как она называется - не помню ;)
Удобно пользоваться Target.Row, Target.Column. И есть еще мощная функция, работающая с пересекающимися диапазонами, но как она называется - не помню ;)
Практически для любых комбинаций диапазонов достаточно в качестве параметра Range() через запятую указать их адреса. Типа
Range("C9:C19,E9:E19,13:13,A26:H27").Select
Удобно с именами работать. По короткому имени обращаешься сразу ко всему. Типа:
ActiveWorkbook.Names.Add Name:="NamedRange", RefersToR1C1:= _
"=Лист1!R30C3:R35C3,Лист1!R39C3:R44C3,Лист1!R37,Лист1!R32"
Application.Goto Reference:="NamedRange"
или
Range("NamedRange").Select
Последний вариант с какими-то условностями работает. Я очень давно сталкивался.
Правда все это так далеко от DDE :)