Для биржевого робота: хранилище котировок |
![]() |
![]() |
Автор megabax | |||||||||||||||||||||||
16.07.2009 г. | |||||||||||||||||||||||
Модуль, содержащий классы для закачки котировок ценных бумаг из текстового файла стандартного формата, хранения из в оператвиной памяти компьютера в виде массива, навигация по массиву котировок, а так-же запись/чтение во внутренний формат. Исходник модуля Документая в формате doc В данном модуле объявлены следующие классы: TPASSAbstractDataSource – Шаблон источника данных. TPASSDataSource – Источник загруженных данных. TPASSBufferedDataSource – Буферизированный источник данных. TPASSStreamBufferedDataSource – источник данных, читающий хранящий данные в потоке. TPASSStreamTimedBufferedDataSource – источник данных, кроме того, что хранящий данные в потоке, еще заточен для хранения данных, лежащих на шкале времени. TPASSPriceSource – Источник котировок.
Описание классов.
Класс TPASSAbstractDataSource. TPASSAbstractDataSource=Class(TObject) Функция GetFieldNum предназначена для того, что бы по названию поля найти ее местоположение в списке. Свойство Fields представляет из себя список полей объекта источника данных. Оно только для чтения, так как список полей жестко задан и заполняется в момент создания объекта. Класс TPASSDataSource TPASSDataSource=Class(TPASSAbstractDataSource) Active – это свойство показывает, активен ли в данным момент источник данных. Если активен – из него можно получить данные. CurrentItemIndex - указатель на текущий элемент данных. CountLoadedBars - количество элементов данных. Только для чтения. Методы NextItem, PrevItem, First, Last предназначены для навигации по данным. Методы GetDataByFieldName, GetDataByFieldNum, GetDataByFieldNameAndIndex, GetDataByFieldNumAndIndex - предназначены для обращения к полям источника данных. GetDataByFieldName, GetDataByFieldNum - по текущему указателю, GetDataByFieldNameAndIndex, GetDataByFieldNumAndIndex - по заданному номеру элемента данных. Класс TPASSBufferedDataSource
TPASSBufferedDataSource=Class(TPASSDataSource) private FBuffer:PBufferArray; FPointerSize:LongInt; procedure SetCurrentItemIndex(ACurrentItemIndex:LongInt); override; public Property PointerSize:LongInt Read FPointerSize Write FPointerSize; Function NextItem:boolean; override; Function PrevItem:boolean; override; Function Add:Boolean; virtual; Procedure First; override; Procedure Last; override; end;
Свойство PointerSize – размер пункта. Функция Add – добавляет пустой элемент в конец списка данных и перемещает указатель CurrentItemIndex на него.
Класс TPASSStreamBufferedDataSource
TPASSStreamBufferedDataSource=class(TPASSBufferedDataSource) private procedure SaveHeader(AStream:TStream); virtual; procedure LoadHeader(AStream:TStream); virtual; end;
Класс TPASSStreamTimedBufferedDataSource
TPASSStreamTimedBufferedDataSource=class(TPASSStreamBufferedDataSource) public function SearchIndexAsDate(ADateTime:TDateTime):integer; end;
Функция SearchIndexAsDate – осуществляет поиск свечи с заданной датой. Если находит данную свечу, тогда CurrentItemIndex встает на не и функция возвращает 1. Если данную свечу не находит, но есть свеча со временем больше данной, а перед ней меньше данной, то функция возвращает -1 и встает на свечу с большим временем. Если все свечи с датой, меньше заданной – возвращает 0. Указатель при этом встает на последнюю свечу.
Класс TPASSPriceSource
Класс источник котировок. TPASSPriceSource=Class(TPASSBufferedDataSource) private FFilePath:string; FTiker:string; FPeriod:string; FStream:TStream; FHaveHeader, FHaveTicker, FHavePer:boolean; FName:string; procedure SetActive(AActive:boolean); virtual; procedure SetFilePath(AFilePath:string); function GetSignature:Str3; function GetVersion:real; procedure ShiftBufferRight(index,count:LongInt); public property Name:string read FName write FName; property Active:Boolean Read FActive Write SetActive; constructor Create(AFilePath:string;AActive:boolean); property FilePath:string Read FFilePath Write SetFilePath; property Tiker:string read FTiker write FTiker; property Period:string read FPeriod; property Stream:TStream read FStream; destructor Destroy; override; procedure SetBarData(ABarData:TBarStructure); virtual; function GetBarData:TBarStructure; virtual; function GetBarDataByIndex(Index:LongInt):TBarStructure; virtual; function GetDataByFieldName(AFieldName:String):Double; virtual; function GetDataByFieldNum(AFieldNum:integer) :Double; virtual; function GetDataByFieldNameAndIndex(AFieldName:String;Index:LongInt):Double; virtual; function GetDataByFieldNumAndIndex(AFieldNum:integer;Index:LongInt):Double; virtual; function SearchIndexAsDate(ADateTime:TDateTime):integer; procedure LoadDataFromTextFile(AFilePath:string); procedure LoadBarFromTextFile(var AStruct:TBarStructure; var VF:TextFile); procedure LoadDataFromStream(AStream:TStream); procedure LoadBarFromStream(var AStruct:TBarStructure; AStream:TStream); procedure SaveDataToStream(AStream:TStream); procedure SaveBarToStream(AStruct:TBarStructure; AStream:TStream); procedure SaveBarToTextFile(var VF:TextFile; AStruct:tBarStructure); procedure SaveDataToTextFile(AFilePath:string); procedure SaveAllData; function InsertBarData(ABarData:TBarStructure):boolean; virtual; function InsertEmptyBarBefore(index:LongInt):boolean; virtual; procedure Delete(index:LongInt); end;
Свойство Name – название инструмента, например «Акции РАО ЕЭС обыкновенные». Конструктор Create создает объект из полного имени файла (включая путь) и флага активности. Свойство FilePath – полное им файла (включая путь). Свойство Tiker – биржевой код финансового инструмента. Для акции РАО ЕЭС обыкновенных это EESR. Тикеры можно узнать у брокера или в биржевом терминале. Если объект загружен из текстового файла, и в нем есть поле Tiker, то свойство Tiker устанавливается автоматически. Свойство Period – период котировок. Загружается автоматически из текстового файла при загрузке, если в нем есть это поле. Данное свойство только для чтения. Таблица соответствия периодов:
Данное свойство возвращает период в стандартном формате. Для преобразования в модуле объявлены функции PerPrToStr и StrToPerPr. Свойство Stream – ссылка на внутренний поток ввода вывода. Данный поток создан как TFileStream. Свойство только для чтения. Процедура SetBarData – устанавливает поля текущей свечи. Функция GetBarData – читает поля текущей свечи. Функция GetBarDataByIndex - читает поля свечи по индексу. Методы NextItem, PrevItem, First, Last предназначены для навигации по данным. Методы GetDataByFieldName, GetDataByFieldNum, GetDataByFieldNameAndIndex, GetDataByFieldNumAndIndex - предназначены для обращения к полям источника данных. GetDataByFieldName, GetDataByFieldNum - по текущему указателю, GetDataByFieldNameAndIndex, GetDataByFieldNumAndIndex - по заданному номеру элемента данных. Процедура LoadDataFromTextFile считывает данные из текстового файла стандартного формата. Старые данные при этом затираются. Процедура LoadBarFromTextFile – считывает одну свечу из текстового файла и помещает ее в параметр AStruct. Процедура LoadDataFromStream – читает данные из потока. Старые данные затираться. Процедура LoadBarFromStream – считывает одну свечу из потока и помещает ее в параметр AStruct. Процедура SaveDataToStream – записывает данные в поток. Процедура SaveBarToStream – записывает переданную в параметрах свечу в поток. Процедура SaveBarToTextFile – записывает переданную в параметрах свечу в текстовый файл. Процедура SaveDataToTextFile – записывает данные в текстовый файл. Процедура SaveAllData – записывает данные в файл данные, указанный в свойстве FilePath. Функция InsertBarData – вставляет в данные свечу. Если свеча с этой датой существует, замещает ее. Иначе вставляет в нужное место. Функция InsertEmptyBarBefore – вставляет свечу перед той, на которую указывает индекс в параметре. Процедура Delete – удаляет указанную свечу.
|
|||||||||||||||||||||||
Последнее обновление ( 17.07.2009 г. ) |
« След. |
---|