.
Проверяем правильность работы класса индикатора (AssignFile, Rewrite, Writeln, CloseFile).
Автор megabax   
22.08.2009 г.
New Page 1

Проверяем правильность работы класса индикатора (AssignFile, Rewrite, Writeln, CloseFile).

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

Сегодня мы проверим результат, который нам выдала программа на прошлом уроке. И так, вот исходные данные:

<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>
MICEX,D,19991112,000000,119.87000,119.87000,119.87000,119.87000
MICEX,D,19991115,000000,121.93000,121.93000,121.93000,121.93000
MICEX,D,19991116,000000,122.45000,122.45000,122.45000,122.45000
MICEX,D,19991117,000000,120.32000,120.32000,120.32000,120.32000
MICEX,D,19991118,000000,118.06000,118.06000,118.06000,118.06000
MICEX,D,19991119,000000,121.42000,121.42000,121.42000,121.42000
MICEX,D,19991122,000000,125.65000,125.65000,125.65000,125.65000
MICEX,D,19991123,000000,128.58000,128.58000,128.58000,128.58000
MICEX,D,19991124,000000,125.45000,125.45000,125.45000,125.45000
MICEX,D,19991125,000000,123.41000,123.41000,123.41000,123.41000

Мы рассматривали свечу с датой 24.11.1999, поле "Close" которой равно 125.45000. Это у нас значение котировки на конец периода. Значение котировки на начало периода соответствует свече 19.11.1999 (согласно матмодели, это свеча, предшествующей свече начала периода). Теперь считаем:

(125.45000-121.42000)/121.42000*100/3=1,10635260528194

Как видим, результат соответствует результату, выданному программой на предыдущем уроке.

Для верности еще сделаем графическую проверку: сформируем текстовый файл результатов расчета, конвертируем его в Excel и график индикатора сравним с графиком котировок. Добавим к форме TSaveDialog и кнопочку. Для обработчика клика по кнопке напишем такой код:

procedure TfrmMomentum.btnTestFileClick(Sender: TObject);
var VF:TextFile;
begin
  if sdTextFile.Execute then
  begin
     AssignFile(VF, sdTextFile.FileName);
     Rewrite(VF);
     if FIndicator<>nil then FreeAndNil(FIndicator);
     FIndicator:=TPASSMomentum.Create(seDT.Value,'Close');
     FPriceSource.CurrentItemIndex:=seDT.Value+2;
     FIndicator.PriceSource:=FPriceSource;
     repeat
        WriteLn(VF,DateTimeToStr(FPriceSource.GetDataByFieldName('DateTime')),', ',FIndicator.GetResultByFieldName('Value'));
     until not FPriceSource.NextItem;
     CloseFile(VF);
  end;
end;  

Теперь сформируем текстовый файл, конвертируем его в Excel и посмотрим график сравнения (для наглядности momentum умножен на 100)*:

AssignFile, Rewrite, Writeln, CloseFile

Если внимательно присмотреться к графику (расчет произведен для периода в три свечи), то мы увидим, что действительно, наш индикатор показывает скорость изменения котировок акций.


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

 

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