# 4. Начало работы

Процесс настройки робота несколько отличается для боевых роботов и роботов, доступных под [ролью](introduction.md#roles) `Demo`. В демо-роботах настроены все необходимые маркет-дата подключения, а изменение состояния маркет-дата подключений (`Enabled`/`Disabled`) запрещено. Создание торговых подключений так же запрещено, так как такие роботы не предназначены для боевой торговли. При первичной настройке таких роботов главу [Настройка подключений](getting-started.md#connection_properties) следует пропустить. Напротив, боевой робот, созданный для клиента, изначально не имеет транзакционных подключений и может не иметь активных необходимых маркет-дата подключений к биржам. Поэтому сначала необходимо настроить подключения для получения маркет-даты и добавить транзакционные подключения.

## 4.1. Настройка подключений

Для активации маркет-дата подключений необходимо выбрать виджет `Data Connections`, отметить галочками необходимые маркет-дата подключения, нажать иконку <img src="/bot-doc/docs/00-img/icons/settings_black.svg" width="16" height="16"/> в верхней панели виджета, выбрать робота, для которого активируется подключение и выбрать действие `Enable`.

![Alt text](/bot-doc/docs/00-img/3.1_1_2.jpg)

Для настройки торговых подключений необходимо выбрать виджет `Trade connections`, нажать иконку <img src="/bot-doc/docs/00-img/icons/settings_black.svg" width="16" height="16"/> в верхней панели виджета, выбрать робота, для которого добавляется подключение и выбрать действие `Add`.

![Alt text](/bot-doc/docs/00-img/3.1_2_2.jpg)

В открывшемся окне необходимо заполнить поля параметров подключения.
После заполнения всех полей параметров подключения необходимо нажать `Add connection`.

В столбце `Status` виджетов `Trade connections`, `Data connections` отображаются статусы "потоков данных" соответствующих подключений к биржам. Если все статусы зеленые, то торговое/маркет-дата подключение подключено к бирже, иначе не подключено.

**Важно!** 

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

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


## 4.2. Горячие клавиши

На вызовы основных виджетов и операций в портфелях назначены горячие клавиши. Сочетания горячих клавиш показаны в меню виджетов и в меню `Actions`. 
Полный список горячих клавиш доступен в пользовательском меню справа сверху в пункте Keyboad Shortcuts.


## 4.3. Тelegram-бот

Для телеграм-оповещений используется телеграм-бот [FKVikingBot](https://t.me/FKVikingBot). Для подключения телеграм-бота необходимо выполнить следующие действия:

- добавить [FKVikingBot](https://t.me/FKVikingBot) в свой телеграм-аккаунт, перейдя по ссылке и нажав кнопку "START" в диалоге общения с телеграм-ботом;
- скопировать или записать `TELEGRAM ID` присланный телеграм-ботом;
- открыть меню настроек под иконкой пользователя и указать там свой `TELEGRAM ID`.


![Doc](/bot-doc/docs/00-img/telegram.png)


## 4.4. Настройка портфелей

Для того, чтобы создать портфель, необходимо выбрать виджет `Portfolios table` и нажать `ADD` 

![Doc](/bot-doc/docs/00-img/3.3_1_1.jpg)

В открывшемся окне в выпадающем списке необходимо выбрать робота, в котором будет создан новый портфель, в поле `Portfolio name` написать имя портфеля (рекомендуется задавать говорящие имена, чтобы потом было проще ориентироваться при большом количестве портфелей, поменять имя портфеля потом будет нельзя) и нажать кнопку `Submit`.

![Doc](/bot-doc/docs/00-img/3.3_1_2.jpg)

Для добавления биржевых инструментов необходимо в разделе `AVAILABLE SECURITIES` в выпадающем списке в поле `Exchange` выбрать биржу/рынок, нажать кнопку `Reload security list from exchanges`. Далее биржевой инструмент следует искать по его `SecKey` в одноименном поле. После того, как нужный инструмент найден, нажимаем иконку <img src="/bot-doc/docs/00-img/icons/plus.svg" width="16" height="16"/>

![Doc](/bot-doc/docs/00-img/3.3_1_3.jpg)

После этого выбранный инструмент отобразится в разделе `PORTFOLIO SECURITIES`

![Doc](/bot-doc/docs/00-img/3.3_1_4.jpg)

Аналогичным образом в портфель добавляются остальные инструменты. После добавления всех инструментов в портфель необходимо нажать кнопку `Apply`. 
После этого откроется окно с настройками портфеля. [Параметры портфеля](params-description.md#p) задаются на вкладке `Portfolio settings`, [параметры инструментов портфеля](params-description.md#portfolio-instrument-parameters) задаются на вкладке `Securities`. Подробное описание параметров можно прочитать нажав на иконку <img src="/bot-doc/docs/00-img/icons/help.svg" width="16" height="16"/>. Для параметров инструментов портфеля иконка <img src="/bot-doc/docs/00-img/icons/help.svg" width="16" height="16"/> находится в выпадающем списке: 

![Doc](/bot-doc/docs/00-img/3.3_1_5.jpg)
 
Перечеркнутый инструмент в портфеле означает, что дата экспирации финансового инструмента наступит через 3 или менее суток (исключая неторговые дни). Если портфель содержит хотя бы один такой инструмент, то его имя (`Name`) тоже будет отображаться перечеркнутым.

Для реальной (не виртуальной) торговли в поле [Client code](params-description.md#s.client_code) необходимо вместо значения `virtual` выбрать транзакционное подключение, которое создали ранее.

Для каждого портфеля можно настроить расписание включения/выключения торговли, перейдя на вкладку [Timetable](params-description.md#p.use_tt).

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

Гайд с подробным описанием настройки портфеля можно посмотреть, перейдя по [ссылке](https://instructions.fkviking.com/portfolio_creation_guide.pdf)
 

## 4.5. Управление портфелями

Команды управления портфелями находятся в выпадающем списке меню `ACTIONS` виджета `Portfolios table`:

- **Start portfolios** <a id="portfolio_actions.start_portfolios"></a> – включает торговлю по выбранным портфелям, устанавливая флаги [re_sell](params-description.md#p.re_sell) и [re_buy](params-description.md#p.re_buy). При настройке расписания торгов с помощью параметра [Timetable](params-description.md#p.use_tt) включение торговли с помощью команды  `Start portfolios` не работает.

- **Stop portfolios** <a id="portfolio_actions.stop_portfolios"></a> - выключает торговлю по выбранным портфелям, снимая флаги [re_sell](params-description.md#p.re_sell) и [re_buy](params-description.md#p.re_buy). Заявки по первой ноге снимаются, заявки по второй ноге остаются висеть в рынке и переставляются в соответствии с настройками параметров [SL](params-description.md#s.sl) и [Timer](params-description.md#s.timer). При настройке расписания торгов с помощью параметра [Timetable](params-description.md#p.use_tt) выключение торговли с помощью команды `Stop portfolios` не работает.

- **Hard stop** <a id="portfolio_actions.hard_stop"></a> - останавливает торговлю по выбранным портфелям (снимаются галочки [re_sell](params-description.md#p.re_sell), [re_buy](params-description.md#p.re_buy)), пытается снять выставленные заявки по обеим ногам и отключает расписание (снимается флаг `Use timetable`). Это полная остановка торговли по выбранным портфелям, после которой не будет никаких выставлений или переставлений заявок ни по одному из инструментов портфелей. 

    **Важно!** Если в некоторых портфелях были добавлены формулы в которых используется программное управление флагами [re_sell](params-description.md#p.re_sell) и [re_buy](params-description.md#p.re_buy), то торговля может продолжиться в соответствии с настроенными формулами.

- **Stop formulas** <a id="portfolio_actions.stop_formulas"></a> - останавливает торговлю по выбранным портфелям (снимаются галочки [re_sell](params-description.md#p.re_sell), [re_buy](params-description.md#p.re_buy)), пытается снять выставленные заявки по обеим ногам и отключает расписание (снимается флаг `Use timetable`).
Так же отключаются все расчёты по формулам:
    - снимаются флаги портфеля [Custom trade](params-description.md#p.custom_trade) и [Extra formulas](params-description.md#p.ext_formulas).
    - Если [Shift mode](params-description.md#p.shift_mode) был равен `C++ formula`, то `Stop formulas` переключает его в режим `Standard`.
    - Для каждого из инструментов портфеля в полях [Count type](params-description.md#s.count_type) и [Ratio type](params-description.md#s.ratio_type) устанавливается тип, соответствующий константному значению.
      
Для дальнейшего использования формул включать их нужно самостоятельно.

- **Reset statuses** <a id="portfolio_actions.reset_statuses"></a> - сброс внутренних статусов всех заявок всех инструментов выбранных портфелей. Бывают ситуации, когда по какой-то причине биржа не присылает обновление информации по заявке или присылает в формате, не соответствующем документации биржи, а потому не поддерживаемом роботом. Например, робот выставил заявку, заявка выставилась, робот отправил запрос на снятие, биржа эту заявку сняла, но информацию о снятии не прислала. В таком случае реальный статус заявки на бирже и внутренний статус заявки в роботе будут отличаться, а так как робот ожидает ответ на свой запрос, то заявка в роботе зависнет в статусе "снимается".
Пользоваться этой кнопкой можно ТОЛЬКО В КРАЙНИХ СЛУЧАЯХ, когда торговля по портфелю отключена и Вы уверены что нет ни одной активной заявки по данному портфелю, в противном случае робот потеряет активные заявки, что приведет к неправильной позиции по финансовым инструментам в роботе. 

    **Важно!**  Обратите внимание, что в отличие от двойного клика по полям [Sell status](params-description.md#p.sell_status) и [Buy status](params-description.md#p.buy_status) в таблице виджета `Portfolios table` при использовании данной кнопки сбрасываются внутренние статусы всех заявок обеих ног портфеля.
    
    **Важно!**  После использования этой кнопки необходимо убедиться, что нет никаких активных заявок на бирже и позиции на бирже соответствуют тем, что в роботе.

- **To market** <a id="portfolio_actions.to_market"></a> - принудительное выравнивание позиций выбранных портфелей. Поведение полностью совпадает с использованием кликера [To market](params-description.md#p.to_market) на выбранных портфелях.

- **To0** <a id="portfolio_actions.to0"></a> - ограничивает торговлю по выбранным портфелям, позволяя торговать только в сторону закрытия позиции. У выбранных портфелей устанавливаются флаги [To0](params-description.md#p.to0).

- **Group TradingDays** <a id="portfolio_actions.trading_days"></a> - позволяет задать торговые дни для выбранных портфелей. Поведение аналогично заданию торговых дней в настройках каждого портфеля на вкладке [Timetable](params-description.md#p.trading_days) с той лишь разницей, что к каждому портфелю будут применены только внесенные изменения. Т.е. если у двух портфелей были разные списки торговых дней: у одного понедельник, вторник, пятница, а у другого понедельник, вторник, пятница, суббота, воскресенье, то если через данный виджет вы можете добавить в оба списка четверг, списки при этом равными не станут.
    
    **Важно!**  Этот виджет изменяет только список торговых дней, интервалы, задающие время торговли, и сама галка [Timetable](params-description.md#p.use_tt) изменены не будут.

- **Group Timetable** <a id="portfolio_actions.timetable"></a> - позволяет задать торговые интервалы выбранных портфелей или скопировать торговые интервалы из существующего расписания какого-либо портфеля. Поведение аналогично заданию торговых интервалов в настройках каждого портфеля на вкладке [Timetable](params-description.md#p.use_tt), но дополнительно позволяет скопировать торговые интервалы из другого портфеля.

    ![Doc](/bot-doc/docs/00-img/group_timetable.gif)

- **Remove** <a id="portfolio_actions.remove_portfolio"></a> - удаляет выбранные портфели.

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

- **Clone portfolio** <a id="portfolio_actions.clone_portfolio"></a> - клонирует выбранный портфель в том роботе, в котором находится исходный клонируемый портфель. Для переноса портфелей между разными роботами рекомендуем воспользоваться [Export portfolio \ Import portfolio](portfolio_actions.disable_portfolio).

    **Важно!**  При клонировании портфеля не клонируются значения, которые существуют только в виде переменных внутри кода формул, в том числе индикаторы и их состояние.
    
- **Disable portfolio \ Enable portfolio** <a id="portfolio_actions.disable_portfolio"></a><a id="portfolio_actions.enable_portfolio"></a>  - исключает выбранные портфели из расчётов или возвращает выбранные портфели обратно в обычный режим работы, снимая и устанавливая флаг [Disabled](params-description.md#p.disabled). Не стоит путать эту возможность с включением и выключением торговли по портфелю. Использование `Disable` позволяет исключить неиспользуемый в данный момент портфель из расчётов. По всем инструментам портфеля перестанут приходить цены и строиться стаканы (только если инструменты не используются в других портфелях). Редактирование параметров портфеля в статусе `Disable` невозможно. Будьте внимательны! Перед тем, как перевести портфель в режим `Disabled`, убедитесь, что торговля по портфелю выключена, заявки по инструментам портфеля не висят на бирже и не выставляются в данный момент, кроме того, проверьте, что поля портфеля и его инструменты не используются в формулах других портфелей. Также следует учитывать, что возвращение портфеля из состояния `Disabled` в рабочее состояние, может привести к переоткрытию торгового стакана.

- **Export portfolio \ Import portfolio** <a id="portfolio_actions.export_portfolio"></a><a id="portfolio_actions.import_portfolio"></a>  - экспортировать выбранные портфели из робота на компьютер в виде .ini файла или импортировать портфели в робота.

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


## 4.6. Графики

Виджеты сделаны на базе графика TradingView. 
При нажатии по иконке <img src="/bot-doc/docs/00-img/icons/chart-2.svg" width="16" height="16"/>  в столбце `Chart` виджета [Portfolios table](interface.md#portfolios_table) будет открыт один из виджетов [Portfolios historical chart](interface.md#portfolios_historical_chart) или [Portfolios realtime chart](interface.md#portfolios_realtime_chart) в зависимости от того, ведется ли запись истории параметров портфеля.

**Режим RealTime по портфелям без записи истории параметров**

График открывается с предустановленными показателями параметров портфеля [Sell](params-description.md#p.sell), [Buy](params-description.md#p.buy), [Lim_sell](params-description.md#p.lim_s), [Lim_buy](params-description.md#p.lim_b). Менять и добавлять другие показатели нельзя. Таймфрейм графика недоступен для изменения. Графики начинают отрисовываться с момента открытия виджета. При перезагрузке страницы данные графиков не сохраняются. 

**Режим Historical по портфелям cо включенной записью истории параметров** 

График открывается с предустановленными показателями параметров  портфеля [Sell](params-description.md#p.sell), [Buy](params-description.md#p.buy), [Lim_sell](params-description.md#p.lim_s), [Lim_buy](params-description.md#p.lim_b). Данные параметры можно удалить или заменить. Запись истории регулируется пользователем через параметр `Save history` в расписании на закладке [Timetable](params-description.md#p.use_tt) в настройках портфеля. График показывается за отображаемый период и исторические данные подгружаются при прокрутке вправо до момента начала сохранения истории. Для рынков MOEX следует придерживаться рыночного расписания, чтобы не было не информационных пробелов в истории. Существует лимит на количество портфелей, для которых доступно сохранение истории. По умолчанию лимит составляет 3 портфеля. Для получения консультации по увеличению лимита следует обратиться в техническую поддержку. График можно просматривать в разных таймфреймах, смена таймфрейма слева вверху. Выбранные показатели можно удалить с графика и добавить другие, доступные в выпадающем списке параметры любого портфеля пользователя. Добавление инструментов иконкой плюса слева вверху. Список можно посмотреть в поле `Field`.

![Doc](/bot-doc/docs/00-img/3.5_1(1).jpg) 

На графике всегда присутствует главный инструмент, который нельзя удалить, а можно только поменять через меню добавления инструмента на вкладке `Main`.
Для графиков доступна значительная часть инструментария TradingView. 
Есть возможность добавить несколько портфелей, по которым ведётся запись истории, на один график. Максимальная продолжительность истории графика составляет 3 месяца. Далее она начинает плавно затираться, начиная с самых старых данных. Допускается одновременное открытие до 10-ти виджетов с графиками. 

![Doc](/bot-doc/docs/00-img/3.5_2.jpg) 

Настроенное оформление сохраняется, пока открыт виджет графика, а также при перезагрузке страницы и переключении Workspaces.
Следует понимать, что данные для отрисовки графика это некий срез on-line данных по параметрам, по которым торгует робот. Данные поступают в среднем 3 раза в секунду, поэтому если за 0,3 секунды были разные значения, то на графике отобразится последнее.


## 4.7. Двухфакторная аутентификация

Для повышения безопасности учетных записей пользователей на платформе реализована функция двухфакторной аутентификации (2FA). По умолчанию 2FA отключена.

**Активация 2FA:**

***Установка приложения:*** Установите на смартфон приложение-аутентификатор, поддерживающее протокол Time-based One-time Password (TOTP), например Google Authenticator, Authy или Microsoft Authenticator.

![Doc](/bot-doc/docs/00-img/3.6_1.png) 

***Настройка на платформе:*** Войдите в свой аккаунт, перейдите в меню пользователя, затем в раздел `Settings` и далее в `Security`. Нажмите кнопку `Enable 2FA`.

![Doc](/bot-doc/docs/00-img/3.6_2.png) 

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

![Doc](/bot-doc/docs/00-img/3.6_3.png) 

**Особенности использования 2FA:**

***Время на устройстве:** Убедитесь, что время на вашем устройстве синхронизировано с точным временем, так как это критично для корректной работы TOTP.

***Ограничение по устройствам:*** В разделе `Security` можно просмотреть список подтвержденных устройств. Одновременно может быть не более 20 таких устройств.

![Doc](/bot-doc/docs/00-img/3.6_4.png) 

***Отключение 2FA:*** Для деактивации 2FA нажмите кнопку `Disable 2FA` в разделе `Security`.

![Doc](/bot-doc/docs/00-img/3.6_5.png) 

**Дополнительная информация:**

***Срок действия кода:*** На ввод 2FA-кода дается 120 секунд; по истечении этого времени соединение будет закрыто.

***Периодичность подтверждения:*** Подтверждать 2FA необходимо каждые 14 дней.

***Блокировка при ошибках:*** При вводе неправильного 2FA-кода 3 раза подряд ввод с данного устройства будет заблокирован на 10 минут.

***Уникальность кода:*** Один и тот же 2FA-код нельзя использовать более одного раза подряд. Если код уже был использован, дождитесь генерации нового для следующей операции.

***Подтверждение при активации:*** При включении 2FA секретный ключ действителен в течение 10 минут. Если за это время не подтвердить настройку, процесс необходимо будет повторить.

***Завершение сессий:*** При активации 2FA все активные сессии пользователя будут завершены.

***Выход из системы:*** Чтобы "забыть" 2FA для данного устройства, выполните выход из аккаунта (лог-аут).

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

**Рекомендуется настроить двухфакторную аутентификацию для повышения безопасности вашего аккаунта**

## 4.8. Белый список IP-адресов.

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

![Doc](/bot-doc/docs/00-img/wl_ips.jpg)

Настройка находится в меню пользователя, затем раздел `Settings` и далее в `Security`.

Необходимо определить список IP-адресов, с которых нужен доступ, затем указать их в поле `Enter IP address` и нажать `Add`.

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

Если список пуст, то доступ разрешён с любых IP-адресов. Если в списке присутствует хотя бы 1 IP-адрес, доступ разрешён только с него.

Длина списка - до 10 ip-адресов.

После добавления всех необходимых IP-адресов, необходимо сохранить изменения через кнопку `Apply Changes`.

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