Дипломная работа: Автоматизация управления активами при помощи кластерного анализа паттернов поведения игроков рынка в ПАО «ФК Открытие»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
95
p = 1;
FLAG = true;
elseif (p > 0.01) && FLAG
p = p + 1;
end
if k > 1.5
[x(k), q0OS, q0OL, q0C] = nextStep(x(k - 1), ImpulseAmplitude,
ImpulseDuration, p);
else
[x(k), q0OS, q0OL, q0C] = nextStep(x0, ImpulseAmplitude,
ImpulseDuration, p);
end
if k >= L + F
qOS = [qOS; k - p + q0OS + offset];
qOL = [qOL; k - p + q0OL + offset];
qC = [qC; k - p + q0C + offset];
end
if p > ImpulseDuration + 1e-8
ImpulseAmplitude = 0;
ImpulseDuration = 0;
p = 0;
FLAG = false;
end
% [a(k), b(k)] = trendDetector(x(1 : k), L, F);
%
% a1(L + F : k) = expSm(a(L + F : k), L);
96
% b1(L + F : k) = expSm(b(L + F : k), L);
% cla(h1)
% plot(h1, t(1 : k), x(1 : k), 'blue', 'linewidth', 2)
% if k >= L + F
% rectangle('parent', h1, 'position', ...
% [k - F - L + 1 min(x(k - F - L + 1 : k)) F + L - 1 max(x(k - F - L + 1
: k)) - min(x(k - F - L + 1 : k)) + 1e-9], ...
% 'linewidth', 2, 'edgecolor', [0 1 0])
% rectangle('parent', h1, 'position', ...
% [k - F - L + 1 min(x(k - F - L + 1 : k)) L - 1 max(x(k - F - L + 1 :
k)) - min(x(k - F - L + 1 : k)) + 1e-9], ...
% 'linewidth', 2, 'edgecolor', [1 0 0])
% end
% for ii = 1 : numel(qOS)
% scatter(h1, qOS, x(qOS), 'markerfacecolor', [0.05 1 1],
'markeredgecolor', [0.05 1 1], 'sizedata', 40)
% end
% for ii = 1 : numel(qOL)
% scatter(h1, qOL, x(qOL), 'markerfacecolor', 'red', 'markeredgecolor',
'red', 'sizedata', 40)
% end
% for ii = 1 : numel(qC)
% scatter(h1, qC, x(qC), 'markerfacecolor', 'green', 'markeredgecolor',
'green', 'sizedata', 40)
% end
% cla(h2)
% plot(h2, t, a1, 'green', t, b1, 'red', 'linewidth', 2)
%
% set(h2, 'xlim', get(h1, 'xlim'), 'ylim', [0 1])
97
set(h0, 'numbertitle', 'off', 'name', ...
['numel(qOS) = ' num2str(numel(qOS)) '; numel(qOL) = '
num2str(numel(qOL)) '; numel(qC) = ' num2str(numel(qC)) '; tElapsed = '
num2str((now - t0) * 24)])
drawnow
pause(0.01)
end
function [PR0, PROS, PROL, PRC] = makeDB(x, k, L, F, qOL, qOS, qC)
x = x(1 : k);
PROL = zeros(0, L + F);
PROS = zeros(0, L + F);
PRC = zeros(0, L + F);
PR0 = zeros(0, L + F);
for k = 1 : numel(x)
if k > L + F
if any(k == qOL)
PROL = [PROL; x(k - L - F + 1 : k)'];
elseif any(k == qOS)
PROS = [PROS; x(k - L - F + 1 : k)'];
elseif any(k == qC)
PRC = [PRC; x(k - L - F + 1 : k)'];
end
end
end
t = (1 : k)';
98
t = setdiff(t, qOL);
t = setdiff(t, qOS);
t = setdiff(t, qC);
t = t(randperm(numel(t)));
for k = 1 : max([numel(qOL) numel(qOS) numel(qC)])
if k > L + F
if any(k == t)
PR0 = [PR0; x(k - L - F + 1 : k)'];
end
end
end
Приложение 5
function [x1, qOS, qOL, qC] = nextStep(x0, ImpulseAmplitude,
ImpulseDuration, p)
x1 = x0 + 0.05 * randn();% <--------------<<<<< 0.05
qOS = zeros(0, 1);
qOL = zeros(0, 1);
qC = zeros(0, 1);
if p > 0.01
[z, q] = impactReply(ImpulseDuration);
if p < ImpulseDuration
x1 = x1 + (-ImpulseAmplitude) * (z(p + 1) - z(p));
end
if abs(ImpulseAmplitude) > 0.25
if (abs(p - q(1)) < 1e-8) && abs(p - q(2)) > 1e-8
if ImpulseAmplitude > 0
99
qOS = q(1);
qOL = zeros(0, 1);
qC = zeros(0, 1);
else
qOL = q(1);
qOS = zeros(0, 1);
qC = zeros(0, 1);
end
elseif (abs(p - q(2)) < 1e-8) && abs(p - q(1)) > 1e-8
qC = q(2);
qOL = zeros(0, 1);
qOS = zeros(0, 1);
else
qC = zeros(0, 1);
qOL = zeros(0, 1);
qOS = zeros(0, 1);
end
end
end
clear all
clc
load NN.mat
load PROS.mat
PR = PROS;
S = zeros(size(PR, 1), 1);
for k = 1 : numel(S)
Источник: https://baza.diplomsite.ru/previewfile/366