Программирование - это просто
Advertisement
Главная arrow C#, Delphi, VB, F#, Web и пр. arrow Прочее программирование arrow Создаем биржевого робота уроки, статьи, идеи arrow Урок 12. Пишем класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, Excel)
23.05.2019 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Урок 12. Пишем класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, Excel) Печать E-mail
Автор megabax   
24.12.2009 г.
New Page 1

Пишем класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel).

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

Вспомним прошлые уроки, когда мы писали и тестировали класс статистического анализ индикаторов (Урок 8, урок 9, урок 10 и урок 11) и возьмем исходники, которые мы создали на этих уроках.  В модуле momStatAnaliz создадим новый класс, он у нас будет предназначен для выгрузки данных статистического анализа в файл.

TPASSStatStoreTextFile=class(TPASSStatStoreDataTemplate)
protected
      FStringList:TStringList;
      FFileName:string;
      FIsFirst:boolean;
public
      constructor Create(AFileName:String);
      procedure AddData(AParameters:TPASSParameters); override;
      procedure Save;
     destructor Destroy;
end;

Как видим, это дочерний класс от TPASSStatStoreDataTemplate - очередная разновидность сохранялки результатов анализа. На прошлых уроках мы писали пробный класс сохранялки, только для того, что бы проверить корректность самих результатов анализа. а сегодня мы сохраним их в текстовый файл, который сможет открыть в программе Excel и уже там проводить дальнейший анализ.

И так, займемся реализацией:

constructor TPASSStatStoreTextFile.Create(AfileName:String);
begin
    inherited Create;
    FFileName:=AFileName;
    FIsFirst:=true;
    FStringList:=TStringList.Create;
end;

поле FIsFirst у нас нужно для того, что бы при перовом вызове метода AddData у нас в файл добавился заголовок. а вот, собственно, и этот метод:

procedure TPASSStatStoreTextFile.AddData(AParameters:TPASSParameters);
var cn,i:integer; s:string;
begin
    cn:=AParameters.Count-1;
    s:='';
    if FIsFirst then
    begin
        for i:=0 to cn do s:=s+AParameters[i].Name+'; ';
        FStringList.Add(s);
     end;
     FIsFirst:=false;
     s:='';
     for i:=0 to cn do s:=s+AParameters.AsStringByNum(i)+'; ';
     FStringList.Add(s);
end;

Как видим, он просто формирует строчку с разделителями и добавляет его в список строк, который мы потом сохраним в файл методом Save:

procedure TPASSStatStoreTextFile.Save;
begin
     FStringList.SaveToFile(FFileName);
end;

И теперь нам осталось только реализовать деструктор:

destructor TPASSStatStoreTextFile.Destroy;
begin
   FreeAndNil(FStringList);
   inherited Destroy;
end;

Теперь проверим, есть ли у нас на форме компонент TSaveDialog, если нет - добавим и назовем sdTextFile*:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

внесем изменение в объявление класса TfrmMomentum:

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:TPASSStatStoreTextFile;
  
FStatAnalizMomentum:TPASSStatAnalizMomentum;
public
   { Public declarations }
end;

Перепишем обработчик события OnClick кнопочки "Вычислить"

procedure TfrmMomentum.btnCalkClick(Sender: TObject);
begin
    if sdTextFile.Execute then
    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:=TPASSStatStoreTextFile.Create(sdTextFile.FileName);
       FStatAnalizMomentum:=TPASSStatAnalizMomentum.Create(FIndicator,10,FDataStore);
       Gauge.MinValue:=0;
       Gauge.Progress:=0;
       Gauge.MaxValue:=FPriceSource.CountLoadedBars;
       FStatAnalizMomentum.Gauge:=Gauge;
       FStatAnalizMomentum.Test;
       FDataStore.Save;
   end;
end;

Теперь давайте тестировать. Запускам программу, открываем файл котировок:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

Выбираем интервал индикатора, жмем кнопочку "Вычислить", выбираем файл, в котором у нас будут сохранены результаты.

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

Теперь откроем сформированный файл в программе Excel, как текстовый файл**:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

В окне выбора конвертации выберем файл с разделителями**:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

Разделитель: точка с запятой**:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

Вот такая таблица у нас получилась в итоге**:

класс для выгрузки статистики в файл и анализируем ее в Excel-е (TStringList, конвертация в Excel)

 


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

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

 

Последнее обновление ( 11.07.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 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше