function MarkovChainsCmd(infilename,lenprognoz,outfilename);
% Запуск прогноза с командной строки.
global in_series;
global in_series_urez;
y=dlmread(infilename);
if size(y,1)>size(y,2)
    y=transpose(y);
end
global bif_filename;
bif_filename=strrep(infilename,'.txt','_biftime.txt');
if (strcmp(bif_filename,infilename)==1)
    bif_filename=strcat(bif_filename,'_biftime.txt');
end
n=length(y);
in_series=y;
in_series_urez=y;
nbegprognoz=n-1;
nprognoz=lenprognoz;
global type_prirash;
type_prirash=0;
%%%0 - absolutnie, 1 - otnositelnie
global type_raspr; % Тип распределения
%0-tradic (delim otsortir masiv) 1 - delim interwal znacheniy dy 2- Делим
%массив, оценивая количество наиболее часто встр єлементов 3- 
%4 - Новый вариант. Выделение S1 части в средине равномерно, а хвосты - отдельные 2 состояния.
%5- Задаем процент в хвостах, остальное делится на равные по состоянию
%части
%0-tradic (delim otsortir masiv) 1 - delim interwal znacheniy dy 2- Делим
%массив, оценивая количество наиболее часто встр єлементов 3- 
%4 - Новый вариант. Выделение S1 части в средине равномерно, а хвосты - отдельные 2 состояния.
%5- Задаем процент в хвостах, остальное делится на равные по состоянию
%части
type_raspr=5;
global graphs; % строить ли графики
%graphs=1;%[];
global graphs_raspr; % Строить ли графики распределения
graphs_raspr=[];
%%% Откуда брать с. Выбираем - из параметров иерархии (3)
global type_s;
type_s=3;
global logs_skleyka;
logs_skleyka=1;
global sigma;
sigma=0;
global porog_smax;
porog_smax=99999;
nbeg=1;
nend=n;
s=5;
k=1;
rmin=1;
rmax=50;
nprognoz=lenprognoz;
type_hier=1; %0 - cложная, 1-простая
tbeg=nbeg;
tend=nend;
global limitdt;
if (isempty(limitdt))
    limitdt=260;
end
global limitdt_min;
if (isempty(limitdt_min))
    limitdt_min=3;
end
generate_hier([nbeg,nend,s,k,rmin,rmax,nprognoz,type_hier,tend,tbeg]);
global hierarchy_params;

global bif_flag; %Выбираем одну из бифуркаций, в зависимости от глобальных настроек (значения глобальной переменной bif_flag)
bif_flag=[];
flag_down=0;
flag_up=1;
if (flag_down==1)% Пусто - выбирается левая бифуркация - нижняя граница
    [yprogn1,masdtparamnew,hierarchies1]=MarkovPrognozMain(in_series_urez,hierarchy_params,nbegprognoz,nprognoz);
end
global hlogfile;
hlogfile=1;
if (flag_up==1)
    bif_flag=[1];
    [yprogn2,masdtparamnew,hierarchies2]=MarkovPrognozMain(in_series_urez,hierarchy_params,nbegprognoz,nprognoz);
end

figure;

beg=nbeg;%str2num(get(handles.edit3,'String'));
in_series4plot=y; %!!!
if (flag_down==1)
    plot(yprogn1,'b');
    lenresult=min(length(in_series4plot),length(yprogn1));
    razn=sum(abs(in_series4plot(nbegprognoz:lenresult)-yprogn1(nbegprognoz:lenresult)))/(lenresult-nbegprognoz);
    fprintf(hlogfile,'srednkw otklon rezultata(progn1) =%d \n',razn);
    yprogn=yprogn1;
end
hold on;
if (flag_up==1)
    plot(yprogn2,'b');
    lenresult=min(length(in_series4plot),length(yprogn2));
    razn=sum(abs(in_series4plot(nbegprognoz:lenresult)-yprogn2(nbegprognoz:lenresult)))/(lenresult-nbegprognoz);
    fprintf(hlogfile,'srednkw otklon rezultata(progn2) =%d \n',razn);
    yprogn=yprogn2;
end
plot(in_series4plot,'r');

resfilename=outfilename;
if length(resfilename)>0
    dlmwrite(resfilename,yprogn,'\n');
end
matfilename=strrep(outfilename,'.txt','.mat');
save(matfilename);