и снова dll и маркет - страница 10

 
Alexsandr San:

если переписать?

или так

да, это работа с бинарником, но не в контексте публичного web сервиса ) 

Не вижу пользы от этого кода, к сожалению

 
Alexsandr San:

Спасибо! я так для понимания . что человек пытается слепить

шош такое! :) 401 - это номер ошибки возвращенный web сервером ibm, его в доке по MQL5 искать не стоит 

 
Nikolai Karetnikov:

сделано

Нужно зайти по ссылке Сервисдеск в вашем профиле и создать там новую заявку. Тему выберите, например "Финансовые операции ограничены". И напишите там, что по незнанию нарушили правила ресурса создав второй аккаунт. И просите его удалить. Ссылку на удаляемый аккаунт приложите.

 
Nikolai Karetnikov:

Aryom, а объединение учетных записей предусмотрено?

Нет.

 

и вот еще, в доке по WebRequest указано, что существует 2 варианта этой функции. Первый работает с Content-Type: application/x-www-form-urlencoded, что явно не подходит, т.к. IBM просит "header "Content-Type: application/json" 

Но это пока все, что удалось понять

 

у меня что то получилось 

только вот файл не звучит 

Снимок4

//+------------------------------------------------------------------+
//|                                                   WebRequest.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string cookie=NULL,headers;
   char   post[],result[];
   headers = "curl -X POST -u" "apikey:GR1bb3zVMs9fcNKL6pA9-5zj9ptWliCu6eh9oupUnpZB";
   headers = "Content-Type: application/json";
   headers = "Accept: audio/wav";
   headers = "data" "{\"text\":\"hello world\"}";
//output hello_world.wav ^

   string url="https://api.eu-gb.text-to-speech.watson.cloud.ibm.com";
//--- для работы с сервером необходимо добавить URL "https://finance.yahoo.com"
//--- в список разрешенных URL (Главное меню->Сервис->Настройки, вкладка "Советники"):
//--- обнуляем код последней ошибки
   ResetLastError();
//--- загрузка html-страницы с Yahoo Finance
   int res=WebRequest("GET",url,cookie,NULL,500,post,0,result,headers);
   if(res==-1)
     {
      Print("Ошибка в WebRequest. Код ошибки  =",GetLastError());
      //--- возможно, URL отсутствует в списке, выводим сообщение о необходимости его добавления
      MessageBox("Необходимо добавить адрес '"+url+"' в список разрешенных URL во вкладке 'Советники'","Ошибка",MB_ICONINFORMATION);
     }
   else
     {
      if(res==200)
        {
         //--- успешная загрузка
         PrintFormat("Файл успешно загружен, размер %d байт.",ArraySize(result));
         //PrintFormat("Заголовки сервера: %s",headers);
         //--- сохраняем данные в файл
         int filehandle=FileOpen("output hello_world.wav",FILE_WRITE|FILE_BIN);
         if(filehandle!=INVALID_HANDLE)
           {
            //--- сохраняем содержимое массива result[] в файл
            FileWriteArray(filehandle,result,0,ArraySize(result));
            //--- закрываем файл
            FileClose(filehandle);
           }
         else
            Print("Ошибка в FileOpen. Код ошибки =",GetLastError());
        }
      else
         PrintFormat("Ошибка загрузки '%s', код %d",url,res);
     }
  }
//+------------------------------------------------------------------+
 

это вот что загрузилось 

Снимок5

Снимок6

я так понял - надо что то с адресом, изменить как то 

Снимок7

 
Nikolai Karetnikov:

)))

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

Задача очень сложная, почти невозможная потому что неопределены границы цели. Чего конкретно должен озвучивать советник? Если только цену, то можно интегрировать набор озвученных цифр, которые затем комбинировать. Если нужна опция записывать на микрофон пользовательскую напоминалку, которую советник будет включать в нужный момент, то это не то чтобы невозможно, НО, ОЧЕНЬ сложно. Смысл затрачивать столько энергии на сомнительную фишку почти не вижу.

Сформулируйте более четко, что именно хотите сделать.
 

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

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