Программирование - это просто
Advertisement
Главная arrow Биржевые роботы arrow Создаем биржевого робота уроки, статьи, идеи arrow Урок 10. Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).
19.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Урок 10. Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge). Печать E-mail
Автор 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 г. )
 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги