Как создать робот – как создать робот-манипулятор за месяц и сделать бизнес на изобретательских задачах

Содержание

инструменты для начинающих / ITI Capital corporate blog / Habr

Тема автоматизированных систем для торговли на бирже довольно популярна в рунете в последние несколько лет. Однако начинающим инвесторам создать своего торгового робота может быть нелегко. Сегодня мы расскажем о том, как это можно сделать без лишних затрат.

Примечание: любая инвестиционная деятельность на бирже связана с определенным риском, это нужно учитывать. Кроме того, для запуска своего торгового робота вам понадобится брокерский счет, открыть его можно онлайн. Вы можете отладить свою стратегию с помощью тестового доступа с виртуальными деньгами.

Варианты создания роботов

Существует несколько вариантов создания роботизированного софта для торговли на бирже:

  • Создание роботов для работы на прямом подключении – такие системы работают «в обход» торговой системы брокера, отправляя заявки напрямую в «движок» торговой системы биржи. Этот вариант используют уже опытные трейдеры, которые готовы платить в том числе и за такой способ подключения.
  • Подключение к брокерской торговой системе по API. Некоторые брокеры позволяют подключать внешний торговый софт к своим торговым системам по специальным интерфейсам. Клиенты ITI Capital могут делать это с помощью API SMARTcom. В этом случае роботы могут быть достаточно сложными.
  • Автоматизация операций напрямую в торговом терминале. Наиболее простой, подходящий для новичков способ, заключается в том, чтобы автоматизировать торговлю напрямую в базовой программе любого трейдера – терминале.

Сегодня мы будем рассматривать третий вариант, поскольку он наиболее прост.

Как это работало раньше

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

Меню для подключения Excel в одном из торговых терминалов прошлого поколения

Также распространенной практикой среди трейдеров было подключение к своим терминалам мощных систем технического анализа и разработки роботов вроде WealthLab и MetaStock. В таких случаях интеграция обычно осуществляется с помощью дополнительных библиотек.

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

Как это работает теперь: изучаем язык TradeScript

В наши дни на российском рынке самый простой способ создать несложного торгового робота, работающего с системой брокера, это использование терминала SMARTx.

В нем есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы различного уровня сложности. Язык был изначально создан для разработки торговых роботов, он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.

Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SMARTx, что позволяет добиваться значительно более высокой надежности и быстродействия.

Вот пример торговой стратегии, записанной на TradeScript:

Buy Signals 

# Покупаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = UP AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP 

Sell Signals 

# Продаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = DOWN AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Long Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = DOWN OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Short Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = UP OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

В пакете с TradeScript поставляет и модуль бэктестинга, который позволяет оценить продуктивность работы описанной стратегии на исторических данных. Помимо прочего, в системе реализована функция тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу — время виртуальной сделки, цена и получившаяся «доходность» будут показываться в отдельном окне.

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

Что еще: отладка на тестовом доступе

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

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

Полезные ссылки по теме инвестиций и биржевой торговли:

11 инструментов разработки / ITI Capital corporate blog / Habr

В нашем блоге мы много внимания уделяем вопросам алгоритмической и автоматизированной торговли на бирже, рассматривая, как теоретические аспекты, вроде выбора языка программирования, так и практические — например, реализацию системы событийно-ориентированного бэктестинга на Python.

Сегодня мы представляем вашему вниманию подборку сред программирования и инструментов для создания торговых роботов.

TradeScript (SMARTx)

В торговом терминале компании ITinvest под названием SmartX есть специальный плагин с конструктором торговых роботов TradeScript. С помощью простого, но довольно мощного скриптового языка трейдеры могут создавать механические системы различного уровня сложности.

Существует также модуль бэктестинга, позволяющий оценить продуктивность работы запрограммированной стратегии на исторических данных. Кроме того предоставлена и возможность тестирования торговой системы «на лету» с использованием текущих биржевых данных, но без вывода приказа на биржу — время виртуальной сделки, цена и получившаяся доходность будут показываться в отдельном окне.

Язык TradeScript был изначально создан американской компанией Modulus FE специально для написания на нем торговых роботов. Он довольно прост в изучении, а многие алгоритмы схожи по написанию с Metastock, что облегчает работу пользователям, знакомым с этим программным пакетом.

Плюсом TradeScript по сравнению с Wealth-Lab и тем же Metastock является отсутствие необходимости создания сложных конструкций и использования различных коннекторов для передачи приказов в торговый терминал. Конструктор роботов встроен в SmartX, что позволяет добиваться значительно более высокой надежности и быстродействия.

Ниже представлен код торговой стратегии на TradeScript:

Buy Signals 

# Покупаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = UP AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP 

Sell Signals 

# Продаем, если момент и инерция имеют однонаправленный тренд 

TREND(EMA(CLOSE, 20), 15) = DOWN AND 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Long Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = DOWN OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = DOWN 

Exit Short Signal 

# Выходим, если тренд инерции и момента имеет противоположное направления 

TREND(EMA(CLOSE, 20), 15) = UP OR 

TREND(MACD(13, 26, 9, SIMPLE), 5) = UP

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

Более подробно вопрос написания торговых роботов на TradeScript мы рассматривали в наших предыдущих материалах (первый, второй).

CQG Integrated Client

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

Wealth-Lab

Созданная компанией Fidelity International мощнейшая система технического анализа, разработки и тестирования торговых стратегий. Создавать торговых роботов можно с помощью встроенного языка программирования WealthScript. В последних версиях системы также используются C# и другие .NET-языки.

TSLab

Инструмент TSLab позволяет торговцам создавать механические системы разной степени сложности. Существуют возможности создания торгового робота и его тестирования на исторических данных. Существуют различные модули программы, например модуль управления риска, который прежде чем отправить заявку на биржу, проверяет ее на соответствие заданным условиям. Если ордер им не удовлетворяет, то будет отклонен. Таким образом можно ввести дополнительный контроль за работой скрипта.

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

LiveTrade (CoFiTe)

Программный комплекс LiveTrade создан разработчиками петербуржской компании CoFiTe. Помимо прочего он включает в себя программное решение для создания торговых роботов — Robotlab. Этот инструмент, как и TSLab, позволяет трейдерам создавать автоматизированные торговые системы с помощью блок-схем в визуальном конструкторе:

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

TradeMatic

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

Предусмотрены различные режимы работы торговой системы —от ручного, при которого для исполнения сигналов требуется выставление заявок руками, до полностью автоматического, когда все торговые сигналы сразу исполняются, не требуя участия трейдера.

SmartCOM

Открытый интерфейс торговой системы ITinvest также позволяет трейдерам создавать торговых роботов разной степени сложности и подключать внешние среды разработки и уже созданные в них торговые системы. Использование компонентной объектной модели позволяет подключать к торговым серверам брокера механические торговые системы, написанные на самых разных языках программирования. Например, C++, любой из.NET языков (C#, VB.NET и другие), Visual Basic, Visual Basic for Application (в частности из Microsoft Excel) и многих других.

Также существует дополнительный плагин SmartCOM для программного пакета AmiBroker, применение которого облегчает анализ загруженных данных.

MetaStock

Также популярный зарубежный продукт. Система MetaStock содержит обширную библиотеку индикаторов и средств для создания собственных формул. Также предусмотрен простой язык программирования, с помощью дополнительных модулей можно генерировать приказы на покупку и продажу.

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

StockSharp

Бесплатная в базовой версии платформа StockSharp с открытым исходным кодом. На ее основе разработаны продукты для создания торговых роботов.

Как пишут сами разработчики в своей статье на Хабре, проект StockSharp построен по классической модели развития сложного программного обеспечения. В начале создается некая основа (S#.API), и уже с помощью нее создаются надстройки высокого уровня.

В настоящий момент команда S# реализовала полный комплекс программных средств для алготрейдеров — систему сбора и хранения исторических данных (может раздавать данные в режиме сервера), система тестирования на истории, ряд графических компнонентов.

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

Quik

Название системы — сокращение от Quickly Updatable Information Kit (Быст-обновляемая информационная панель). Изначально Quik являлся информационной системой, «фишкой» которой была высокая скорость доставки данных, однако впоследствии продукт эволюционировал. До версии 6.4 в Quik предоставлялся встроенный скриптовый язык Qpile. Он обладал небольшим набором возможностей по сравнению с языками высокого уровня (C# или C++) и использовался главным образом для автоматизации простых торговых стратегий.

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

Версии Quik старше 6.4.0 поддерживают скрипты на Lua. Этот язык также встроен в терминал, довольно прост и обладает большей функциональностью, чем Qpile. Поскольку Lua – это интерпретируемый язык, то для работы с его кодом используется специальная библиотека QLua.

Изображение: RusAlgo.com

TRANSAQ

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

Создавать роботов можно как с помощью подключения к TRANSAQ внешних сред разработки вроде Metastock, Omega, Wealth-Lab, так и при помощи встроенного языка программирования ATF (Advanced Trading Facility). По этому языку есть довольно подробная документация, в которой, помимо прочего, представлены и примеры кода готовых роботов.

Другие материалы по теме финансов и фондового рынка от ITI Capital:

Как создать торгового робота своими руками? Robot-Scalper

Торговый робот своими руками под QUIK

Нас часто спрашивают, как самостоятельно создать робота? И сложно ли это?

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

Для начала вы должны определиться какую именно торговую стратегию будете автоматизировать.

Затем нужно четко формализовать эту стратегию: описать строгими условиями все входы и выходы из позиции.

Теперь нужно определиться под какой торговый терминал будем разрабатывать робота.

Изучаем функции алготрейдинга (выставление и снятие заявок, получение текущих данных из терминала, механизм взаимодействия скрипта и терминала).

Изучаем как устроена структура данных (таблиц) на сервере Мосбиржи, чтобы знать откуда что брать.

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

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

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

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

Пример можно увидеть здесь:
Робот Sigma

Тестируем. Анализируем сделки. Проверяем насколько корректно отрабатывает робот.

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

Если торговый терминал позволяет, то можно провести бэк-тестирование (тестирование на исторических данных). Либо даже форвардное тестирование. Об этом подробно написано здесь https://smart-lab.ru/blog/503560.php

А также можно выполнить оптимизацию значений параметров стратегии.

Здесь важно искать не просто конкретные значения, при которых система покажет максимальную прибыль и минимальный убыток (в следующем месяце это может не повториться), а нужно найти диапазон значений, в которых стратегия показывает прибыль. Желательно брать значения из середины диапазона. Мы не можем наверняка знать насколько хорошо они подойдут в следующем торговом периоде. Но мы ожидаем, что доходность будет положительна.

Какие гарантии того что робот будет стабильно зарабатывать деньги?

– Никаких! Когда разрабатываешь робота, то не знаешь заранее будет ли данная стратегия прибыльная или нет. Только время покажет. Это как в любом другом бизнесе. Например, вы купили помидоры и стали их продавать. Какие гарантии? – Никаких! Если вы плохой бизнесмен, то ничего не продадите и помидоры просто протухнут. А если хороший бизнесмен, то будете в прибыли.

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

Слишком близкие цены покупки и продажи тоже не будут вам выгодны, так как комиссия будет съедать большую часть прибыли. Во всём нужна золотая середина! Это понимание приходит с опытом.

По поводу прибыльных стратегий. Как сразу найти прибыльную? – Никак. Нужно запрограммировать и протестировать десятки стратегий. Нужно анализировать сделки. Потом придет понимание того что работает на рынке, а что нет. Непроизвольно вы начнете делить стратегии на группы с общими признаками. После этого любую новую стратегию, еще до тестов, вы сразу будете относить к той или иной группе. И будете понимать примерные возможности по риску и доходности.

Это то, что касается разработки торговых стратегий и роботов.


Часть 2

Еще люди спрашивают, сложно ли развивать ваш проект «Робот Скальпер» и осуществлять техподдержку?
— Да. Сложно. Приходится отвечать более чем на 100 вопросов каждый день. Вопросы абсолютно разные. Не только по роботам. Это и базовые: как начать торговать, как открыть счет, сколько денег нужно и т.п., и нестандартные: вопросы по тарифам брокеров, по функционалу терминала QUIK, по данным от Мосбиржи и т.п.

Так как торговый робот для пользователя является конечным или финальным продуктом и если происходит сбой у брокера или в терминале QUIK или на бирже, то с точки зрения пользователя проблема всегда заключается в роботе! Это ведь он теперь работает не так как надо! И никого не волнует висит ли сервер брокера или поставляет ли Мосбиржа кривые котировки (нулевые цены и нулевую тек.позицию, при том что актив есть на балансе), отрубился ли интернет, заглючил или перезагрузился компьютер. Эти и другие проблемы приходится нам решать. Чтобы оказывать качественный сервис нужно знать гораздо больше, чем только алгоритм торговой стратегии.

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

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

Спасибо всем, кто дочитал до конца!

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

Желаем добра и успехов в трейдинге!

Остались вопросы по роботам? 

Обращайтесь в личку или на почту [email protected] 

Откроем Вам бесплатно брокерские счета: демо и боевой! С версией терминала QUIK 7.27!


С уважением,
команда проекта «Робот Скальпер»

Наш сайт: Robot-Scalper.ru
Почта: [email protected] 
Актуальная информация всегда есть в инстаграме: @robot_scalper

Как создать правильный файл robots.txt, настройка, директивы

Как создать правильный файл robots.txt, настройка, директивыКак создать правильный файл robots.txt, настройка, директивы

Файл robots.txt — текстовый файл в формате .txt, ограничивающий поисковым роботам доступ к содержимому на http-сервере. Как определение, Robots.txt — это стандарт исключений для роботов, который был принят консорциумом W3C 30 января 1994 года, и который добровольно использует большинство поисковых систем. Файл robots.txt состоит из набора инструкций для поисковых роботов, которые запрещают индексацию определенных файлов, страниц или каталогов на сайте. Рассмотрим описание robots.txt для случая, когда сайт не ограничивает доступ роботам к сайту.

Простой пример robots.txt:

User-agent: *
Allow: /

Здесь роботс полностью разрешает индексацию всего сайта.

Файл robots.txt необходимо загрузить в корневой каталог вашего сайта, чтобы он был доступен по адресу:

ваш_сайт.ru/robots.txt

Для размещения файла robots.txt в корне сайта обычно необходим доступ через FTP. Однако, некоторые системы управления (CMS) дают возможность создать robots.txt непосредственно из панели управления сайтом или через встроенный FTP-менеджер.

Если файл доступен, то вы увидите содержимое robots.txt в браузере.

Для чего нужен robots.txt

Roots.txt для сайта является важным аспектом поисковой оптимизации. Зачем нужен robots.txt? Например, в SEO robots.txt нужен для того, чтобы исключать из индексации страницы, не содержащие полезного контента и многое другое. Как, что, зачем и почему исключается уже было описано в статье про запрет индексации страниц сайта, здесь не будем на этом останавливаться. Нужен ли файл robots.txt всем сайтам? И да и нет. Если использование robots.txt подразумевает исключение страниц из поиска, то для небольших сайтов с простой структурой и статичными страницами подобные исключения могут быть лишними. Однако, и для небольшого сайта могут быть полезны некоторые директивы robots.txt, например директива Host или Sitemap, но об этом ниже.

Как создать robots.txt

Поскольку robots.txt — это текстовый файл, и чтобы создать файл robots.txt, можно воспользоваться любым текстовым редактором, например Блокнотом. Как только вы открыли новый текстовый документ, вы уже начали создание robots.txt, осталось только составить его содержимое, в зависимости от ваших требований, и сохранить в виде текстового файла с названием robots в формате txt. Все просто, и создание файла robots.txt не должно вызвать проблем даже у новичков. О том, как составить robots.txt и что писать в роботсе на примерах покажу ниже.

Cоздать robots.txt онлайн

Вариант для ленивых — создать роботс онлайн и скачать файл robots.txt уже в готовом виде. Создание robots txt онлайн предлагает множество сервисов, выбор за вами. Главное — четко понимать, что будет запрещено и что разрешено, иначе создание файла robots.txt online может обернуться трагедией, которую потом может быть сложно исправить. Особенно, если в поиск попадет то, что должно было быть закрытым. Будьте внимательны — проверьте свой файл роботс, прежде чем выгружать его на сайт. Все же пользовательский файл robots.txt точнее отражает структуру ограничений, чем тот, что был сгенерирован автоматически и скачан с другого сайта. Читайте дальше, чтобы знать, на что обратить особое внимание при редактировании robots.txt.

Редактирование robots.txt

После того, как вам удалось создать файл robots.txt онлайн или своими руками, вы можете редактировать robots.txt. Изменить его содержимое можно как угодно, главное — соблюдать некоторые правила и синтаксис robots.txt. В процессе работы над сайтом, файл роботс может меняться, и если вы производите редактирование robots.txt, то не забывайте выгружать на сайте обновленную, актуальную версию файла со всем изменениями. Далее рассмотрим правила настройки файла, чтобы знать, как изменить файл robots.txt и «не нарубить дров».

Правильная настройка robots.txt

Правильная настройка robots.txt позволяет избежать попадания частной информации в результаты поиска крупных поисковых систем. Однако, не стоит забывать, что команды robots.txt не более чем руководство к действию, а не защита. Роботы надежных поисковых систем, вроде Яндекс или Google, следуют инструкциям robots.txt, однако прочие роботы могут легко игнорировать их. Правильное понимание и применение robots.txt — залог получения результата.

Чтобы понять, как сделать правильный robots txt, для начала необходимо разобраться с общими правилами, синтаксисом и директивами файла robots.txt.

Правильный robots.txt начинается с директивы User-agent, которая указывает, к какому роботу обращены конкретные директивы.

Примеры User-agent в robots.txt:

# Указывает директивы для всех роботов одновременно
User-agent: *

# Указывает директивы для всех роботов Яндекса
User-agent: Yandex

# Указывает директивы для только основного индексирующего робота Яндекса
User-agent: YandexBot

# Указывает директивы для всех роботов Google
User-agent: Googlebot

Учитывайте, что подобная настройка файла robots.txt указывает роботу использовать только директивы, соответствующие user-agent с его именем.

Пример robots.txt с несколькими вхождениями User-agent:

# Будет использована всеми роботами Яндекса
User-agent: Yandex
Disallow: /*utm_

# Будет использована всеми роботами Google
User-agent: Googlebot
Disallow: /*utm_

# Будет использована всеми роботами кроме роботов Яндекса и Google
User-agent: *
Allow: /*utm_

Директива User-agent создает лишь указание конкретному роботу, а сразу после директивы User-agent должна идти команда или команды с непосредственным указанием условия для выбранного робота. В примере выше используется запрещающая директива «Disallow», которая имеет значение «/*utm_». Таким образом, закрываем все страницы с UTM-метками. Правильная настройка robots.txt запрещает наличие пустых переводов строки между директивами «User-agent», «Disallow» и директивами следующими за «Disallow» в рамках текущего «User-agent».

Пример неправильного перевода строки в robots.txt:

User-agent: Yandex

Disallow: /*utm_

Allow: /*id=

User-agent: *

Disallow: /*utm_

Allow: /*id=

Пример правильного перевода строки в robots.txt:

User-agent: Yandex
Disallow: /*utm_
Allow: /*id=

User-agent: *
Disallow: /*utm_
Allow: /*id=

Как видно из примера, указания в robots.txt поступают блоками, каждый из которых содержит указания либо для конкретного робота, либо для всех роботов «*».

Кроме того, важно соблюдать правильный порядок и сортировку команд в robots.txt при совместном использовании директив, например «Disallow» и «Allow». Директива «Allow» — разрешающая директива, является противоположностью команды robots.txt «Disallow» — запрещающей директивы.

Пример совместного использования директив в robots.txt:

User-agent: *
Allow: /blog/page
Disallow: /blog

Данный пример запрещает всем роботам индексацию всех страниц, начинающихся с «/blog», но разрешает индексации страниц, начинающиеся с «/blog/page».

Прошлый пример robots.txt в правильной сортировке:

User-agent: *
Disallow: /blog
Allow: /blog/page

Сначала запрещаем весь раздел, потом разрешаем некоторые его части.

Еще один правильный пример robots.txt с совместными директивами:

User-agent: *
Allow: /
Disallow: /blog
Allow: /blog/page

Обратите внимание на правильную последовательность директив в данном robots.txt.

Директивы «Allow» и «Disallow» можно указывать и без параметров, в этом случае значение будет трактоваться обратно параметру «/».

Пример директивы «Disallow/Allow» без параметров:

User-agent: *
Disallow: # равнозначно Allow: /
Disallow: /blog
Allow: /blog/page

Как составить правильный robots.txt и как пользоваться трактовкой директив — ваш выбор. Оба варианта будут правильными. Главное — не запутайтесь.

Для правильного составления robots.txt необходимо точно указывать в параметрах директив приоритеты и то, что будет запрещено для скачивания роботам. Более полно использование директив «Disallow» и «Allow» мы рассмотрим чуть ниже, а сейчас рассмотрим синтаксис robots.txt. Знание синтаксиса robots.txt приблизит вас к тому, чтобы создать идеальный robots txt своими руками.

Синтаксис robots.txt

Роботы поисковых систем добровольно следуют командам robots.txt — стандарту исключений для роботов, однако не все поисковые системы трактуют синтаксис robots.txt одинаково. Файл robots.txt имеет строго определённый синтаксис, но в то же время написать robots txt не сложно, так как его структура очень проста и легко понятна.

Вот конкретные список простых правил, следуя которым, вы исключите частые ошибки robots.txt:

  1. Каждая директива начинается с новой строки;
  2. Не указывайте больше одной директивы в одной строке;
  3. Не ставьте пробел в начало строки;
  4. Параметр директивы должен быть в одну строку;
  5. Не нужно обрамлять параметры директив в кавычки;
  6. Параметры директив не требуют закрывающих точки с запятой;
  7. Команда в robots.txt указывается в формате — [Имя_директивы]:[необязательный пробел][значение][необязательный пробел];
  8. Допускаются комментарии в robots.txt после знака решетки #;
  9. Пустой перевод строки может трактоваться как окончание директивы User-agent;
  10. Директива «Disallow: » (с пустым значением) равнозначна «Allow: /» — разрешить все;
  11. В директивах «Allow», «Disallow» указывается не более одного параметра;
  12. Название файла robots.txt не допускает наличие заглавных букв, ошибочное написание названия файла — Robots.txt или ROBOTS.TXT;
  13. Написание названия директив и параметров заглавными буквами считается плохим тоном и если по стандарту, robots.txt и нечувствителен к регистру, часто к нему чувствительны имена файлов и директорий;
  14. Если параметр директивы является директорией, то перед название директории всегда ставится слеш «/», например: Disallow: /category
  15. Слишком большие robots.txt (более 32 Кб) считаются полностью разрешающими, равнозначными «Disallow: »;
  16. Недоступный по каким-либо причинам robots.txt может трактоваться как полностью разрешающий;
  17. Если robots.txt пустой, то он будет трактоваться как полностью разрешающий;
  18. В результате перечисления нескольких директив «User-agent» без пустого перевода строки, все последующие директивы «User-agent», кроме первой, могут быть проигнорированы;
  19. Использование любых символов национальных алфавитов в robots.txt не допускается.

Поскольку разные поисковые системы могут трактовать синтаксис robots.txt по-разному, некоторые пункты можно опустить. Так например, если прописать несколько директив «User-agent» без пустого перевода строки, все директивы «User-agent» будут восприняты корректно Яндексом, так как Яндекс выделяет записи по наличию в строке «User-agent».

В роботсе должно быть указано строго только то, что нужно, и ничего лишнего. Не думайте, как прописать в robots txt все, что только можно и чем его заполнить. Идеальный robots txt — это тот, в котором меньше строк, но больше смысла. «Краткость — сестра таланта». Это выражение здесь как нельзя кстати.

Как проверить robots.txt

Для того, чтобы проверить robots.txt на корректность синтаксиса и структуры файла, можно воспользоваться одной из онлайн-служб. К примеру, Яндекс и Google предлагают собственные сервисы анализа сайта для вебмастеров, которые включают анализ robots.txt:

Проверка файла robots.txt в Яндекс.Вебмастер: http://webmaster.yandex.ru/robots.xml

Проверка файла robots.txt в Google: https://www.google.com/webmasters/tools/siteoverview?hl=ru

Для того, чтобы проверить robots.txt онлайн необходимо загрузить robots.txt на сайт в корневую директорию. Иначе, сервис может сообщить, что не удалось загрузить robots.txt. Рекомендуется предварительно проверить robots.txt на доступность по адресу где лежит файл, например: ваш_сайт.ru/robots.txt.

Кроме сервисов проверки от Яндекс и Google, существует множество других онлайн валидаторов robots.txt.

Robots.txt vs Яндекс и Google

Есть субъективное мнение, что указание отдельного блока директив «User-agent: Yandex» в robots.txt Яндекс воспринимает более позитивно, чем общий блок директив с «User-agent: *». Аналогичная ситуация robots.txt и Google. Указание отдельных директив для Яндекс и Google позволяет управлять индексацией сайта через robots.txt. Возможно, им льстит персонально обращение, тем более, что для большинства сайтов содержимое блоков robots.txt Яндекса, Гугла и для других поисковиков будет одинаково. За редким исключением, все блоки «User-agent» будут иметь стандартный для robots.txt набор директив. Так же, используя разные «User-agent» можно установить запрет индексации в robots.txt для Яндекса, но, например не для Google.

Отдельно стоит отметить, что Яндекс учитывает такую важную директиву, как «Host», и правильный robots.txt для яндекса должен включать данную директиву для указания главного зеркала сайта. Подробнее директиву «Host» рассмотрим ниже.

Запретить индексацию: robots.txt Disallow

Disallow — запрещающая директива, которая чаще всего используется в файле robots.txt. Disallow запрещает индексацию сайта или его части, в зависимости от пути, указанного в параметре директивы Disallow.

Пример как в robots.txt запретить индексацию сайта:

User-agent: *
Disallow: /

Данный пример закрывает от индексации весь сайт для всех роботов.

В параметре директивы Disallow допускается использование специальных символов * и $:

* — любое количество любых символов, например, параметру /page* удовлетворяет /page, /page1, /page-be-cool, /page/kak-skazat и т.д. Однако нет необходимости указывать * в конце каждого параметра, так как например, следующие директивы интерпретируются одинаково:

User-agent: Yandex
Disallow: /page
User-agent: Yandex
Disallow: /page*

$ — указывает на точное соответствие исключения значению параметра:

User-agent: Googlebot
Disallow: /page$

В данном случае, директива Disallow будет запрещать /page, но не будет запрещать индексацию страницы /page1, /page-be-cool или /page/kak-skazat.

Если закрыть индексацию сайта robots.txt, в поисковые системы могут отреагировать на так ход ошибкой «Заблокировано в файле robots.txt» или «url restricted by robots.txt» (url запрещенный файлом robots.txt). Если вам нужно запретить индексацию страницы, можно воспользоваться не только robots txt, но и аналогичными html-тегами:

  • <meta name=»robots» content=»noindex»/> — не индексировать содержимое страницы;
  • <meta name=»robots» content=»nofollow»/> — не переходить по ссылкам на странице;
  • <meta name=»robots» content=»none»/> — запрещено индексировать содержимое и переходить по ссылкам на странице;
  • <meta name=»robots» content=»noindex, nofollow»/> — аналогично content=»none».

Разрешить индексацию: robots.txt Allow

Allow — разрешающая директива и противоположность директиве Disallow. Эта директива имеет синтаксис, сходный с Disallow.

Пример, как в robots.txt запретить индексацию сайта кроме некоторых страниц:

User-agent: *
Disallow: /
Allow: /page

Запрещается индексировать весь сайт, кроме страниц, начинающихся с /page.

Disallow и Allow с пустым значением параметра

Пустая директива Disallow:

User-agent: *
Disallow:

Не запрещать ничего или разрешить индексацию всего сайта и равнозначна:

User-agent: *
Allow: /

Пустая директива Allow:

User-agent: *
Allow:

Разрешить ничего или полный запрет индексации сайта, равнозначно:

User-agent: *
Disallow: /

Главное зеркало сайта: robots.txt Host

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

mysite.ru
mysite.com

Или для определения приоритета между:

mysite.ru
www.mysite.ru

Роботу Яндекса можно указать, какое зеркало является главным. Директива Host указывается в блоке директивы «User-agent: Yandex» и в качестве параметра, указывается предпочтительный адрес сайта без «http://».

Пример robots.txt с указанием главного зеркала:

User-agent: Yandex
Disallow: /page
Host: mysite.ru

В качестве главного зеркала указывается доменное имя mysite.ru без www. Таки образом, в результатах поиска буде указан именно такой вид адреса.

User-agent: Yandex
Disallow: /page
Host: www.mysite.ru

В качестве основного зеркала указывается доменное имя www.mysite.ru.

Директива Host в файле robots.txt может быть использована только один раз, если же директива Хост будет указана более одного раза, учитываться будет только первая, прочие директивы Host будут игнорироваться.

Если вы хотите указать главное зеркало для робота Google, воспользуйтесь сервисом Google Инструменты для вебмастеров.

Карта сайта: robots.txt sitemap

При помощи директивы Sitemap, в robots.txt можно указать расположение на сайте файла карты сайта sitemap.xml.

Пример robots.txt с указанием адреса карты сайта:

User-agent: *
Disallow: /page
Sitemap: http://www.mysite.ru/sitemap.xml

Указание адреса карты сайта через директиву Sitemap в robots.txt позволяет поисковому роботу узнать о наличии карты сайта и начать ее индексацию.

Директива Clean-param

Директива Clean-param позволяет исключить из индексации страницы с динамическими параметрами. Подобные страницы могут отдавать одинаковое содержимое, имея различные URL страницы. Проще говоря, будто страница доступна по разным адресам. Наша задача убрать все лишние динамические адреса, которых может быть миллион. Для этого исключаем все динамические параметры, используя в robots.txt директиву Clean-param.

Синтаксис директивы Clean-param:

Clean-param: parm1[&parm2&parm3&parm4&..&parmn] [Путь]

Рассмотрим на примере страницы со следующим URL:

www.mysite.ru/page.html?&parm1=1&parm2=2&parm3=3

Пример robots.txt Clean-param:

Clean-param: parm1&parm2&parm3 /page.html # только для page.html

или

Clean-param: parm1&parm2&parm3 / # для всех

Директива Crawl-delay

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

Пример robots.txt Crawl-delay:

User-agent: Yandex
Disallow: /page
Crawl-delay: 3

В данном случае мы «просим» роботов яндекса скачивать страницы нашего сайта не чаще, чем один раз в три секунды. Некоторые поисковые системы поддерживают формат дробных чисел в качестве параметра директивы Crawl-delay robots.txt.

Комментарии в robots.txt

Комментарий в robots.txt начинаются с символа решетки — #, действует до конца текущей строки и игнорируются роботами.

Примеры комментариев в robots.txt:

User-agent: *
# Комментарий может идти от начала строки
Disallow: /page # А может быть продолжением строки с директивой
# Роботы
# игнорируют
# комментарии
Host: www.mysite.ru

В заключении

Файл robots.txt — очень важный и нужный инструмент взаимодействия с поисковыми роботами и один из важнейших инструментов SEO, так как позволяет напрямую влиять на индексацию сайта. Используйте роботс правильно и с умом.

Если у вас есть вопросы — пишите в комментариях.
Рекомендуйте статью друзьям и не забывайте подписываться на блог.
Новые интересные статьи каждый день.

Как создать своего робота. История «рождения» NikaBot

Многофункционального домашнего робота разработал и создал руководитель отдела RoboLab в BelHard Александр Дубовицкий. У него КВ и узнали, как создать своего собственного робота, который станет отличным помощником в быту.

О NikaBot 

NikaBot – это домашний робот-помощник, основными задачами которого является уборка помещения, сканирование помещения, собеседник-сиделка, интерактивное устройство для обучения детей.

Данный робот убирает дом, сканирует его на наличие опасных газов, паров ртути, дыма, пламени и т.д. При обнаружении опасности робот сигнализирует хозяину и вызывает службу спасения. Робот обладает системой распознавания образов, может запоминать людей, распознавать объекты или, например, понимать какое у человека настроение. NikaBot понимает человеческую речь, и уже на данном этапе может примитивно разговаривать, отвечая заготовками. Сейчас робота учат самостоятельно отвечать своему собеседнику.

Робот оснащен руками, каждая из которых имеет 7 степеней свободы. С помощью рук робот может выполнять различные манипуляции, например, покормить котика или собачку, полить цветы, которые оставлены на полу во время вашего отъезда, собрать игрушки, что-то принести или, например, выключить забытый вами утюг из розетки, подключившись к роботу дистанционно.

Из чего сделан робот?

Манипуляторы изначально разрабатывались из фанеры (черновой вариант), а затем уже из углепластика.

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

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

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

О сложностях

Самой сложной задачей в проекте являлось научить робота точно распознавать объекты, лица, выделять какие-то объекты или зоны, а затем искать их во Всемирной паутине. На данный момент эта задача не завершена до конца. Это связано не только с тем, что сама задача сложна в реализации, но и нужно было решить задачу синхронности двух IP- камер, которые передавали изображения по Wi-Fi на компьютер для обработки с секундной задержкой.

Сейчас идет третьи этап разработки проекта, на котором подключилось несколько разработчиков в сфере механики и виртульной реальности (Сергей Кунцевич, Вероника Клюева, Иван Лисуков, Дмитрий Дребезов).

Команда RoboLab занимается сейчас разработкой дополнительной реальности: как для проекта NikaBot, так и для сторонних проектов.

Кому нужен NikaBot?

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

Завершив 3 этап проекта, робота можно будет использовать как аватара. При определенной модернизации робота его можно будет использовать там, где жизнь человека, находится под угрозой. Одно из таких направлений предложил Михаил Мясникович: использовать робота аватара при пожарах.

На фото первая версия робота

Выставки и конкурсы

Робот NikaBot уже представлял RoboLab на разных конкурсах, выставках и мероприятиях. Данный проект стал победителем республиканского конкурса “ТехноИнтеллект”, был приглашен на республиканский конкурс “100 идей для Беларуси”, а автор проекта был приглашен на это мероприятие в качестве председателя экспертной комиссии. Совсем недавно этот проект был приглашен выставку “TIBO 2016”, а также на мероприятие, посвященное открытию Академии робототехники в Орше. На данный момент этот робот выставляется на международной выставке “Бал роботов 2.0”, которая будет проходить до 24 апреля.

О планах

В планах на будущее — это доведение проекта до завершения и полное погружение человека в виртуальную реальность (человек – машина -> аватар).

Разумеется, какие-то технические доработки проекта. Например, в ближайшем будущем планируется изготовить новый корпус: более симпатичный и подходящий для пользователей 21 века.

Команда работает еще над несколькими проектами. Например, “Умный дом”, “Робот гуманоид”, “Экзоскелет” и другие. Поэтому предстоит завершить эти проекты, после чего команда займется новыми разработками и роботами.

К слову, RoboLab приглашает к себе в команду разработчиков железа, конструкторов, программистов, дизайнеров, инженеров, просто энтузиастов. Всех тех, кто хочет заниматься чем-то подобным, кто хочет помогать или ищет помощи в своих проектах. RoboLab может помочь как советом, так и хорошо оборудованной площадкой для работы, возможно элементной базой. Связаться можно по почте: [email protected]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *