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

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

 

 

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

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

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

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

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

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

 

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

 

Класс 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“.

 

Последнее обновление ( 27.07.2009 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги