Skip to content

Latest commit

 

History

History

signalOrders

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Скрипт, выполняющий команды, прочитанные из текстовых файлов.

Принцип работы.

При старте скрипт сканирует файл tickers.csv, в котором задается список инструментов, по которым будут выполнятся команды. Формат файла:
sec_code; strategy; interval; account; client_code; trade_qty; max_loss_profit

Периодически (параметр: FILE_SCAN_PERIOD) сканируется каталог (параметр: FILES_PATH) на предмет новых файлов. Если в каталоге появился новый текстовый файл, скрипт читает его, разбирает команду и в зависимости от результата перемещает файл в каталог обрабоанных файлов (параметр: PROCESSED_FILES_PATH) или необратанных файлов (параметр: NON_PROCESSED_FILES_PATH). Фафлы - это простые текстовые файлы, определенного формата (описано ниже).

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

Для чтения почты приложен проект C# почтового клиента. Собранный файл ReciveEmail.exe. Для отправки почты используется проект https://github.com/nick-nh/SendEmail. Собранный файл SendEmail.exe

В архиве email_bin.zip содержится набор собранных файлов:

Файл ReciveEmail.exe - программа чтения почты Файл ReciveEmail.ini - файл настроек получения почты, содержит настройки получения и сохранения почты.

В файле ReciveEmail.ini есть параметр "emails_folder" - путь к каталогу, куда записываются полученные файлы почты. В настройках скрипта необходимо указать тот же пусть к каталогу "FILES_PATH", чтобы скрипт сканировал новые файлы в этом же каталоге. В структуре каталогов скрипта уже сделана папка "inbox". Она по умолчанию назначена для приема писем в скрипте. (Настройки скрипта изменяются в самом файле скрипта signalOrders.async.lua. Его можно открыть любым текстовым редактором)

Файл SendEmail.exe - программа отправки почты Файл SendEmail.ini - файл настроек отправки почты

Архив необходимо распаковать в каталог скрипта (без дополнительных каталогов)

Порядок запуска

Запустить почтовый клиент - ReciveEmail.exe. Добавить в терминал, в список доступных скриптов файл signalOrders.async.lua и запустить.

Параметры скрипта:

--Сдвиг времени относительно времени биржи
TIME_ZONE                       = 0

--Интервал обновления данных с текущим состоянием c сервера брокера (сек.)
--Задается в настройках терминала в пункте меню «Система» / «Настройки» / «Основные настройки» / «Программа» на вкладке «Получение данных»
--Если время сервера больше времени последнего сообщения чем период опроса, то связь с сервером брокера еще не установлена
-- По умолчанию -1 не контролировать
SERVER_DATA_CYCLE_TIME          = -1

--Путь к файлам с данными
FILES_PATH                      = Path..'\\inbox'
--Путь к архиву файлов с данными
ARCHIVE_FILES_PATH              = Path..'\\history'
--Путь к обработанным файлам с данными
PROCESSED_FILES_PATH            = Path..'\\processed'
--Путь к не обработанным файлам с данными
NON_PROCESSED_FILES_PATH        = Path..'\\non-processed'

--Структура файла разрешенных для торговли инструментов
SEPARATOR                       = ';'
TICKERS_FILE_NAME               = 'tickers.csv'
TICKERS_FILE_STRUCT             = 'sec_code;strategy;interval;account;client_code;trade_qty;max_loss_profit'

--Корректный email-adress. Если письмо не от корректного адреса, то оно не обрабатывается
CORRECT_EMAIL_ADRESS            = '[email protected]'

-- Отправлять ответный email
-- 1 - да
-- 0 - нет
-- Важно. Для отправки почты необходимо заполнить в файле SendEmail.ini настройки аккаунта и почтового сервера
-- После настройки необходимо убедиться в работоспособности программы SendEmail.exe, выполнив ее. Произойдет попытка отправки почты
-- на указанный сервер. Текст письма берется из файла email_text.txt. В данный файл робот будет записывать очередное сообщение для отправки.
SEND_RESPONSE_EMAIL             = 0
EMAIL_TEXT_FILE_PATH            = Path..'\\email_text.txt'
SEND_EMAIL_EXE_PATH             = Path..'\\SendEmail.exe'

-- Номера команд для старта|остановки|закрытия
STOP_COMMAND_STRATEGY           = 5
START_COMMAND_STRATEGY          = 6
CLOSE_COMMAND_STRATEGY          = 7

--Период сканирования новых файлов в сек. Установливать значение больше 0-5 сек. Т.к. слишком частое сканирование - это мелькание черного окна терминала.
FILE_SCAN_PERIOD                = 10

--Код класса инструментов по умолчанию для определения статуса торговой сессии
CLASS_CODE                      = 'SPBFUT'

-- Классы инструментов для считывания параметров инструментов
TRACK_CLASS_CODES               = 'TQBR|QJSIM|SPBFUT'

--Время автоматического включение робота в режим старт торговли по всем инструментам: (0-выключено, либо время в формате "ЧЧ:ММ:CC")
--(Кавычки при указании времени обязательны)
-- При наступлении указанного времени скрипт начинает обрабатывать сигналы
-- Если установлен 0, то запуск производится по команде
AUTO_START_TIME                 = '10:00:00'

--Время автоматического окончания торговли по всем инструментам: (0-выключено, либо время в формате 'ЧЧ:ММ:CC')
--(Кавычки при указании времени обязательны)
-- При наступлении указанного времени скрипт заканчивает обрабатывать сигналы
-- Если установлен 0, то остановка производится по команде
END_TRADE_TIME                  = '23:49:30'

--Режим торгов
-- 0 - Т0, 1 - Т1, 2 - Т2
-- Для демо-счета, обычно = 0
-- На реальном счете для Акций - Т2,
-- Для фьючерсов - Т0. Это важно.
-- Если указать некорректное значение робот не сможет получить текущий баланс позиции и доступные денежные средства.
LIMIT_KIND                      = 0

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

--При развороте делить вход в позицию на два этапа. Сначала закрывать прошлую позицию, потом входить в новую.
--Это необходимо при торговле на границе по лимитам денежных средств
-- Значения:
-- 1 - делить
-- 0 - не делить, выходить по рынку единой заявкой
SPLIT_REVERSE_ORDER             = 1

-- Признак ведения лога.
-- 1 - выводить
-- 0 - нет
LOGGING                         = 1

Назначены числовые коды стратегий и команд

  • 1 - лонг, страетегия Long_Once_Per_Bar
  • 2 - лонг, страетегия Long_Per_Bar_Close
  • 3 - шорт, стратеги Short_Once_Per_Bar
  • 4 - шорт, стратеги Short_Per_Bar_Close
  • 5 - стоп торговли по всем инструментам по всем стратегиям
  • 5 - стоп торговли по конкретному инструменту по всем стратегиям
  • 6 - старт торговли по всем инструментам по всем стратегиям
  • 6 - старт торговли по конкретному инструменту по всем стратегиям
  • 7 - закрытие всех позиций по всем инструментам
  • 7 - закрытие всех позиции по конкретному инструменту

Если задан параметр AUTO_START_TIME, то по наступлению времени все инструменты переходят в рабочее состояние и готовы отрабатывать команады. Если не задан, то чтобы запустить инструмент(ы) необходимо подать команду 6.

Если задан параметр END_TRADE_TIME, то по наступлению времени все инструменты переходят в остановленное состояние и прекращают отрабатывать команады. Если не задан, то чтобы остановить инструмент(ы) необходимо подать команду 7.

Формат команд:

<номер команды>, <код инструмента | ALL>, <имя стратегии (команды)> [, <разрешенный интервал стратегии>], <корректный email>

Если письмо не от корректного адреса, то она не обрабатывается Если команда не от разрешенного интервала, то она не обрабатывается

Примеры:

<1>, <SiU9>, <Long_Once_Per_Bar>, <Interval_m3>, <[email protected]> = лонг по стратегии 1
<2>, <SiU9>, <Long_Per_Bar_Close>, <Interval_m3>, <[email protected]> = лонг по стратегии 2
<3>, <SiU9>, <Short_Once_Per_Bar>, <Interval_m3>, <[email protected]> = шорт по стратегии 3
<4>, <SiU9>, <Short_Per_Bar_Close>, <Interval_m3>, <[email protected]> = шорт по стратегии 4
<5>, <ALL>, <Stop>, <[email protected]>   = стоп торговли по всем инструментам по всем стратегиям
<5>, <SRZ9>, <Stop>, <[email protected]>  = стоп торговли по SRZ9 по всем стратегиям
<6>, <ALL>, <Start>, <[email protected]>  = старт торговли по всем инструментам по всем стратегиям
<6>, <SRZ9>, <Start>, <[email protected]> = старт торговли SRZ9 по всем стратегиям
<7>, <ALL>, <Close>, <[email protected]>  = закрытие всех позиций по всем инструментам
<7>, <SRZ9>, <Close>, <[email protected]> = закрытие всех позиции по SRZ9

---------------------------------------------------------------

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