Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#" - страница 9

 
Спасибо за статью, очень подробно! Вопрос: Как можно, и можно ли вообще, реализовать голосовое распознавание при помощи данного  .net frameworkа.
Чтобы можно было не только нажимать на кнопки Windows формы, но и управлять МТ5 своим голосом.
Я так понимаю, что  .net framework очень насыщен различными классами и методами. По любому внутри него должно иметься что-то подобное.
Например можно сделать чтобы при распознании голоса, слова записывались в текстовый файл, а затем считывались самим терминалом, и при определенных в условии слов в тексте, терминал выполнял те или иные действия, а еще и отвечал обратно трейдеру приятным голосом.
Может ли кто что-то посоветовать?
 

Добрый день! Почему-то не компилируется, что не правильно делаю? файл  MtGuiController.dll положил в папку Libraries


 
Vasiliy Sokolov:

А я б, запускал космические корабли в космос. Идей куча, вот только руки тоже не доходят.

А вообще это конгениально: студию сложно скачать, зато самому запилить XAML интерпритатор - ерунда, вот только руки не доходят.

))

 
Rafil Nurmukhametov:

Добрый день! Почему-то не компилируется, что не правильно делаю? файл  MtGuiController.dll положил в папку Libraries


Rafil, разобрались в чем была проблема?

 
#import  "MtGuiController.dll"
string assembly = "C:\\MT5\\Form1.exe";

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   GuiController::ShowForm(assembly, "Form1");
   EventSetMillisecondTimer(200);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   printf("enter deinit");
   GuiController::HideForm(assembly, "Form1");
   printf("exit deinit");
   EventKillTimer();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   for(static int i = 0; i < GuiController::EventsTotal(); i++)
   {
      int id;
      string el_name;
      long lparam;
      double dparam;
      string sparam;
      GuiController::GetEvent(i, el_name, id, lparam, dparam, sparam);
//      if(id == ClickOnElement)
      if(id == 9)
         printf("Click on element " + el_name);
   }
  }
//+------------------------------------------------------------------+

@Vasiliy Sokolov , вы не могли бы помочь разобраться?

Берем GuiMtController.mq5, кладем библиотеку в Libraries, .exe в c:\\MT\\ , соответственно определяем assembly 

Компилируем и получаем сообщение о неопределенной переменной ClickOnElement. Допустим, заменим на любое целое -> компилируем нормально, но сама форма не запускается. Конечно, dll разрешены, сборка Metaeditor 2361

 

может кто еще споткнется

вот это место в статье

"Как видите, компилятор понимает внешние перечисления определенные в Net-библиотеках и умеет с ними работать." 

Не знаю пока по какой причине, но компилятор упорно отказывается понимать C# перечисления, поэтому тащим enum из C# в Mql5 и все работает. 

Только, Василий, вы в торговой панельке кнопки Buy и Sell расположили наоборот ))

А вообще, крутейшая штука получилась. Спасибо вам за труд! )

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
После объявления перечисления появляется новый целочисленный 4-байтовый тип данных. Объявление нового типа данных позволяет компилятору строго контролировать типы передаваемых параметров, так как  перечисление вводит новые именованные константы. В приведенном примере именованная константа January имеет значение 0, February имеет значение 1...
 
Nikolai Karetnikov:

может кто еще споткнется

вот это место в статье

"Как видите, компилятор понимает внешние перечисления определенные в Net-библиотеках и умеет с ними работать." 

Не знаю пока по какой причине, но компилятор упорно отказывается понимать C# перечисления, поэтому тащим enum из C# в Mql5 и все работает. 

Только, Василий, вы в торговой панельке кнопки Buy и Sell расположили наоборот ))

А вообще, крутейшая штука получилась. Спасибо вам за труд! )

Подождите радоваться. Проверьте, работают ли таблицы. Этот вопрос остался не ясным. Были огромные задержки при выводе данных на высокой частоте. 
 
Реter Konow:
Подождите радоваться. Проверьте, работают ли таблицы. Этот вопрос остался не ясным. Были огромные задержки при выводе данных на высокой частоте. 

День добрый! )

Петр, что значит "были" и что значит "высокой"? Где-то дискуссия на эту тему была, что-ли

 
Nikolai Karetnikov:

День добрый! )

Петр, что значит "были" и что значит "высокой"? Где-то дискуссия на эту тему была, что-ли

Добрый! ) 
Да, были дисскусии и немало. Оказалось, что при передаче данных из mql в шарповские таблицы на частоте таймера 25мс, они по неизвестной причине обновляются примерно раз в секудну. Удалось ли исправить автору или кому то еще, не знаю, но предпологаю, что Василий не стал продолжать серию статей потому что не решил проблему. 

П.С. (К слову, они считали, что после статьи Василия, весь мой язык разметки никому не будет нужен, но зато мои таблицы прекрасно работают, а подключение в разы удобнее и в Маркет можно выкладывать, потому что без ДЛЛ). :)
 
Реter Konow:
Добрый! ) 
Да, были дисскусии и немало. Оказалось, что при передаче данных из mql в шарповские таблицы на частоте таймера 25мс, они по неизвестной причине обновляются примерно раз в секудну. Удалось ли исправить автору или кому то еще, не знаю, но предпологаю, что Василий не стал продолжать серию статей потому что не решил проблему. 

П.С. (К слову, они считали, что после статьи Василия, весь мой язык разметки никому не будет нужен, но зато мои таблицы прекрасно работают, а подключение в разы удобнее и в Маркет можно выкладывать, потому что без ДЛЛ). :)

Понятно ))

Похоже вы правы, либо мы потеряли Василия, либо он потерял интерес к теме )

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