Программирование - это просто
Advertisement
Главная arrow Исходники arrow Исходники Delphi arrow Для биржевого робота: хранилище котировок
31.05.2020 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
Для биржевого робота: хранилище котировок Печать E-mail
Автор megabax   
16.07.2009 г.
Модуль, содержащий классы для закачки котировок ценных бумаг из текстового файла стандартного формата, хранения из в оператвиной памяти компьютера в виде массива, навигация по массиву котировок, а так-же запись/чтение во внутренний формат.
Исходник модуля
Документая в формате doc
В данном модуле объявлены следующие классы

В данном модуле объявлены следующие классы:

TPASSAbstractDataSource – Шаблон источника данных.

TPASSDataSource – Источник загруженных данных.

TPASSBufferedDataSource – Буферизированный источник данных.

TPASSStreamBufferedDataSource – источник данных, читающий хранящий данные в потоке.

TPASSStreamTimedBufferedDataSource – источник данных, кроме того, что хранящий данные в потоке, еще заточен для хранения данных, лежащих на шкале времени.

TPASSPriceSource – Источник котировок.

 

Описание классов.

 

Класс TPASSAbstractDataSource.

TPASSAbstractDataSource=Class(TObject)
private
    FFields:TStringList;
public
    property Fields:TStringList read FFields;
    function GetFieldNum(AFieldName:string):integer;
end;

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

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

Класс TPASSDataSource

TPASSDataSource=Class(TPASSAbstractDataSource)
 private
     FActive:boolean;
     FCurrentItemIndex:LongInt;
     FCountLoadedBars:LongInt;
     procedure SetActive(AActive:boolean); virtual; abstract;
     procedure SetCurrentItemIndex(ACurrenItemIndex:LongInt); virtual; abstract;
 public
     Property Active:Boolean Read FActive Write SetActive;
     Property CurrentItemIndex:LongInt Read FCurrentItemIndex Write SetCurrentItemIndex;
     Property CountLoadedBars:LongInt Read FCountLoadedBars;
     Function NextItem:boolean; virtual; abstract;
     Function PrevItem:boolean; virtual; abstract;
     Procedure First; virtual; abstract;
     Procedure Last; virtual; abstract;
     Function GetDataByFieldName(AFieldName:String):Double; virtual; abstract;
     Function GetDataByFieldNum(AFieldNum:integer) :Double; virtual; abstract;
     Function GetDataByFieldNameAndIndex(AFieldName:String;Index:LongInt):Double; virtual; abstract;
     Function GetDataByFieldNumAndIndex(AFieldNum:integer;Index:LongInt):Double; virtual; abstract;
 end;

 

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 – период котировок. Загружается автоматически из текстового файла при загрузке, если в нем есть это поле. Данное свойство только для чтения. Таблица соответствия периодов:

Представление

В стандартном формате текстового файла

Месяц

M

Неделя

W

День

D

Час

60

30 мин.

30

15 мин.

15

10 мин.

10

5 мин.

5

1 мин.

1

Тик

0

 

Данное свойство возвращает период в стандартном формате. Для преобразования в модуле объявлены функции 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 г. )
 
« След.
 
© 2020 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги