.
Урок 10. Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).
Автор megabax   
26.11.2009 г.
New Page 1

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Все статьи по данной теме.

Вот мы наконец то и добрались до тестирования. И так, берем пример из прошлых уроков (Урок 4, Урок 5) и переделываем его. В частности, положим на форму компонент TGauge (Если забыли где он находиться, загляните в урок 8), так же добавим к форме компонент TListBox, он у нас расположен на закладке Standart*:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Вот как у нас будет выглядеть после этого форма*:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Теперь переделаем обработчики события:

procedure TfrmMomentum.FormCreate(Sender: TObject);
begin
    FPriceSource:=nil;
    FIndicator:=nil;
    FDataStore:=nil;
    FStatAnalizMomentum:=nil;
end;

procedure TfrmMomentum.btnCalkClick(Sender: TObject);
begin
   if FIndicator<>nil then FreeAndNil(FIndicator);
   if FDataStore<>nil then FreeAndNil(FDataStore);
   if FStatAnalizMomentum<>nil then FreeAndNil(FStatAnalizMomentum);
   FIndicator:=TPASSMomentum.Create(seDT.Value,'Close');
   FIndicator.PriceSource:=FPriceSource;
   FDataStore:=TPASSStatStoreDataList.Create(lbResults.Items);
   FStatAnalizMomentum:=TPASSStatAnalizMomentum.Create(FIndicator,10,FDataStore);
   Gauge.MinValue:=0;
   Gauge.Progress:=0;
   Gauge.MaxValue:=FPriceSource.CountLoadedBars;
   FStatAnalizMomentum.Gauge:=Gauge;
   lbResults.Visible:=false;
   FStatAnalizMomentum.Test;
   lbResults.Visible:=true;
end;
 

procedure TfrmMomentum.FormDestroy(Sender: TObject);
begin
   if FDataStore<>nil then FreeAndNil(FDataStore);
   if FIndicator<>nil then FreeAndNil(FIndicator);
   if FPriceSource<>nil then FreeAndNil(FPriceSource);
   if FStatAnalizMomentum<>nil then FreeAndNil(FStatAnalizMomentum);
end;

еще нам нужно добавить в объявление класса формы поля FDataStore и FStatAnalizMomentum (добавленные поля выделены красным):

TfrmMomentum = class(TForm)
   odOpenDialog: TOpenDialog;
   mmMenu: TMainMenu;
   itFile: TMenuItem;
   itLoad: TMenuItem;
   lbResult: TLabel;
   btnCalk: TButton;
   seDT: TSpinEdit;
   lbDateTime: TLabel;
   seCandle: TSpinEdit;
   sdTextFile: TSaveDialog;
   lbResults: TListBox;
   Gauge: TGauge;
   procedure itLoadClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure btnCalkClick(Sender: TObject);
   procedure seCandleChange(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
private
   { Private declarations }
   FPriceSource:TPASSPriceSource;
   FIndicator:TPASSMomentum;
   FDataStore:TPASSStatStoreDataList;
   FStatAnalizMomentum:TPASSStatAnalizMomentum;

public
   { Public declarations }
end;

Все, теперь мы можем запустить программу и посмотреть, что она выдаст:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Теперь давайте проверим, правильно ли считает наша программа.  Для сперва сделаем таблицу расчета на каждую свечу, для ее формирования воспользуемся программой урока 6. Затем конвертируем в Excel тестовый файл котировок, который мы использовали для тестирования и вставим туда рассчитанное значение индикатора. После чего вручную выполним расчет сигналов и результатов**:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Желтая строчка - это сигнал. В качестве сигнальной цены берем следующую цену открытия (ниже желтой строки). Синяя строка - это противоположный сигнал. Так же считаем относительно той цены открытия, которая ниже этой выделенной строчки. Красным цветом у нас выделена строка, отсчитанная от сигнальной на 10, заданное количество свечей:

 FStatAnalizMomentum:=TPASSStatAnalizMomentum.Create(FIndicator,10,FDataStore);

 Именно до этой строки нужно найти максимум и минимум, я их обозначил зеленым и темно-красным цветом. Теперь, посмотрим расчетные формулы**:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

И сравним результаты с тем, что выдала программа:

Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).

Как видим, результаты сходятся. Конечно, для верности надо бы проверить еще несколько сигналов, при чем разных, но это вы уже сделаете самостоятельно, я показал как. Сам я проверил пять сигналов, результаты сошлись.

На следующем уроке мы будем тестировать наши классы на утечку памяти. Для чего это надо? А представьте себе, что биржевой робот постоянно работает на сервере и жрет память не переставая? К чему это приведет? Правильно, рано или поздно глюканет так, что мало не покажется...


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями   программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation".

Скриншоты, помеченные знаком ** , являются цитатами и иллюстрациями программного продукта "Microsoft Excel", авторское право на который принадлежит "Корпорации Microsoft" 

 

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