Скачать MetaTrader 5

Примеры: Разбор HTML средствами MQL4

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
185980
MetaQuotes Software Corp.  

New article Разбор HTML средствами MQL4 has been published:

HTML является одним из распространенных видов документов на сегодняшний день. Терминал MetaTrader 4 позволяет сохранять стейтменты, отчеты тестирования и оптимизации в виде файлов с расширением htm. Иногда возникает необходимость получить информацию из таких файлов в программе на MQL4. В статье показан один из вариантов получения структуры тегов и содержимого из HTML.

С точки зрения проcтого описания, тег - это любое слово, окруженное двумя угловыми скобками. Например, вот это тег - <тег>. Хотя на самом деле в языке HTML тегами являются только определенные слова, набранные латиницей. Например, <html> - правильный тег, а тега <html2> не существует. Кроме того, многие теги могут иметь дополнительные атрибуты, которые уточняют форматирование, осуществляемой данным тегом. Например, <div align="center"> указывает на наличие тега <div>, в котором дополнительно задан атрибут выравнивания содержимого тега по центру.

Обычно теги идут парами, существуют открывающий и закрывающий тег. Отличаются они между собой только наличием слеша. Если <div> - это открывающий тег, то </div> - это закрывающий тег. Все то, что находится между открывающим и закрывающим тегами, называется содержимым тега (content). Вот это содержимое обычно и интересует при разборе HTML-кода.

Author: MetaQuotes Software Corp.

DrShumiloff
611
DrShumiloff  
Насколько проще был бы код, если бы поддерживался RegEx...
BabyBear
226
BabyBear  

Еще бывает, что теги не закрывают. Будет тогда работать?

<p>

<table>

<tr><td><td><td>

<tr><td><td><td>

<tr><td><td><td>

</table>

Rosh
93
Rosh  
Алгоритм просто вытаскивает структуру тегов. Проверку на валидность он не производит, как и не делает никаких предположений относительно корректности HTML. Все стальное - в руках программиста. Как правило HTML-отчеты, сформированные программным путем, не содержат явных ошибок с закрытием или написанием тегов.
MQL4 Comments
16319
MQL4 Comments  
теги <tr> и <td> закрывать не обязательно
MQL4 Comments
16319
MQL4 Comments  
На самом деле, проще обрабатывать HTML специальными средствами. К примеру - PHP, который специально для этого заточен, код будет проще, как для PHP так и для самого MQL4.
Valery V. Chesnokov
1323
Valery V. Chesnokov  
Rosh:
Алгоритм просто вытаскивает структуру тегов.

Уважаемый Рашид, я в своё время просил на форуме Рената или Станислава рассмотреть возможность создания отчёта о тесте (StrategyTester) в формате XML, чтобы проще было автоматизированным способом получать из него данные. Или текущий отчёт преобразовать в XML + XSLT, или добавить второй отчёт к существующему. Просьба, наверное, потерялась в сутолоке форума..

Вам попроще изнутри компании обсудить этот вопрос, отделить в отчёте данные от их представления. Может, всё-таки в 5-й версии терминала такой отчёт появится? Это было бы удобнее, чем парсить HTML, и, как верно выше заметили, без регулярных выражений это весьма непродуктивно.

Вадимус
164
Вадимус  
мега зачот, как раз мне понадобилась инфа для парсера !!
MQL4 Comments
16319
MQL4 Comments  

А это вобще для чего нужно то?

Rosh
93
Rosh  
Andy_Kon:
На самом деле, проще обрабатывать HTML специальными средствами. К примеру - PHP, который специально для этого заточен, код будет проще, как для PHP так и для самого MQL4.
Кроме PHP есть еще и другие, еще более заточенные под разбор регулярных выражений. Для извлечения информации из html-отчетов функционала, предложенного в данной статье, хватает за глаза.
Rosh
93
Rosh  
chv:
Rosh:
Алгоритм просто вытаскивает структуру тегов.

Уважаемый Рашид, я в своё время просил на форуме Рената или Станислава рассмотреть возможность создания отчёта о тесте (StrategyTester) в формате XML, чтобы проще было автоматизированным способом получать из него данные. Или текущий отчёт преобразовать в XML + XSLT, или добавить второй отчёт к существующему. Просьба, наверное, потерялась в сутолоке форума..

Вам попроще изнутри компании обсудить этот вопрос, отделить в отчёте данные от их представления. Может, всё-таки в 5-й версии терминала такой отчёт появится? Это было бы удобнее, чем парсить HTML, и, как верно выше заметили, без регулярных выражений это весьма непродуктивно.


Валерий, дело не в том, что конкретно Вы не были услышаны. Невозможно создать программынй продукт, который учитывал бы все пожелания пользователей, потому что в итоге получится такой монстр, который убъет сам себя и пользоваться им не захотят. Компания исходит из того, что нужно и достаточно "дать удочку, чтобы пользователь сам поймал рыбку". Нельзя объять необъятное. Мне кажется, что для извлечения информации из стандартных отчетов терминала средств MQL4 более чем достаточно. Я не стал приводить примеры конкретного применения данного скрипта для, например, нанесения на график всех сделок из отчета, так как это рядовая задача для программиста на MQL4.
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий