Алиса (интеграция с Яндекс станциями) - страница 3

 

не обдумывая сходу я бы сделал так:

1. некая внешняя программа написанная например на C# ждет голосовую команду, преобразует ее в текстовый файл в виде обычного текста,

2. советник читает эти текстовые файлы по функции OnTimer() с каким то малым периодом, выполняет необходимые действия, затем удаляет файл ...

ну как то так 

 
Boris Egorov #:

не обдумывая сходу я бы сделал так:

1. некая внешняя программа написанная например на C# ждет голосовую команду, преобразует ее в текстовый файл в виде обычного текста,

2. советник читает эти текстовые файлы по функции OnTimer() с каким то малым периодом, выполняет необходимые действия, затем удаляет файл ...

ну как то так 

оказывается уже подымалась эта тема - но автора. я мельком проскочил по теме, засмеяли .

https://www.mql5.com/ru/forum/223960 

Управление ордерами голосовыми командами
Управление ордерами голосовыми командами
  • 2018.01.05
  • www.mql5.com
Здравствуйте,Уважаемые программисты! Наверняка,не у одного меня возникла такая идея,-торговать голосом. Возможно,есть у кого-то какие наработки...
 
Boris Egorov #:

а можно ссылку на последнюю версию ATcl.mqh для МТ5?

сайт немного (и давно) в некотором раздрае..всё никак руки недоходят восстановить :-(

пока в личку кину, может на выходных руки дойдут до "восстановить странички"

 
Maxim Kuznetsov #:

сайт немного (и давно) в некотором раздрае..всё никак руки недоходят восстановить :-(

пока в личку кину, может на выходных руки дойдут до "восстановить странички"

Maxim Kuznetsov #:

сайт немного (и давно) в некотором раздрае..всё никак руки недоходят восстановить :-(

пока в личку кину, может на выходных руки дойдут до "восстановить странички"

Опробовал решение Максима Кузнецова, решение явно лучше и универсальнее wav, решение решает кучу сложностей с генерацией wav файлов - они просто не нужны, в отличии от использования wav последовательно воспроизводит текст не перебивая предыдущий сказанный текст. Решение хорошее и рабочее, для робота самое то. Максиму большое спасибо!

 
Да Максим вообще молодец;)
 

Решение предложенное выше использует библиотеку ATcl и собственно tcl как скриптовый язык.

Библиотеку выложил на sourceforge (потому что там dll) https://sourceforge.net/projects/mt-atcl/ . Специальное примечание для особо рьяных модераторов: библиотека свободно доступна и бесплатна. Tcl тоже. Не надо сносить пост как прежние темы

Инструкция по установке :

Требуется дистрибутив tcl. Вы можете выбрать любой (их много разных), но я рекомендую BAWT : http://www.bawt.tcl3d.org/

Для того чтобы MetaTrader и Windows всегда находили требуемое, Tcl должен быть установлен в предопределённых путях:

  • c:/tcl64 для 64-х битных систем (MetaTrader 5)
  • или c:/tcl32 для 32-х битных систем (MetaTrader 4)

в обоих случаях путь к каталогу bin (с:/tcl64/bin) должен быть включен в переменную окружения %PATH%. Не забудьте при установке указать «включить путь» или добавьте его потом самостоятельно

Архив с библиотекой ATcl надо распаковать в «каталог данных терминала», один-в-один.

DLL-ку libwinpthread-1.dll надо скопировать в любой каталог перечисленный в %PATH%. Я копирую в c:/tcl64/bin

Как бонус - будут доступны интерфейсы почти к любым СУБД (PostgreSQL, MySQL, Oracle), office-automation, GUI на tcl/tk и gtk, почта, асинхронные сетевые вызовы, нити, треды и всякое-всякое

mt-atcl
  • sourceforge.net
Download mt-atcl for free. ATcl library - Tcl bindings for MT4. Allows to use tcl scripts from MetaQuotes MT4 trading terminal. All Tcl/Tk features are supported.
 
Maxim Kuznetsov #:

Решение предложенное выше использует библиотеку ATcl и собственно tcl как скриптовый язык.

Библиотеку выложил на sourceforge (потому что там dll) https://sourceforge.net/projects/mt-atcl/ . Специальное примечание для особо рьяных модераторов: библиотека свободно доступна и бесплатна. Tcl тоже. Не надо сносить пост как прежние темы

Инструкция по установке :

Требуется дистрибутив tcl. Вы можете выбрать любой (их много разных), но я рекомендую BAWT : http://www.bawt.tcl3d.org/

Для того чтобы MetaTrader и Windows всегда находили требуемое, Tcl должен быть установлен в предопределённых путях:

  • c:/tcl64 для 64-х битных систем (MetaTrader 5)
  • или c:/tcl32 для 32-х битных систем (MetaTrader 4)

в обоих случаях путь к каталогу bin (с:/tcl64/bin) должен быть включен в переменную окружения %PATH%. Не забудьте при установке указать «включить путь» или добавьте его потом самостоятельно

Архив с библиотекой ATcl надо распаковать в «каталог данных терминала», один-в-один.

DLL-ку libwinpthread-1.dll надо скопировать в любой каталог перечисленный в %PATH%. Я копирую в c:/tcl64/bin

Как бонус - будут доступны интерфейсы почти к любым СУБД (PostgreSQL, MySQL, Oracle), office-automation, GUI на tcl/tk и gtk, почта, асинхронные сетевые вызовы, нити, треды и всякое-всякое

Раз пошла такая пьянка :-)  

не очень оптимально (можно сделать чтобы быстрее), зато наглядно :

загружен весь из себя векторный SVG в Canvas

#include <ATcl/ATcl.mqh>

ATcl *tcl=NULL;

bool LoadImage(string bmp_obj,string path)
{
   // загрузка данных из файла в массив
   tcl.Set("filename",path);
   tcl.Eval("image create photo tmp -file [ file join $::datadir mql5 files $filename ]");
   long width=tcl.LongEval("image width tmp");
   long height=tcl.LongEval("image height tmp");
   uint data[]; ArrayResize(data,width*height);
   for(int y=0;y<height;y++) {
      tcl.Set("y",y);
      for(int x=0;x<width;x++) {
         tcl.Set("x",x);
         Tcl_Obj pixel=0;
         if (tcl.Eval("tmp get $x $y")!=TCL_OK) {
            return false;
         }
         pixel=tcl.Result();
         long R,G,B,A;
         tcl.Ref(pixel);
         R=tcl.Long(pixel,0);
         G=tcl.Long(pixel,1);
         B=tcl.Long(pixel,2);
         A=0xFF;
         if (tcl.Eval("tmp transparency get $x $y")==TCL_OK) {
            if (tcl.LongResult()) {
               A=0;
            }
         }
         tcl.Unref(pixel);
         data[x+y*width]=(A<<24)+(R<<16)+(G<<8)+B;
      }
   }
   tcl.Eval("image delete tmp");
   
   // создание ресурса COLOR_FORMAT
   ResourceCreate(bmp_obj,data,(int)width,(int)height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE);
   // создание объекта
   ObjectDelete(0,bmp_obj);
   if (ObjectCreate(0,bmp_obj,OBJ_BITMAP_LABEL,0,0,0)) {
      ObjectSetInteger(0,bmp_obj,OBJPROP_XDISTANCE,10);
      ObjectSetInteger(0,bmp_obj,OBJPROP_YDISTANCE,10);
      ObjectSetInteger(0,bmp_obj,OBJPROP_XSIZE,width);
      ObjectSetInteger(0,bmp_obj,OBJPROP_YSIZE,height);
      ObjectSetInteger(0,bmp_obj,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
      ObjectSetString(0,bmp_obj,OBJPROP_BMPFILE,"::"+bmp_obj);
   }
   return true;
}

void OnStart()
{
   PrintFormat("sizeof(uint)=%d",sizeof(uint));
   tcl=new ATcl();
   tcl.Eval("package require Tk");
//   tcl.Eval("package require Img"); // для поддержки ico и некоторых прочих
//   tcl.Eval("package require Tiff");   // для поддердки TIFF
   tcl.Eval("package require tksvg");
   
   tcl.Eval("wm withdraw .");
   tcl.Set("datadir",TerminalInfoString(TERMINAL_DATA_PATH));
   
   LoadImage("tiger","tiger.svg");
   
   delete tcl;
}