
function yprogn=MarkovPrognozMain(y,masdtparam);
%главная функция прогнозирования. Принимает массив значений, дополнительные параметры и производит
%прогноз.
%y - входной ряд.

N=length(y);
ndt=length(masdtparam);
N1=masdtparam(ndt).dt;
% Определяем наиболее оптимальную длину ряда при заданной иерархии.
%[N1,masm,masdt]=getbestlength(N*3/4,[2,3,5,7,11,13,17,19,23,29]);
%Возможно использование простой иерархии - степени двоек.
%[N1,masdt]=getstepen2(N);
% Обрезаем входной ряд, убирая лишние начальные точки.
y_urez=y;%(N-N1:N);
%if size(y_urez,1)>size(y_urez,2)
%    y_urez=transpose(y_urez);
%end
% блок прогнозирования для каждого варианта приращения.
%rewmasdt=-sort(-masdt);
%rewmasdt=rewmasdt%(3:length(rewmasdt));
%masdtparam=[];
tbeg=ceil(N1/3);
nprognoz=N1;
s=4;
dtmanual=3; % Количество слоев иерархии, задаваемых вручную
%masiv_s=[1,1,2,2,14,3,3,2,2,2,10,3,3,5,2,5,2,6];
%masiv_s=[8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3];
%masiv_s=[3,3,3,3,7,8,5,12,2,8,2,4,8,13,14,2]; % масив, одержаний на оптимизации по данным Грн-евро НБУ
%masiv_s=[2,2,2,2,3,8,10,2,13,15,2,13,5,2,11,11]; % масив, одержаний на оптимизации по данным sp500new

% 252-3,210-8, 180-10,140-2,126-13, 105-15,90-2,84-13,70-5,63-2, 60-11,45-11 - сп500
%sin30 :168-14,140-10,120-2,105-8,84-6,70-9,60-5,56-9,42-3,40-3,35-4,30-4, 28-9,24-15,21-4,20-3,15-7,14-15,12-7,10-2,8-10,7-9,6-8,5-6,4-4,3-9,2-5
%masiv_s=[2,2,2,2,14,10,2,8,6,9,5,9,3,3,4,4,9,5,4,3,7,15,7,2,10,9,8,6,4,9,5];
%masiv_k=[2,2,2];
%dtmanual=2;%length(masiv_s);
%dtmanual=length(rewmasdt);
%for numdt=3:dtmanual
%    dtparam=[];
%    dtparam.r=10;
%    dtparam.dt=rewmasdt(numdt);
%    dtparam.s=5;%+round(sqrt(numdt));%masiv_s(numdt);
%    dtparam.k=1;
%    masdtparam=[dtparam,masdtparam];
%end

yprogn=prognoztest(y_urez,masdtparam,N-1,nprognoz);
%figure;
%plot(y_urez,'b');
%hold on;
%plot(yprogn,'r');

