.
Описание библиотеки PASSIndicators.pas версия 1.1
Автор megabax   
19.10.2010 г.
New Page 1

(С) Шуравин Александр www.easyprog.ru

Описание библиотеки PASSIndicators.pas версия 1.1

Скачать библиотеку с описанием.  

История изменения библиотеки

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

TPASSIndicator – абстрактный класс индикатора.

TPASSAverageIndicator – абстрактный класс индикатора, использующего скользящие средние (напр. MA, ADX, Bollinger).

TPASSMASimple индикатор Moving average simple

TPASSADX – индикатор ADX

TPASSBBиндикатор Bollinger bunds.

TPASSMomentum – Индикатор «momentum» - скорость изменения котировок

 

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

 

Класс TPASSIndicator

 

  TPASSIndicator=Class(TPASSAbstractDataSource)

  private

    FParameters:TPASSParameters;.

    FPriceSource:TPASSPriceSource;

    procedure SetPriceSource(APriceSource:TPassPriceSource);

    procedure UpdateParameters; virtual; abstract;

  public

    constructor Create;

    property PriceSource:TPASSPriceSource read FPriceSource write SetPriceSource;

    procedure SetParameterByName(AParameterName:string; AParameterValue:Variant); virtual;

    function GetParameterByName(AParameterName:string):Variant; virtual;

    function GetResultByFieldName(AFieldName:string):double;  virtual; abstract;

    function GetResultByFieldNameAndIndex(FieldName:string; Index:LongInt):double;  virtual; abstract;

    function GetResultByFieldNum(AFieldName:integer):double; virtual; abstract;

    function GetResultByFieldNumAndIndex(FieldName:Integer; Index:LongInt):double; virtual; abstract;

    procedure First; virtual; abstract;

    procedure Last; virtual; abstract;

    function Next:boolean; virtual; abstract;

    function Prev:boolean; virtual; abstract;

    function GetIndicatorName:string; virtual; abstract;

    Destructor Destroy; virtual;

  end;

 

Свойство PriceSource – является ссылкой на объект источник котировок, по которым происходит расчет индикатора.

 Процедура SetParameterByName – устанавливает параметр индикатора по его имени.

Функция GetParameterByName – возвращает значение параметра по его имени.

Функция GetResultByFieldName – возвращает значение индикатора по имени поля и текущему указателю в источнике котировок.

Функция GetResultByFieldNameAndIndex – возвращает значение индикатора по имени поля и конкретному указателю (номеру свечи).

Функция GetResultByFieldNum – возвращает значение индикатора по номеру поля и текущему указателю в источнике котировок.

Функция GetResultByFieldNumAndIndex – возвращает значение индикатора по номеру поля и конкретному указателю (номеру свечи).

Методы First, Last, Next, Prev – служат для навигации по данным источника котировок (изменяют значение текущего указателя).

Функция GetIndicatorName – возвращает название индикатора.

Процедура UpdateParameters – объявлена в секции private. Данный метод служит для обновления внутренних переменных при изменении значений параметров.

 

 

Класс TPASSAverageIndicator

 

  TPASSAverageIndicator=Class(TPASSIndicator)

  private

     FBuffer:PBufferDoubleArray;

     FBufferSize:LongInt;

     FAveragePeriod:integer;

     FBuffersCount:integer;

     procedure FullBuffer(Index:integer); virtual; abstract;

     procedure CreateBuffer; virtual;

     function GetResult(ABufferNum:integer):double; virtual;

  public

     function GetResultByFieldName(AFieldName:string):double; override;

     function GetResultByFieldNameAndIndex(AFieldName:string; Index:LongInt):double; override;

     function GetResultByFieldNum(AFieldNum:integer):double; override;

     function GetResultByFieldNumAndIndex(AFieldNum:integer; Index:LongInt):double; override;

     procedure First; override;

     procedure Last; override;

     function Next:boolean; override;

     function Prev:boolean; override;

  end;

 

Данный класс отличается от предка тем, что в секции private добавлены методы FullBuffer и CreateBuffer. Первый реализуется в классах потомках. Он предназначен для заполнения буфера окна усреднения соответствующими данными. Второй просто выделяет в памяти место под буфер и в большинстве случаев переписывание метода не требуется.

Метод GetResult так же не нуждается в переопределении, но он используется в функциях, вычисляющих значение индикатора.

 

TPASSMASimple

 

  TPASSMASimple=Class(TPASSAverageIndicator)

  private

     FMAType:string;

     procedure UpdateParameters; virtual;

     procedure FullBuffer(Index:integer); override;

  public

     constructor Create(AAveragePeriod:integer; AMAType:string);

     Destructor Destroy; virtual;

  end;

 

Для расчета значений индикатора используйте функции GetResultByFieldName, GetResultByFieldNameAndIndex, GetResultByFieldNum, GetResultByFieldNumAndIndex, поле “Value”. Пример:

 

MA:= GetResultByFieldName(‘Value’);

 

Класс TPASSADX

 

  TPASSADX=Class(TPASSAverageIndicator)

  private

     FBufferSize:LongInt;

     FADXBuffer:PADXStruct;

     procedure UpdateParameters; virtual;

     procedure FullBuffer(Index:integer); override;

     function GetMDM:double;

     function GetPDM:double;

     function GetTR:double;

     function GetMDI:double;

     function GetPDI:double;

  public

     constructor Create(AAveragePeriod:integer);

     function GetResultByFieldName(AFieldName:string):double; override;

     function GetResultByFieldNameAndIndex(AFieldName:string; Index:LongInt):double; override;

     function GetResultByFieldNum(AFieldNum:integer):double; override;

     function GetResultByFieldNumAndIndex(AFieldNum:integer; Index:LongInt):double; override;

     function GetIndicatorName:string; override;

 

Для расчета значений индикатора используйте функции GetResultByFieldName, GetResultByFieldNameAndIndex, GetResultByFieldNum, GetResultByFieldNumAndIndex, поля “DI+” и “DI-“.

 

 

Класс TPASSBB

 

  TPASSBB=Class(TPASSMASimple)

  private

     FS:double;

     FMA:Double;

     function GetCD:Double;

     procedure SetS(AFloat:double);

     procedure UpdateParameters; override;

  public

     property S:double read FS write SetS;

     constructor Create(AAveragePeriod:integer; AMAType:string; AFloat:double);

     function GetBBU(DoFullBuffer:boolean):double;

     function GetBBL(DoFullBuffer:boolean):double;

     function GetBBUAsIndex(DoFullBuffer:boolean; Index:LongInt):double;

     function GetBBLAsIndex(DoFullBuffer:boolean; Index:LongInt):double;

     function GetResultByFieldName(AFieldName:string):double; override;

     function GetResultByFieldNameAndIndex(AFieldName:string; Index:LongInt):double; override;

     function GetResultByFieldNum(AFieldNum:integer):double; override;

     function GetResultByFieldNumAndIndex(AFieldNum:integer; Index:LongInt):double; override;

  end;

 

Для расчета значений индикатора используйте функции GetResultByFieldName, GetResultByFieldNameAndIndex, GetResultByFieldNum, GetResultByFieldNumAndIndex, поля “BBU”, “BBL” и “MA“.

 

 

Класс TPASSMomentum

 

  TPASSMomentum=class(TPASSIndicator)

  protected

      FDT:integer; // длительность периода в интервалах

      FPriceFieldType:string; //тип ценового поля (Open, High, Low, Close);

      procedure UpdateParameters; virtual;

      procedure AfterConstruction; override;

  public

      constructor Create(ADT:integer; APriceFieldType:string);

      function GetResultByFieldName(AFieldName:string):double; override;

      function GetResultByFieldNameAndIndex(AFieldName:string; Index:LongInt):double; override;

      function GetResultByFieldNum(AFieldNum:integer):double; override;

      function GetResultByFieldNumAndIndex(AFieldNum:integer; Index:LongInt):double; override;

      procedure First; override;

      procedure Last; override;

      function Next:boolean; override;

      function Prev:boolean; override;

      function GetIndicatorName:string; override;

      property PriceFieldType:string read FPriceFieldType; 

  end;

 

Для расчета значений индикатора используйте функции GetResultByFieldName, GetResultByFieldNameAndIndex, GetResultByFieldNum, GetResultByFieldNumAndIndex, поле «Value».

Свойство PriceFieldType – тип ценового поля: Open, High, Low или Close

Последнее обновление ( 19.10.2010 г. )