Germany | Finland | Saint Petersburg | Drive

Настройка параметров в .INI файле

Опубликовано в FAQ QPILE

Скорее всего Вы сейчас получили Вашего робота. Он укомплектован файлом параметров (с расширением .ini). Этот файл использовался мной при тестировании робота. В файле указаны все параметры, необходимые для работы Вашего робота и включено краткое описание каждого из них. 

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

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

Вот пример простейшего конфигурационного файла робота:



CLASSCODE = EQNL
SECCODE = OGKC
ACCOUNT = L01-00000F00
CLIENTCODE =
VOLUME = 0
LOTSIZE = 5
DIRECTION = BUY
PRICE = 1.3140


Как видно, состоит конфигурационный файл из последовательности строк. Каждая строка начинается с имени параметра, потом идет знак равенства и значение параметра, тестовое или числовое. Например, первая строка задает параметр CLASSCODE, которому присваивается значение класса EQNL.

Заметим, что между именем параметра и знаком равнства, а также после знака равенства могут быть пробелы. Эти пробелы (а также табуляции) будут проигнорированы. Также игнорируются пустые строки, пробелы в начале и конце строки

Параметру CLIENTCODE присвоено пустое значение. Пустое значение - тоже значение.



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


// Параметры аккаунта      
ACCOUNT = L01-00000F12 // Аккаунт
CLIENTCODE =    
       
// Параметры бумаги      
CLASSCODE = EQNL  // Код класса бумаги  
SECCODE = OGKC  // Тикер
       
// Параметры торговли      
 VOLUME  = 0 // Общий объём позиции в лотах
LOTSIZE = 5 // Количество в каждой сделке 
DIRECTION = BUY // Направление торговли
PRICE = 1.3140 // Цена


абсолютно идентичен приведенному ранее



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


[OGK-3]
CLASSCODE = EQNL // Класскод бумаги
SECCODE = OGKC // Тикер
ACCOUNT = L01-00000F12 // Аккаунт
CLIENTCODE =
VOLUME = 0 // Общий объём позиции в лотах
LOTSIZE = 5 // Количество в каждой сделке
DIRECTION = BUY // Направление торговли
PRICE = 1.3140 // Цена


[Si]
CLASSCODE = SPBFUT // Класскод бумаги
SECCODE = SiZ1 // Тикер
ACCOUNT = SP0005564x // Аккаунт
CLIENTCODE =
VOLUME = 0 // Общий объём позиции в лотах
LOTSIZE = 1 // Количество в каждой сделке
DIRECTION = SELL // Направление торговли
PRICE = 30000 // Цена


При разборе этого конфигурационного файла робот получит параметры для торговли и инструментом ОГК-3 и фьючерсом доллар-рубль.

Показалось знакомым? Да, это модифицированный .ini формат Windows.

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

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

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

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

Обязательный параметр, задающий такой промежуток времени
DISABLE_TIME = 13:40:00-14:15:00

Что делать, если таким периодов времени несколько?

Если парамтр подразумевает указание нескольких значений (как в приведенном случае), то можно указывать их через запятую


DISABLE_TIME = 13:40:00-14:15:00, 18:30:40-19:05:10, 10:00:30-10:20:00

или последовательностью параметров с одним и тем же именем


DISABLE_TIME = 13:40:00-14:15:00
DISABLE_TIME = 18:30:40-19:05:10
DISABLE_TIME = 10:00:30-10:20:00


Оба варианта дадут один и тот же результат .



Какие возможности есть еще? К примеру, Ваш робот работает с несколькими фьючерсами одновременно. Все они имеют один и тот же срок экспирации.


[RI]
TICKER = RIZ1
SIZE = 2
[GZ]
TICKER = GZZ1
SIZE = 10
[SR]
TICKER = SRZ1
SIZE = 40


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


SUFFIX = Z1

[RI]
TICKER = RI <SUFFIX>
SIZE = 2
[GZ]
TICKER = GZ <SUFFIX>
SIZE = 10
[SR]
TICKER = SR <SUFFIX>
SIZE = 40

Теперь при смене названия фьючерса достаточно изменить значение одного пользовательского параметра SUFFIX и это значение будет автоматически подставлено роботом везде, где встречается <SUFFIX>



Продолжаем. Нормальный робот (а других я не пишуCool ) обязан протоколировать свою работу. Все свои действия он сохраняет в лог-файле. Имя этого лог-файла тоже может быть задано роботу среди параметров. Например, так
LOG_FILE = c:\myrobot\robot.log

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


LOG_FILE = c:\myrobot\<DATE>.log                                                    // Новый лог-файл ежедневно 

Имя лог файла будет вида c:\myrobot\20101104.log  и будет уникальным для каждого нового торгового дня


LOG_FILE = c:\myrobot\ <DATE>_<HOUR> .log                                  // Новый лог-файл ежечасно

Здесь будет новый лог-файл каждый час.

Да хоть ежесекундо, если Вы ценитель!
LOG_FILE = c:\myrobot\ <DATE>_<HOUR>_<MIN>_<SEC>.log         // Новый лог-файл ежесекундно

Предопределенные параметры. Из задавать не нужно, они известны роботу изначально. Вот их список:

DATE Текущая дата в формате YYYYMMDD
TIME Текущее время в формате HHMMSS
DATETIME  Торговая дата в формате «DD.MM.YYYY HH:MM:SS.sss»
YEAR Год 
MONTH  Месяц 
DAY   День 
DAYOFWEEK  Порядковый номер дня недели (вск – 0 .. суб – 6) 
HOUR  Час 
MIN  Минута 
SEC  Секунда 
MILLISEC  Миллисекунда 
SERVERTIME  Время сервера в формате HHMMSS
TRADEDATE  Дата сервера в формате YYYYMMDD 
DIRECTORY Каталог этого файла
FILENAME  Имя этого файла без расширения
FILEEXT  Расширение этого файла  


Три последних параметра - это каталог ( с именем диска), имя и расширение файла. который Вы редактируете). Для чего они?

Например, имя лог-файла, о котором мы писали раньше, можно задать вот таким способом:

LOG_FILE = <DIRECTORY>\<DATE>.log

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

 

См. также

Добавить комментарий