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

 
А может потратить один(!) вечер и научиться писать dll? Чем стать специалистом по установке корявых подпорок (DDE) нужную позицию?
ИМХО ДДЕ остался от старых времен и не является приоритетным направлением.
 
TedBeer:
А может потратить один(!) вечер и научиться писать dll? Чем стать специалистом по установке корявых подпорок (DDE) нужную позицию?
ИМХО ДДЕ остался от старых времен и не является приоритетным направлением.


Думаю одним вечером здесь не обойдешься, автор же описал, что он плохо ориентируется в этом направлении, возможно лучше поставить вопрос по другому:)

Какая среда разработки используется, какой язык программирования имеется ввиду, для реализации того же DDE? Мы же практически, не имеем этой информации от автора:)

 
xnsnet:

Какая среда разработки используется, какой язык программирования имеется ввиду, для реализации того же DDE?

ВнимательнЕе надо ;)
VB
 
komposter писал (а): ВнимательнЕе надо ;)
VB


Попытался быть внимательнее, но так и не нашел не одного упоминания об этом:) Сразу встает следующий вопрос VB какой версии?

Прикинь как может варьироваться объем информации, который например я могу выдать:) Если речь идет о VB.NET то можно предоставить библиотеку для работы с DDE при должной снаровке даже примеры переделать с C#, мало того можно и многое другое разжевать.

Понял, речь идет о другой теме, но и в той теме, Ренат, привел возможность найти в интернете DDE Client и причем специально для MetaTrader с примерами, правда примеры написаны не правельно с точки зрения многопоточности, но суть не изменна, есть такой.

 

Chen так настаивает на непосредственную работу с dde без посредников в виде форм и текстовых полей. Пожалуйста, Chen! Библиотека user32.

DdeConnectList
DdeQueryNextServer
DdeDisconnectList
DdeConnect
DdeDisconnect
DdeReconnect
DdeQueryConvInfo
DdeSetUserHandle
DdeAbandonTransaction
DdePostAdvise
DdeEnableCallback
DdeImpersonateClient
DdeNameService
DdeClientTransaction
DdeCreateDataHandle
DdeAddData
DdeGetData
DdeAccessData
DdeUnaccessData
DdeFreeDataHandle
DdeGetLastError
DdeCreateStringHandle
DdeQueryString
DdeFreeStringHandle
DdeKeepStringHandle
DdeCmpStringHandles

Это только список функций, возможно не весь, еще куча структур и констант.

И это только для того чтобы сохранять тики в файл)

 
TedBeer:
А может потратить один(!) вечер и научиться писать dll? Чем стать специалистом по установке корявых подпорок (DDE) нужную позицию?
ИМХО ДДЕ остался от старых времен и не является приоритетным направлением.
В те времена, когда создавался DDE, dll уже были. Просто цели и задачи у них разные.
В чем, по Вашему мнению,может заключаться "корявость подпорок (DDE)" в случае с чтением котировок с терминала MT4?

Написать dll труда не составляет, но почему бы не воспользоваться, на мой взгляд, более простым решением(DDE).
Весь вопрос в надежности вообще? Надежно ли это работает в MT4?
Возможно есть еще какие то моменты и подводные камни с использованием DDE в MT4?

Интересно бы знать мнение людей об этом, которые долгое время пользуют DDE в MT4.

P.S. Делать все равно буду. Сам не попробуешь - не узнаешь наверняка. Сделаю расскажу.
 
VBAG:В те времена, когда создавался DDE, dll уже были. Просто цели и задачи у них разные.
В чем, по Вашему мнению,может заключаться "корявость подпорок (DDE)" в случае с чтением котировок с терминала MT4?
Написать dll труда не составляет, но почему бы не воспользоваться, на мой взгляд, более простым решением(DDE).
Весь вопрос в надежности? Надежно ли это работает в MT4?
Возможно есть еще какие то моменты и подводные камни с использованием DDE в MT4?


Сам по себе режим ADVISE это CreateRemoteThread каждый раз когда поступают котировки, если посмотреть на внутренности DDE то это многопоточная работа, где осуществлятся сложная комуникация процессов и обмен данными, спрашивается ради чего, ради кусочка данных? При использовании большого списка поглащаемых данных, струйка количества созданных потоков для передачи данных по отдельности способны потреблять много больше ресурсов, чем то же самое внутри процесса и одного и того же потока, практически то же самое можно проделать и с DLL но не переходя границ процесса, выводя данные через советник, однако это опять же многопоточность. А можно поступить еще проще, перехватить оконную функцию и при поступлении события, использовать данные прямо из адресного пространства памяти процесса, не нарушая границ ни потока, ни процесса, отдавать данные можно опять же как синхронно, так и асинхронно, по любому виду связи, за исключением того, что можно варьировать объем данных от кусочков до целой картины в зависимости от необходимости, и все это вполне реализуемо с учетом нынешних технологий и совсем не обязательно называется "ковырянием", только до тех пор, пока ради достижения этой цели применяется "ковыряние".
 

2All

У меня приемлемый (для юзера) опыт программирования в VBA. VB проекты (в сети достаточно много кода, спасибо людям) я обычно адаптирую под VBA. Это позволяет мне достаточно быстро решать поставленные задачи "на коленке". Все более менее серьезное, не бытовуху, я обычно делаю от образца. Как DLL прикрутить, клас, объект декларировать, создать события для них и выловить, да еще с необходимой обвязкой (обработчики ошибок rtc.) - мне от нуля не создать.

Integer, спасибо еще раз. Конечно я уже посмотрел эту и специализированные библиотеки, но... (см. выше). В VBA набор более чем скромен. Я расчитывал на код, от которого я смогу оттолкнуться. Ну поставлю, на худой конец, VS (у меня есть 6 Enterprise) , если будет код. А решение, в общем-то, на коленке такое: поскольку Access, а в нем идет первичное причесывание тиков, позволяет обрабатывать события для полей, я обхожусь средствами VBA, до появления образца кода на более низком уровне. Паллиатив, но работать будет.

 
Chen, 1 час времени...
Sub TestDDE()
    Dim channelNumber As Long, returnList
    
    channelNumber = Application.DDEInitiate("MT4", "BID")
    returnList = Application.DDERequest(channelNumber, "EURUSD")
    Range("A1").Formula = returnList(1)
    
    Application.DDETerminate channelNumber
End Sub

Понятно, это только набросок. Но главное - работает.
 
xnsnet:
Ренат, привел возможность найти в интернете DDE Client и причем специально для MetaTrader с примерами, правда примеры написаны не правельно с точки зрения многопоточности, но суть не изменна, есть такой.
Искал. В этой связке и искал. Увы. Поиск поиску рознь. Может просто не повезло.