Описание библиотеки PASSIndicators.pas версия 1.1 |
Автор megabax | |
19.10.2010 г. | |
(С) Шуравин Александр 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 г. ) |
« След. | Пред. » |
---|