Смекни!
smekni.com

Технический анализ рынка ценных бумаг на примере акций РАО ЕЭС Россия 2001-2002 гг. (стр. 2 из 2)

Программа написана на языке программирования Delphi.Версия 5.0. Имеет дружественный интерфейс, который очень прост в управлении. Для построения графика выберите вкладку с названием соответствующего метода и нажмите кнопку с названием "Построить график". После чего для анализа перейдите на вкладку "Анализ методов". И нажмите на кнопку "Результат".Все выходные данные находятся в окошечке справа. На вкладке "Дополнительно" осуществляется выбор (длина) окна, также приведены гиперссылки на сайты с котировками акций (http://www.rts.ru) и Банка России (http://www.cbr.ru) и график ставки рефинансирования.



.


5. Листинг

Процедура вывода результатов

procedure TForm1.Button11Click(Sender: TObject);

var i,chislo,pr,po,x : integer;

ak : integer; // число акций на руках

mon : integer; // деньги в наших руках

nac,n1,n2,n3,ref : double;

begin

try

mon:=1000*strtoint(edit10.text);

ak:=1000*strtoint(edit11.text);

except

showmessage('При вводе была допущена ошибка');

edit10.text:='100';

edit11.text:='10';

exit;

end;

if (mon=0) and (ak=0) then

begin

showmessage('Так не интересно');

exit;

end;

nac:=round(ak*strtofloat(izm(realn[0])))+mon;

n1:=nac*28.2*0.25*463/365;

n2:=nac*0.23*28.2*120/365;

n3:=nac*28.2*0.21*75/365;

ref:=nac+(n1+n2+n3)/31.6;

chislo:=length(a3);

pr:=0; po:=0;

if length(a3)>0 then begin

for i:=low(a3) to high(a3) do

if a3[i]=1 then inc(po)

else inc(pr);

if a3[0]=1 then begin

ak:=ak+round(mon/strtofloat(izm(realn[b3[0]])));

mon:=0;

end

else begin

mon:=round(ak*strtofloat(izm(realn[b3[0]])))+mon;

ak:=0;

end;

for i:=low(a3)+1 to high(a3) do

begin

if (a3[i]=1) and (b3[i]<d) then begin

ak:=round(mon/strtofloat(izm(realn[b3[i]])));

mon:=0;

end;

if (a3[i]=2) and (b3[i]<d) then

begin

mon:=round(ak*strtofloat(izm(realn[b3[i]])));

ak:=0;

end;

end;

if a3[length(a3)-1]=1 then x:=1

else x:=0;

if mon=0 then mon:=round(ak*strtofloat(izm(realn[d-1])));

memo4.Clear;

memo4.Lines.Add('Статистика за период:');

memo4.Lines.Add('1 января 2001 года - 20 октября 2002 года');

memo4.Lines.Add('Анализ проведен для плеч с длинами '+inttostr(plecho1)+' и '+inttostr(plecho2));

memo4.Lines.Add('Начальный капитал (в тысячах USD) : '+edit10.text);

memo4.Lines.Add('Начальное число акций (в тысячах штук) : '+edit11.text);

memo4.Lines.Add('Общая сумма (в тысячах USD) : '+floattostr(nac));

memo4.Lines.Add('Число операций с акциями РАО ЕЭС Россия : '+inttostr(chislo+x));

memo4.Lines.Add('В том числе покупок акций : '+inttostr(po));

memo4.Lines.Add('В том числе продаж акций : '+inttostr(pr+x));

memo4.Lines.Add('Сумма капитала в USD на 21 октября 2002 года : '+inttostr(mon));

memo4.Lines.Add('Эффективность метода : '+floattostr(round((mon-nac)*365*100/(nac*658)))+' %');

memo4.Lines.Add('Сумма капитала при рефинансировании в USD на 21 октября 2002 года: '+floattostr(round(ref)) +'');

memo4.Lines.Add('Эффективность рефинансирования '+floattostr(round((ref-nac)*365*100/(nac*658))) +' %');

end

else

begin

memo4.Clear;

memo4.Lines.Add('Статистика за период:');

memo4.Lines.Add('1 января 2001 года - 20 октября 2002 года');

memo4.Lines.Add('Анализ проведен для плеч с длинами '+inttostr(plecho1)+' и '+inttostr(plecho2));

memo4.Lines.Add('Начальный капитал (в тысячах USD) : '+edit10.text);

memo4.Lines.Add('Начальное число акций (в тысячах штук) : '+edit11.text);

memo4.Lines.Add('Общая сумма (в тысячах USD) : '+floattostr(nac));

memo4.Lines.Add('Число операций с акциями РАО ЕЭС Россия : '+inttostr(chislo));

memo4.Lines.Add('В том числе покупок акций : '+inttostr(po));

memo4.Lines.Add('В том числе продаж акций : '+inttostr(pr));

memo4.Lines.Add('Сумма капитала в USD на 21 октября 2002 года : '+floattostr(nac));

memo4.Lines.Add('Эффективность метода : 0%');

memo4.Lines.Add('Сумма капитала при рефинансировании в USD на 21 октября 2002 года: '+floattostr(round(ref)) +'');

memo4.Lines.Add('Эффективность рефинансирования '+floattostr(round((ref-nac)*365*100/(nac*658))) +' %');

end;

end;

процедура вывода графика, построенного методом экспоненциальных скользящих

procedure TForm1.Button8Click(Sender: TObject);

var i,k,sc,sc1,tec,i1 : integer;

pologen5 : string;

predpologen5 : string;

izm1,izm2 : boolean;

begin

// переменные per5, per13 нужны для фиксации последнего перехода через реальные цены

// если значение 0 - перехода не было

// если значение 1 - переход снизу вверх {продажа}

// если значение 2 - переход сверху вниз (покупка)

tec:=0;

// setlength(vfive,plecho1);

// setlength(vthirt,plecho2);

sc1:=1; i:=0;

graffive[0]:=realn[0];

grafthirt[0]:=realn[0];

//izm1:=false;

While i<d-1 do

begin

five[i]:=realn[i];

thirt[i]:=realn[i];

izm2:=false ;i:=tec;

predpologen5:='pusto';

while (izm2=false) and (i<d-1) do

begin

five[i+1]:=floattostr(strtofloat(izm(five[i]))+(2/(plecho1+1))*(strtofloat(izm(realn[i+1]))-strtofloat(izm(five[i]))));

graffive[i+1]:=five[i+1];

//закончили формирование плеча длиной 5

// начинаем формирование плеча длиной 13

thirt[i+1]:=floattostr(strtofloat(izm(thirt[i]))+(2/(plecho2+1))*(strtofloat(izm(realn[i+1]))-strtofloat(izm(thirt[i]))));

grafthirt[i]:=thirt[i];

if strtofloat(izm(five[i+1]))>strtofloat(izm(thirt[i+1])) then pologen5:='v'

else pologen5:='n';

if (pologen5='v') and (predpologen5='n') then

// покупка

if sc1=1 then begin

setlength(a3,sc1);

a3[sc1-1]:=1;

setlength(b3,sc1);

b3[sc1-1]:=i+2;

inc(sc1);

tec:=i+1;

izm2:=true;

// izm1:=true;

end

else if a3[sc1-2]=2 then

begin

// покупка

setlength(a3,sc1);

a3[sc1-1]:=1;

setlength(b3,sc1);

b3[sc1-1]:=i+2;

inc(sc1);

tec:=i+1;

izm2:=true;

// izm1:=true;

end;

if (pologen5='n') and (predpologen5='v') then

if sc1=1 then

begin

// продажа

setlength(a3,sc1);

a3[sc1-1]:=2;

setlength(b3,sc1);

b3[sc1-1]:=i+2;

inc(sc1);

tec:=i+1;

izm2:=true;

//izm1:=true;

end else if a3[sc1-2]=1 then

begin

// продажа

setlength(a3,sc1);

a3[sc1-1]:=2;

setlength(b3,sc1);

b3[sc1-1]:=i+2;

inc(sc1);

tec:=i+1;

izm2:=true;

//izm1:=true;

end;

predpologen5:=pologen5;

inc(i);

// if then goto Start;

end;

end;

chart4.AxisVisible:=true;

for i:=0 to d-2 do

begin

chart4.Series[1].addXY(i,strtofloat(izm(grafthirt[i])),inttostr(i),clBlue);

end;

for i:=0 to d-2 do

begin

chart4.Series[2].addXY(i,strtofloat(izm(realn[i])),inttostr(i),clRed);

end;

for i:=0 to d-2 do

begin

chart4.Series[0].addXY(i,strtofloat(izm(graffive[i])),inttostr(i),clGreen);

end;

for sc:=0 to length(a3)-1 do

if a3[sc]=1 then

chart4.Series[3].AddXY(b3[sc]-1,strtofloat(izm(realn[b3[sc]-1])),inttostr(i),clBlack)

else

chart4.Series[3].AddXY(b3[sc]-1,strtofloat(izm(realn[b3[sc]-1])),inttostr(i),clYellow);

{ if a[length(a)-1]=2 then

chart1.Series[3].AddXY(d-3,strtofloat(izm(realn[d-3])),'00',clYellow);}

button8.Enabled:=false;

button11.Enabled:=true;

end;

6. Результаты

При первоначальном капитале 100 тысяч USD и наличии 10 тысяч акций

Получены следующие эффективности методов :

Экспериментальный 1

Длина окон

Эффективность (%)

5,13

23

5,8

5

8,13

22

Экспериментальный 2

Длина окон

Эффективность (%)

5,13

1

5,8

-4

8,13

5

СС

Длина окон

Эффективность (%)

5,13

0

5,8

0

8,13

0

ЭСС

Длина окон

Эффективность (%)

5,13

17

5,8

18

8,13

5

При вложении средств в банк получена эффективность 22%.

8. Ставка рефинансирования

9.

Период

Ставка

01/01/2001-04/08/2002

25%

04/09/2002-08/06/2002

23%

08/07/2002-10/20/2002

21%

Курс USD

1 ЯНВАРЯ 2001 Г. -28.2 РУБ

20 ОКТЯБРЯ 2002 Г- 31.6 РУБ