English Español Português
preview
Как разработать агент обучения с подкреплением на MQL5 с интеграцией RestAPI (Часть 1): Как использовать RestAPI в MQL5

Как разработать агент обучения с подкреплением на MQL5 с интеграцией RestAPI (Часть 1): Как использовать RestAPI в MQL5

MetaTrader 5Интеграция | 19 апреля 2024, 13:18
354 0
Jonathan Pereira
Jonathan Pereira

Введение

В программировании и разработке систем важную роль играет коммуникация между различными приложениями. Интерфейсы API (application programming interface) играют важную роль в этом контексте, поскольку они позволяют системам эффективно взаимодействовать и обмениваться данными. Одним из самых известных является RestAPI, который изменил способ взаимодействия систем в Интернете.

RestAPI (representational state transfer application programming interface) - это набор правил, определяющих, как системы должны взаимодействовать через Интернет. Она основана на простых и масштабируемых архитектурных принципах и для управления данными использует такие понятия, как ресурсы и идентификаторы. По сути, это способ коммуникации, позволяющий приложениям запрашивать и отправлять информацию организованным образом.

Архитектура REST появилась в 2000-х годах благодаря статье Роя Филдинга, в которой излагались принципы построения надежных и масштабируемых веб-систем. С тех пор RestAPI приобрели большую популярность. Это объясняется его простотой по сравнению с более ранними протоколами, такими как SOAP (Simple Object Access Protocol).

SOAP, основанный на XML, раньше занимал доминирующее положение, но был известен своей сложностью и для простых транзакций требовал большого количества данных. RestAPI существенно изменили ситуацию, став более легкой и универсальной альтернативой для межсистемного взаимодействия.

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

Если сравнить их с протоколом SOAP, то становится понятно, почему RestAPI завоевали себе прочные позиции. Если SOAP был негибким и громоздким, то RestAPI легки, просты в использовании и идеально подходят для современных систем, нуждающихся в эффективном взаимодействии. Кроме того, они могут быть реализованы практически на любом языке программирования, что делает их идеальным выбором для разработчиков по всему миру.


Что такое API?

whats is an api


В мире, где всё больше цифровых технологий, термин "API" широко распространен, но что именно он означает? Аббревиатура "API" означает "интерфейс программирования приложения" (на английском, "application programming interface"). Это фундаментальная концепция в разработке программного обеспечения и интеграции систем.

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

Давайте изучим основные аспекты API:

1. Связь между приложениями:

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

2. Абстракция сложности:

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

3. Виды API:

Как уже говорилось выше, существует несколько видов API. Веб-интерфейсы API широко используются в Интернете и основаны на веб-протоколах, таких как HTTP. Локальные API обеспечивают доступ к ресурсам операционной системы или связующему программному обеспечению (middleware). Программные API используются для доступа к удаленным компонентам программы, и для их реализации существует несколько технологий и стандартов, таких как gRPC и REST. RESTful API соответствуют принципам REST, в то время как SOAP API основаны на XML и они более сложные. API GraphQL, например, популярен своей гибкостью, позволяющей клиентам запрашивать конкретные данные.

4. Примеры из реального мира:

Давайте теперь рассмотрим несколько реальных примеров, чтобы понять, как используются API. Социальные сети, такие как Facebook или Twitter, предлагают API, которые позволяют разработчикам интегрировать функции обмена контентом или аутентификации в собственных приложениях. Платежные сервисы, такие как PayPal, предлагают API, которые позволяют осуществлять финансовые операции. Даже некоторые картографические сервисы, такие как Google Maps, имеют API, которые позволяют включать интерактивные карты в приложения.

5. Безопасность и аутентификация:

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


Что такое RestAPI?

api diagram


Перед существованием RestAPI, программные системы обычно общались с помощью более жестких и сложных протоколов. Связь между системами была не такой плавной, что делало обмен информацией сложной задачей.
Затем наступила эра REST, которая принесла с собой переломный подход к взаимодействию между системами. Аббревиатура REST (representational state transfer) была впервые представлена Роем Филдингом в 2000 году. Данный инновационный подход к архитектуре программного обеспечения стал основой RestAPI. REST определяет набор принципов, которые определяют, как должны взаимодействовать системы, включая использование URL (uniform resource locators) для идентификации ресурсов и HTTP-методов для взаимодействия с ними.

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

Именно здесь на помощь приходит RestAPI. Когда мы открываем приложение прогноза погоды, оно отправляет запрос на удаленный сервер через RestAPI. Данный запрос, обычно это GET-запрос, запрашивает информацию о погодных условиях в нашем местоположении. Сервер обрабатывает запрос и выдает ответ, обычно в формате JSON или XML, с запрошенными погодными данными. Затем приложение использует эти данные для отображения в соответствующем интерфейсе. То, что делает RestAPI настолько мощными, это стандартизация взаимодействия. Системы могут надежно взаимодействовать: иными словами, они знают, что, если они следуют принципам REST, информация будет передаваться надежным образом.

Примеры использования:

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



Основные различия между API и REST API

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

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

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


Виды API

API Web

  1. Веб-архитектура, в целом соответствующая стилю REST (representational state transfer).
  2. Связь через протокол HTTP.
  3. С его помощью можно предоставлять ресурсы и услуги через Интернет.


API Local

  1. Особая архитектура для доступа к локальным сервисами или системным ресурсам.
  2. Может предоставлять доступ к ресурсам операционной системы или связующему программному обеспечению (middleware).
  3. Она может быть доступна на разных операционных системах и не ограничивается конкретной платформой.
Программные API
  1. Основана на технологии удаленного вызова процедур (RPC) и включает такие разновидности, как gRPC, JSON-RPC и т.д.
  2. Она позволяет обращаться к удаленным программным компонентам так, как если бы они были локальными, что облегчает взаимодействие между распределенными системами.
  3. Существуют различные технологии и стандарты для реализации программных API.
RESTful API
  1. RESTful-архитектура, основанная на принципах REST, включая ресурсы, HTTP-методы и представление данных.
  2. Она использует стандартные методы HTTP (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.
  3. Обычно она возвращает данные в формате JSON или XML.
API SOAP
  1. Они основаны на XML и следуют протоколу SOAP (простой протокол доступа к объектам).
  2. Они предоставляют высокосовместимые сервисы с расширенными возможностями, такими как безопасность и транзакции.
  3. Они более сложные, чем RESTful API.

API GraphQL

  1. В них используется гибкий язык запросов, который позволяет клиентам запрашивать только те данные, которые им нужны.
  2. Они позволяют клиентам задавать структуру желаемых ответов, что делает их популярными в современных приложениях.
  3. Они не обязательно соответствует архитектуре RESTful или SOAP и являются более гибкими в плане запросов.


Протоколы и архитектура API

  1. XML-RPC: данный протокол был создан для обмена информацией между двумя или более сетями. Клиент выполняет RPC, используя XML для написания кода своих вызовов и HTTP-запросы для передачи данных.

  1. JSON-RPC: облегченный RPC в кодировке JSON, похожий на XML-RPC, который позволяет получать множество уведомлений и обращений к серверу, на которые можно отвечать асинхронно.

  2. SOAP: протокол Web API, созданный для обмена структурированной информацией. Он использует XML для аутентификации, авторизации и взаимодействия процессов, запущенных в операционных системах. Поскольку веб-протоколы, такие как HTTP, работают на большинстве операционных систем, SOAP позволяет клиентам вызывать веб-сервисы и получать ответы независимо от использованных языка и платформы.

  3. REST: архитектурный стиль для обеспечения стандартов между системами в Интернете. Поскольку он не является протоколом, библиотекой или инструментом, он облегчает взаимодействие между системами. Архитектура REST делает реализацию клиента и сервера независимой, не оказывая влияния на функционирование друг друга.


Понимание необходимости API


  1. Автоматизация ускоряет тестирование API и тем самым повышает эффективность. API не только соединяет цифровой мир с его динамичностью, но и позволяет компаниям стать более гибкими за счет автоматизации рабочих процессов.

  2. Интеграция платформ и приложений может осуществляться через API, что позволяет использовать преимущества непрерывной связи. Без API компаниям не хватало возможностей подключения, что пропорционально снижало производительность и эффективность. Системная интеграция позволяет перемещать данные, облегчая автоматизацию рабочего процесса и улучшая взаимодействие на работе.

  3. Эффективность возрастает по мере уменьшения вмешательства человека. Предоставление доступа к API позволяет избежать дублирования контента, что дает компаниям большую гибкость, что позволяет тратить время на качественные инновации.

  4. Безопасность является дополнительным преимуществом, поскольку API добавляет дополнительный уровень защиты между вашими данными и сервером. Однако разработчики могут усилить безопасность с помощью токенов, подписей и шифрования защиты транспортного уровня (Transport Layer Security, TLS).


Введение в REST API:


REST API, или репрезентативный интерфейс прикладного программирования переданного состояния, - это модель архитектуры программного обеспечения, которая устанавливает правила и стандарты взаимодействия между приложениями и сервисами в Интернете. Когда API строго следует принципам архитектуры REST, его часто называют RESTful API.

Одно из главных преимуществ RESTful API - гибкий подход к доступу к веб-сервисам. Это связано с тем, что для выполнения операций с ресурсами, представленными URL-адресами, они используют стандартные протоколы и методы HTTP (такие как GET, POST, PUT и DELETE). Такая простота структуры делает взаимодействие с веб-сервисами более доступным, даже на устройствах или в средах с ограниченными вычислительными ресурсами.


Архитектура REST

  1. Нестационарность. Системы, работающие в парадигме REST, должны быть нестационарными. При взаимодействии между клиентом и сервером ограничение stateless делает серверы невосприимчивыми к состоянию клиента и наоборот. Ограничения применяются ресурсами, а не командами, и являются веб-существительными, которые описывают любой объект, документ или вещь, которую можно хранить/отправлять другим ресурсам.

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

  3. Отсоединение. REST - это распределенный подход, при котором клиентские и серверные приложения отделены друг от друга. Независимо от того, где запускаются запросы, единственной информацией, известной клиентскому приложению, является унифицированный идентификатор ресурса (URI) запрашиваемого ресурса. Серверное приложение должно передавать запрашиваемые данные по протоколу HTTP, но не должно пытаться изменить клиентское приложение.

  4. Многослойность. Многослойная система делает архитектуру REST масштабируемой. В архитектуре RESTful клиентские и серверные приложения разделены, поэтому вызовы и ответы REST API проходят через различные уровни. Поскольку REST API является многоуровневым, он должен быть разработан таким образом, чтобы ни клиент, ни сервер не идентифицировали свое взаимодействие с конечными или промежуточными приложениями.


Основные преимущества REST API

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

  2. Адаптивность - REST API адаптируется к любым изменениям, вносимым в данные, хранящиеся в базе, даже если они размещены на разных внутренних и внешних серверах. Поскольку в некоторой степени опирается на код, то помогает беспрепятственно синхронизировать данные на разных сайтах.

  3. Простота понимания - поток данных использует методы HTTP (GET, POST, PUT или DELETE) для обмена данными, эти методы не требуют пояснений. Кроме того, архитектура REST помогает повысить производительность разработчиков, позволяя им отображать информацию на стороне клиента и хранить или манипулировать данными на стороне сервера.


API против REST API

  1. Структура - в то время как структурно большинство API следуют формату "приложение-приложение", REST API работает строго по веб-концепции клиента и сервера. Клиент и сервер отделены друг от друга, что обеспечивает большую гибкость.

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

  3. Протокол - основной целью API является стандартизация обмена данными между веб-сервисами. В зависимости от вида API выбор протокола меняется. С другой стороны, REST API - это архитектурный стиль для создания веб-сервисов, взаимодействующих по протоколу HTTP. Хотя API REST был сформулирован еще в 2000 году компьютерным ученым Роем Филдингом, он остается золотым стандартом для публичных API.

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

  5. Унифицированный интерфейс- не многие API разделяют клиента и сервер или одно приложение от другого. REST API придерживается принципов единого интерфейса и запрещает использование нескольких или отдельных интерфейсов в рамках API. В идеале гиперссылки должны использоваться для распространения одного интерфейса, это также должно гарантировать, что аналогичный фрагмент данных (например, имя пользователя или адрес электронной почты) принадлежит только одному унифицированному идентификатору ресурса (URI). В результате, независимо от первоначального запроса, все API-запросы к одним и тем же ресурсам должны выглядеть одинаково.

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


Примеры: как использовать функцию WebRequest в MQL5

Теперь, когда мы вступили в мир API и REST API, вам наверное любопытно: "А как же в эту историю вписывается MQL5?". Итак, нам пора засучить рукава и приступить к работе с практическими примерами на MQL5. В конце концов, нет ничего лучше хорошего практического примера, не так ли?

Чтобы сделать примеры более полными и интересными, мы будем работать с jsonplaceholder.typicode.com, а также добавим несколько конечных точек от Coinbase.

Идея проста: начнем с базовых CRUD-операций с использованием jsonplaceholder, потому что он отлично подходит для понимания основ и проведения тестирования. Но затем мы перейдем на более высокий уровень и применим данные знания к более сложному и быстро меняющемуся сценарию работы с API Coinbase. Здесь есть всё: котировки, исторические данные и даже возможность войти в мир торговых операций - всё зависит от того, к каким конечным точкам мы обращаемся.

Начнем с CRUD-операций.

New Post - POST

int CreateNewPost(string title, string body, int userId)
  {
   uchar result[];
   string result_headers;
   string url = "https://jsonplaceholder.typicode.com/posts";

   char post_data[];
   StringToCharArray(StringFormat("{\"title\": \"%s\", \"body\": \"%s\", \"userId\": %d}", title, body, userId), post_data);

   string headers = "Content-Type: application/json\r\n";
   int timeout = 5000;

   int res = WebRequest("POST", url, headers, timeout, post_data, result, result_headers);

   if(res > 0)
     {
      Print("Post created successfully.");
     }
   else
     {
      Print("Error: Failed to create post.");
     }

   return -1;
  }

Update Post - PUT

bool UpdatePost(int postId, string newTitle, string newBody)
  {
   uchar result[];
   string result_headers;
   string url = StringFormat("https://jsonplaceholder.typicode.com/posts/%d", postId);

   char put_data[]; // Declare post_data as char[]
   StringToCharArray(StringFormat("{\"title\": \"%s\", \"body\": \"%s\"}", newTitle, newBody), put_data);

   string headers = "Content-Type: application/json\r\n"; // Declare headers as char[]
   int timeout = 5000;

   int res = WebRequest("PUT", url, headers, timeout, put_data, result, result_headers);

   if(res > 0)
     {
      Print("Post updated successfully.");
      return true;
     }
   else
     {
      Print("Error: Failed to update post.");
      return false;
     }
  }

Delete Post - DELETE

bool DeletePost(int postId)
  {
   char data[];
   uchar result[];
   string result_headers;
   string url = StringFormat("https://jsonplaceholder.typicode.com/posts/%d", postId);
   int timeout = 5000;

   int res = WebRequest("DELETE", url, NULL, timeout, data, result, result_headers);

   if(res > 0)
     {
      Print("Post deleted successfully.");
      return true;
     }
   else
     {
      Print("Error: Failed to delete post.");
      return false;
     }
  }

Get Post - GET

string GetPostById(int postId)
  {
   char data[];
   uchar result[];
   string result_headers;
   string url = StringFormat("https://jsonplaceholder.typicode.com/posts/%d", postId);
   int timeout = 5000;

   int res = WebRequest("GET", url, NULL, timeout, data, result, result_headers);

   if(res > 0)
     {
      CJAVal jv;
      if(jv.Deserialize(result))
        {
         string postTitle = jv["title"].ToStr();
         Print("Post title: ", postTitle);
         return postTitle;
        }
      else
        {
         Print("Error: Unable to parse the response.");
        }
     }
   else
     {
      Print("Error: Failed to fetch post.");
     }

   return "";
  }

 

Теперь представим, что мы хотим проверить текущую цену биткоина (в конце концов, кто бы этого не хотел, верно?). Помимо общей цены, нас может заинтересовать цена спроса, цена предложения и спотовая цена BTC. Чтобы получить данную информацию через API, мы воспользуемся функцией WebRequest в MQL5:

string GetBitcoinPrice(string priceType)
  {
   char data[];
   uchar result[];
   string result_headers;

   string baseURL = "https://api.coinbase.com/v2/prices/";
   if(priceType == "buy")
      baseURL += "buy";
   else
      if(priceType == "sell")
         baseURL += "sell";
      else
         baseURL += "spot";

   string url = baseURL + "?currency=USD";
   char headers[];
   int timeout = 5000;
   int res;

   Print("Fetching Bitcoin price for type: ", priceType);
   res = WebRequest("GET", url, NULL, NULL, timeout, data, 0, result, result_headers);

   string price = "";
   if(res > 0)
     {
      Print("Response received from Coinbase API"); 

      CJAVal jv;
      if(jv.Deserialize(result))
        {
         price = jv["data"]["amount"].ToStr();
         Print("Price fetched: ", price);
        }
      else
        {
         Print("Error: Unable to parse the response.");
        }
     }
   else
     {
      Print("Error: No response from Coinbase API or an error occurred.");
     }

   return price;
  }


Либо, если хотим перечислить все валюты. 

string GetAvailableCurrencies()
  {
   char data[];
   uchar result[];
   string result_headers;
   string url = "https://api.coinbase.com/v2/currencies";
   char headers[];
   int timeout = 5000;
   int res;

   Print("Fetching list of available currencies from Coinbase API");
   res = WebRequest("GET", url, NULL, NULL, timeout, data, 0, result, result_headers);

   string currencies = "";
   if(res > 0)
     {
      Print("Response received from Coinbase API");

      CJAVal jv;
      if(jv.Deserialize(result))
        {
         // Considerando que a resposta é uma lista de moedas
         for(int i = 0; i < jv["data"].Size(); i++)
           {
            currencies += "Currency: " + jv["data"][i]["id"].ToStr();
            currencies += ", Name: " + jv["data"][i]["name"].ToStr();
            currencies += ", Min Size: " + jv["data"][i]["min_size"].ToStr();
            currencies += "\n";
           }
         Print(currencies);
        }
      else
        {
         Print("Error: Unable to parse the response.");
        }
     }
   else
     {
      Print("Error: No response from Coinbase API or an error occurred.");
     }

   return currencies;
  }


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

#include "libraries/RESTFunctions.mqh"

int OnStart()
  {
//--- CRUD Operations on Posts ---//

// 1. Create a new post
   int userId = 1; // exemplo de userID, você pode ajustar conforme necessário
   string title = "Exemplo de Título";
   string body = "Este é o conteúdo do post para demonstração.";
   int newPostId = CreateNewPost(title, body, userId);
   if(newPostId != -1)
      Print("New Post ID: ", newPostId);

// 2. Update the created post
   string updatedTitle = "Título Atualizado";
   string updatedBody = "Conteúdo do post atualizado.";
   if(UpdatePost(newPostId, updatedTitle, updatedBody))
      Print("Post atualizado com sucesso.");

// 3. Get the updated post
   string fetchedTitle = GetPostById(newPostId);
   if(StringLen(fetchedTitle) > 0)
      Print("Título do Post Obtido: ", fetchedTitle);

// 4. Delete the post
   if(DeletePost(newPostId))
      Print("Post excluído com sucesso.");

//--- Coinbase Operations ---//

   const string buyPrice = GetBitcoinPrice("buy");
   const string sellPrice = GetBitcoinPrice("sell");
   const string spotPrice = GetBitcoinPrice("spot");

   Print("Buy Price: ", buyPrice);
   Print("Sell Price: ", sellPrice);
   Print("Spot Price: ", spotPrice);

   const string currencies = GetAvailableCurrencies();
   Print("Available Currencies: ", currencies);

//---
   return(INIT_SUCCEEDED);
  }

и в результате мы увидим следующее:




Заключение:

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

API необходимы для того, чтобы облегчить взаимодействие между различными приложениями, абстрагировать базовую сложность и позволить разработчикам эффективно использовать сторонние ресурсы. Существует несколько видов, таких как веб-API, локальные, программные, RESTful, SOAP и GraphQL, каждый из которых имеет свои особенности и применение.

REST API, в свою очередь, следует набору архитектурных принципов, которые делают его гибким, адаптируемым и простым для понимания. REST API особенно подходит для веб-коммуникаций, использует протокол HTTP для выполнения операций над ресурсами и часто возвращает данные в формате JSON или XML.

Если сравнить API с REST API, можно отметить, что REST API имеют более строгую структуру, отделяют клиента от сервера и работают в основном в веб-контексте. Оба придерживаются единого интерфейса и способствуют масштабируемости благодаря многоуровневой структуре.

Наконец, применив данные концепции на практических примерах с использованием MQL5, мы сможем понять, как API используются в реальном мире, начиная с базовых операций CRUD и заканчивая получением финансовых данных с помощью API Coinbase.

Ну что ж, друзья, мы подошли к концу этого исчерпывающего разговора об API, REST, MQL5 и всем остальном. Хочу сразу оговориться, что всё, что было сказано до сих пор, является результатом моего профессионального видения: всегда с вниманием к деталям - ведь никогда не знаешь, когда из ниоткуда может появиться баг! 

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

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

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

Не стесняйтесь обращаться ко мне, если у вас возникнут дополнительные вопросы или вам понадобится помощь. Я готов помочь вам всем, чем смогу.

До встречи, друзья!

Перевод с португальского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/pt/articles/13661

Прикрепленные файлы |
Parte_01.zip (431.78 KB)
Нейросети — это просто (Часть 86): U-образный Трансформер Нейросети — это просто (Часть 86): U-образный Трансформер
Мы продолжаем рассмотрение алгоритмов прогнозирования временных рядов. И в данной статье я предлагаю Вам познакомиться с методов U-shaped Transformer.
Алгоритм оптимизации на основе мозгового штурма — Brain Storm Optimization (Часть II): Многомодальность Алгоритм оптимизации на основе мозгового штурма — Brain Storm Optimization (Часть II): Многомодальность
Во второй части статьи перейдем к практической реализации алгоритма BSO, проведем тесты на тестовых функциях и сравним эффективность BSO с другими методами оптимизации.
Разработка системы репликации (Часть 34): Система ордеров (III) Разработка системы репликации (Часть 34): Система ордеров (III)
В этой статье мы завершим первый этап конструкции. Несмотря на то, что это выполняется довольно быстро, я расскажу о деталях, которые не обсуждались ранее. Но здесь я объясню некоторые моменты, которые многие не понимают. Например, знаете ли вы, почему вам приходится нажимать клавишу Shift или Ctrl на клавиатуре?
Разрабатываем мультивалютный советник (Часть 8): Проводим нагрузочное тестирование и обрабатываем новый бар Разрабатываем мультивалютный советник (Часть 8): Проводим нагрузочное тестирование и обрабатываем новый бар
По мере продвижения мы использовали в одном советнике всё больше и больше одновременно работающих экземпляров торговых стратегий. Попробуем выяснить до какого количества экземпляров мы можем дойти прежде, чем столкнёмся ограничениями ресурсов.