Режим DDE "горячий", "теплый" или по явному запросу? - страница 4

 
Есть технология (DDE), есть реализация (уже 7 лет в наших программах, писал лично я) и есть масса людей, кто ее использовал для экспорта данных.

Но появляется человек, который ничего не знает о DDE, но требует чего-то, но что именно - сам не знает. Прямые и точные объяснения во встроенной помощи на русском языке не хочет понимать (тип связей ADVISE все объясняет при взгляде на описание библитеки DDEML), но пытается вокруг поверхностных знаний накруть побольше критики. Видимо, его надо на броневичек пустить - зажигать пламенные речи...

Сложность написания DDE сервера или клиента по сравнению с обычной DLL где-то 10:1. Не нужно ломать копий по поводу DDE - ее наверняка на будет в нашей следующей информационно-торговой платформе.
 
xnsnet:

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

Мне необходимо принять решение о том какой способ передачи котировок в свое приложение выбрать. Эту Вашу мысль встречаю уже второй раз, но понять её суть не позволяет ограниченность знаний в этом вопросе.
 
VBAG:А можно с этого момента по-подробнее, очень интересно, а понимаю с трудом.

Мне необходимо принять решение о том какой способ передачи котировок в свое приложение выбрать. Эту Вашу мысль встречаю уже второй раз, но понять её суть не позволяет ограниченность знаний в этом вопросе.

Думается, модераторы и все остальные, ждут повода чтоб меня забанить, повод не дам и давать не планирую, хотя хожу по лезвию бритвы:)
 
Renat писал (а):
Есть технология (DDE), есть реализация (уже 7 лет в наших программах, писал лично я) и есть масса людей, кто ее использовал для экспорта данных.

Сложность написания DDE сервера или клиента по сравнению с обычной DLL где-то 10:1. Не нужно ломать копий по поводу DDE - ее наверняка на будет в нашей следующей информационно-торговой платформе.
Можно Ваше заявление трактовать как такую рекомендацию?
Экспорт данных по DDE из MT4 сам по себе надежен, но использовать его для собственных приложений не целесообразно.
 
xnsnet:

Думается, модераторы и все остальные, ждут повода чтоб меня забанить, повод не дам и давать не планирую, хотя хожу по лезвию бритвы:)
Можно с Вами по почте связаться? Ссылочка у Вас в блоге битая.
 
komposter:
Chen, 1 час времени...
Sub TestDDE()
    Dim channelNumber As Long
    Dim DDE_Topic As Variant
    DDE_Topic = "BID"
    
    channelNumber = Application.DDEInitiate("MT4", DDE_Topic)
    
    returnList = Application.DDERequest(channelNumber, "EURUSD")
    For i = LBound(returnList) To UBound(returnList)
        Worksheets("Ëèñò2").Cells(i, 1).Formula = returnList(i)
    Next i
    
    Application.DDETerminate channelNumber
End Sub

Понятно, это только набросок. Но главное - работает.


Я именно с этого кода и начал, поскольку он был прямо под рукой. Дает только один элемент, но это нормально, т.к. пербор - это общий случай. Что меня в нем смутило:

1. Для реализации этого, связь с MT уже должна быть наложена. Т. е. если на листе не будет присутствовать ячейка, содержащая такую связь - банан. Если будет только одна ячейка с '=MT4|BID!EURUSD', то только BID и можно будет получить. ASK даст N/A.

2. Это опять надо делать запрос (т.е. запускать этот код). Значение в ячейке со связью появляется-то само :)

3. Зачем мне блудить с этим кодом, если я могу непосредственно из ячейки считать. Событий для ячейки нет (или их надо как-то описывать; буду искать), а в Access я могу отслеживать события для поля, содержащего эту связь.

 
xnsnet:
Думается, модераторы и все остальные, ждут повода чтоб меня забанить, повод не дам и давать не планирую, хотя хожу по лезвию бритвы:)
Прям пуп земли! =)
Мы ночей не досыпаем, выискиваем в твоих постах к чему бы прикопаться. А ты аккуратный!

Брось, ты не то что "по лезвию", ты еще "с рукоятки" не сошел ;)
Говори смело, но не грубо. И запрещенные темы, естественно, не поднимай (ДЦ, брокеры, и т.д.).

Если ляпнешь лишнего (по их мнению), сделают предупреждение.
Банят хамов, нахалов, и голословных.

А "пытливые умы" не банят.
 
Могу сказать одно, накопленный опыт и испытания как обычных методов включая DDE, так и метода прямого получения данных сильно отличается, то же самое будет возможно при реализации в MQL5 классов, скорее всего, если конечно будет возможно передавать той же DLL указатель на структуру данных, это как минимум решит основную проблемму. Вся проблемма, заключается в том, что вы имеете этот указатель, но вы незнаете как этим пользоваться. Фактически зная структуры, а узнать их не так сложно, вы имеете все эти данные, а адрес все еще лежит в какой-то из тем, но вы же не используете этих данных, если до сих пор возникают вопросы.
 
Chen:

Я именно с этого кода и начал, поскольку он был прямо под рукой.

А выложить сложно было? Не жалеешь чужое время, абсолютно...

Chen:

Что меня в нем смутило:
1. Для реализации этого, связь с MT уже должна быть наложена.

Да, этот момент я упустил...
Проверял на дде_сэмпл, поэтому работало.


Chen:
3. Зачем мне блудить с этим кодом, если я могу непосредственно из ячейки считать. Событий для ячейки нет (или их надо как-то описывать; буду искать), а в Access я могу отслеживать события для поля, содержащего эту связь.
Событие для ячейки есть - надо обрабатывать Target в событии Worksheet_Change.
Если надо, могу поделиться набросками.
 
Я еще почему к DDE прицепился. Ведь кроме ДЦ на платформе МТ, существуют многие другие (предлагающие иные торговые и юридические условия), на доморощенных платформах. И DDE-обмен используется очень широко.  Мне нужен МТ и от него я не откажусь, по мне, так он самый оптимум среди всего, что я руками трогал. У меня два реала на МТ. Летом откроюсь на фьючерсах у буржуев. Сейчас на демке. Там тоже DDE. Но и для графического анализа, в том числе оперативного, я MT использую. Так что в DDE я погружаться вынужден. Погружусь, а МТ от него откажется...
Причина обращения: