Обсуждение статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" - страница 2

 
Ещё не проверял в MQL5 один момент с передачей строк в длл

Я в связке MQL4-DLL у себя заметил такую проблемы с передачей строк. В MQL4 коде я вызываю функцию и в DLL и передаю строку:

#import "MyDll.dll"
void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

а в длл принимаю эту строку с именем инструмента

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


И вот в какой то момент на каком то тике (может и полдня работать нормлаьно) длл вдруг получает левую строку с непонятными символами вместо имени инструмента.
Может быть вы проверите подобный код в mql5 ? Что то тут видать с указателем на память неверно было в MQL4 или конфликт доступа к строке потоков иногда случается внутри терминала.

double массивы и int переменные передаёт правильно и без подобных проблем.

Я напишу потом тест как появится время и для связки MQL5-DLL, но коли вы тоже тестируете щас эти моменты, то напишите тоже такой тест, чтобы проверить стабильность передачи строк в длл повторяя процесс на каждом тике длительный период времени.

 
GarF1eld:

Если экспорт котировок возможен только через dll, то получается нужно на каждый экспортируемый инструмент вешать скрипт? А если их много? 50 например?

Понимаю, что можно в одном скрипте передавать котировки для многих инструментов, но это же не будет полноценной заменой DDE, где тики не теряются. 

Renat:

Дело в том, что перед нами нет задачи "предоставить интерфейс выдачи котировок".

У нас задача в создании полноценной и самодостаточной среды для разработки аналитических систем. Такой среды, чтобы даже сторонние программы применять не было бы особой нужды.

Ответ, конечно, интересный. Заглавие темы "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?", стОит посмотреть ещё вот эту статью Передача данных между индикаторами - простое решение наболевшей проблемы - и сравнить с поставленной выше задачей (выделена курсивом).
 
Renat:

Дело в том, что перед нами нет задачи "предоставить интерфейс выдачи котировок".

У нас задача в создании полноценной и самодостаточной среды для разработки аналитических систем. Такой среды, чтобы даже сторонние программы применять не было бы особой нужды.


GUI очень слабый - написание логики заняло 2 дня, чтобы хоть как-то отобразить рассчитанную информацию потратил целый день

В итоге махнул рукой на все - сделал транспорт данных (https://www.mql5.com/ru/forum/382) и радуюсь жизни

Не слишком ли высокие цели ставят себе разработчики?

И зачем изобретать велосипед, если уже давным-давно все сделано (C, Delphi, ...)? 

 
yu-sha:

GUI очень слабый - написание логики заняло 2 дня, чтобы хоть как-то отобразить рассчитанную информацию потратил целый день

В итоге махнул рукой на все - сделал транспорт данных (https://www.mql5.com/ru/forum/382) и радуюсь жизни

Не слишком ли высокие цели ставят себе разработчики?

И зачем изобретать велосипед, если уже давным-давно все сделано (C, Delphi, ...)? 

ИМХО проблема МТ5 началась с самого его зарождения: отсутствие чёткого видения того, что же этот продукт призван решить. Либо это модернизированный и основывающийся на МТ4 но поднятый до новой версии по скорости и расширенным функциям продукт, либо это новая современная торговая платформа, имеющая хорошо продуманную структуру и расширяемость (т.е. содержащая бизнес классы, или trading framework, для выполнения чётко установленных специфических классов задач, и опирающаяся на какой-нибудь современный язык/среду программирования с его общим функционалом и широко доступными средствами программной поддержки). Решить эту дилемму попыткой объединения противоположностей, заварив в некотором роде некий компот, так сказать методом "экспромпта самых талантливых солистов", кажется, не совсем удалось.

Если это кому-то покажется чистым флудом без тени конструктива, то во второй раз ведём в баню, или расстреливаем окончательно :)

 

pisara

Зришь в корень

MQL ориентирован в большей степени на трейдеров с небольшими навыками в программировании. А-ля Basic для чайников.

Не имею ничего против такой позиции - спасибо и за это.

Но позиционировать MQL5 в качестве "полноценной и самодостаточной среды для разработки аналитических систем. Такой среды, чтобы даже сторонние программы применять не было бы особой нужды." - это серьезная заявка. Чтобы "обвязать" сердцевину сколь-нибудь удобоваримым суповым набором потребуются годы работы не отдельных энтузиастов, а целой команды профессиональных программеров под руководством хорошего архитектора. Про бюджет и менеджмент ничего не могу сказать - это уже другие уровни проекта.

Хочу поддержать сотрудников компании в их нелегком труде. Хочу сказать спасибо за их труд. Но надо смотреть правде в глаза - MQL5 это лишь этап в достижении поставленной цели.

P.S. Москва не сразу строилась 

 
Да-а, страшно даже подумать или вспомнить, сколько лишнего каждый из нас делал, делает и ещё будет делать!
 
Renat:

Проверить скорость вызова очень просто. Например, грубо подсчитать можно так:

У меня на Quad Q9400 @2.66Ghz получилось 57 000 вызовов в секунду. Тот же самый код дает в MetaTrader 4 около 20 000 000 вызовов в секунду, так как там нет контроля и обвязки.

Мы обязательно попробуем уменьшить потери на вызовах DLL в MetaTrader 5.

Хорошо бы сделать специальную директиву компилятору, которая по умолчанию включена, и которая вставляет эти обёртки к длл-шным вызовам. В отключенном состоянии хорошо бы эти обёртки не вставлять. Типа реживом debug и release. Всё таки, иногда 57К маловато будет. Это же время сжирается у времени работы dll.
 
HideYourRichess:
Хорошо бы сделать специальную директиву компилятору, которая по умолчанию включена, и которая вставляет эти обёртки к длл-шным вызовам. В отключенном состоянии хорошо бы эти обёртки не вставлять. Типа реживом debug и release. Всё таки, иногда 57К маловато будет. Это же время сжирается у времени работы dll.
В билде 240 обертки упростили, теперь скорость вызова 19 911 000 вызовов в секунду.
 
Про обсуждение MQL / MQL2 / MQL4 / MQL5: по всей видимости, вы плохо знаете нашу историю. Сходите хоть на корпоративный сайт, почитайте.


Мы методично с 2001 года создали 4 поколения торговых языков с огромным сообществом трейдеров. Конкуренты умирали, их языки управления не развивались, а мы работали, работаем и будем работать.

 

Renat: 

а мы работали, работаем и будем работать.

Как завещал Великий Дедушка Ленин.

;)

Не помню, кажется спрашивал уже...
А возможно будет создавать простые длл средствами мкл5,
проще говоря написать в едиторе и скомпилировать...?
Причина обращения: