Визуальная студия на платформе MT4. - страница 4

 

С тем, как будет выглядить файл с технической информацией и инструкциями по созданию интерфейса для графического движка, Вы можете ознакомится  перейдя по этой ссылке:

 https://www.youtube.com/watch?v=ciVqJwgIIyg&feature=youtu.be#t=66.940294

 
Реter Konow:

Насколько мне известно, на данный момент не существует способа переноса созданного в MS Visual Studio интерфейса на график платформы МТ.

Почму Вы так решили? Существует, и даже несколько. Правда непонятно, зачем их, интерфейсы, переносить на графики - если так, то да, наверное не существует. Но вот поверх МТ сделать вполне реально
 
Реter Konow:

...

Это значит, пользователь будет полностью изолирован от кода и компилятора во всех вопросах касающихся создания графического интерфейса к своей программе, и будет иметь дело только с визуальными управляющими инструментами предложенными студией. При создании интерфейса будет использоваться технология "drag and drop", а также различные окна настроек, через которые можно будет определять свойства готовых шаблонов окон и элементов управления.

...

... Этот движок будет объядиняться с приложением разработчика и осуществлять всю графическую работу.

Но как он будет объединятся с приложением разработчика если не через код? Предположим, программе необходимо вывести таблицу, аналогичную Market Watch. Тогда ей нужно послать инструкцию, что в ячейке "A1" должна располагаться надпись "EURUSD", в А2 - цена "1.238273" и т.д. При том от терминала к терминалу набор инструментов будет разный и статически забить поля и названия таблицы просто невозможно.

В Microsoft Visual Studio все понятно - это удобная надстройка над чисто программной средой создания приложений. Т.е. Visual студия не является действительно визуальной средой разработки, а в случае с Вашей программой - не ясно, как это будет работать.

 
Vasiliy Sokolov:

Но как он будет объединятся с приложением разработчика если не через код? Предположим, программе необходимо вывести таблицу, аналогичную Market Watch. Тогда ей нужно послать инструкцию, что в ячейке "A1" должна располагаться надпись "EURUSD", в А2 - цена "1.238273" и т.д. При том от терминала к терминалу набор инструментов будет разный и статически забить поля и названия таблицы просто невозможно.

В Microsoft Visual Studio все понятно - это удобная надстройка над чисто программной средой создания приложений. Т.е. Visual студия не является действительно визуальной средой разработки, а в случае с Вашей программой - не ясно, как это будет работать.

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

Могу познакомить Вас только с общей концепцией.

При написании своего приложения, разработчик должен будет сохранять значения переменных возвращаемых его пользовательскими функциями (например значение текущей цены Bid на "EURUSD")  не внутри своей программы, а во вне.

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

Этот глобальной массив я называю "ядром параметров". Далее, адрес этой ячейки пользователь присвоит элементу управления в студии. В свою очередь, графический движок делает переодический цикл по  объектам и смотрит по адресам привязанных к ним параметров в ядре параметров. Если значение по этому адресу было изменено пользовательской функцией, движок обновит его в окне. Или наоборот - если значение было изменено элементом управления, то пользовательская функция примет его обработку.  

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

Проблема заключается только в создании общей памяти. Пытаясь решить ее средствами MQL, я не хочу прибегать к помощи DLL, но если выхода не останется, можно создать общую память там. Это я уже делал.

 
Реter Konow:

Проблема заключается только в создании общей памяти. Пытаясь решить ее средствами MQL, я не хочу прибегать к помощи DLL, но если выхода не останется, можно создать общую память там. Это я уже делал.

Как только вы прибегните к ДЛЛ, от вашей концепции ничего не останется. Просто ничего - Пшик. С ДЛЛ, да, впрочем, даже и без ДЛЛ, вашу задачу можно решить вообще ничего не разрабатывая. А это - основная концепция современного программирования - ничего не разрабатывать самому, если это уже создано.
 
Yuriy Asaulenko:
Почму Вы так решили? Существует, и даже несколько. Правда непонятно, зачем их, интерфейсы, переносить на графики - если так, то да, наверное не существует. Но вот поверх МТ сделать вполне реально
Конкретизируйте пожалуйста.
 
Yuriy Asaulenko:
Как только вы прибегните к ДЛЛ, от вашей концепции ничего не останется. Просто ничего - Пшик. С ДЛЛ, да, впрочем, даже и без ДЛЛ, вашу задачу можно решить вообще ничего не разрабатывая.
Объясните пожалуйста Ваше мнение.
 
Реter Konow:
Конкретизируйте пожалуйста.

Что конкретно конкретизировать? Создание окон на VS поверх МТ? Это одна птичка - поверх всех окон.

Обмен данными с VS? 4 способа как минимум.

 
Реter Konow:
Объясните пожалуйста Ваше мнение.
См. предыдущий пост, или поконкретней, пожалуйста. Окна любые, без каких либо усилий.
 
Реter Konow:

Проблема заключается только в создании общей памяти. Пытаясь решить ее средствами MQL, я не хочу прибегать к помощи DLL, но если выхода не останется, можно создать общую память там. Это я уже делал.

Можете конечно организовать взаимодействие и через DLL, только это уже никому не будет нужно, т.к. в Маркете запрещены любые DLL. Единственный способ организовать глобальный обмен данными между двумя программами в рамках стандартного MQL - это обмен через глобальные переменные. Вот кстати, очень классная библиотека для обмена данными через глобальные переменные: https://www.mql5.com/ru/code/12786

Вообще не очень ясно, для кого Вы создаете свою студию. Если для разработчиков - то у Вашего решения нет API. Тащить отдельное приложение, с которым программа будет обмениваться данными никто не захочет, тем более для программ размещаемых в Маркете.

Решение с абонентской лицензией тоже, имхо, крайне неудачный вариант. Вот программер разработал программу на основе вашей студии оплатил первый месяц работы, а затем на второй месяц его программа отказалась работать, потому что графическое ядро Вашей студии потребовало очередной доплаты. Бред. Никто из разработчиков не станет основывать свой проект на комплексе, который постоянно будет требовать доплаты. Но даже, если представить, что лицензия будет приобретаться единовременно, а сама студия будет входить в состав приложения, то снова не понятно как это будет работать в Маркете (лицензионная программа, внутри которой будет зашита другая лицензия).

Все-таки, ответье на главный вопрос: для какой целевой аудитории создается Ваш проект? Зачем обычному пользователю Ваша студия? Microsoft Word в MetaTrader 5 сделать? Это круто конечно, но ЗАЧЕМ? Люди платят за готовые решения. За программы и алгоритмы, которые выполняют конкретную работу. Им не нужно создание каки-то форм. Им нужны программы. А программисты, которые пишут эти самые программы, не смогут использовать Вашу студию, потому что работа организована очень странно.

Поймите, сейчас весь упор нужно делать на Маркет. Если Вы хотите создать инфраструктурный проект, то в первую очередь должны ответить сами себе на вопрос; "Почему программисты занимающиеся бизнесом в Маркете, или работающие во Фрилансе, начнут использовать мою студию. Что она даст им?" 

Причина обращения: