Программирование - это просто
Advertisement
Главная arrow C#, Delphi, VB, F#, Web и пр. arrow Прочее программирование arrow Создаем биржевого робота уроки, статьи, идеи arrow Урок 10. Тестируем класс статистического анализа индикатора (momentum, МТС, Gauge).
19.01.2019 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
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 г. )
 
« След.
 
© 2019 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше