function varargout = rsi(price,M,thresh,scaling,cost)
% RSI
%%
% Copyright 2010, The MathWorks, Inc.
% All rights reserved.
if ~exist('scaling','var')
scaling = 1;
end
if ~exist('M','var')
M = 0; % no detrending
else
if numel(M) > 1
N = M(2);
M = M(1);
else
N = M;
M = 15*M;
end
end
if ~exist('thresh','var')
thresh = [30 70]; % default threshold
else
if numel(thresh) == 1 % scalar value
thresh = [100-thresh, thresh];
else
if thresh(1) > thresh(2)
thresh= thresh(2:-1:1);
end
end
end
if ~exist('cost','var')
cost = 0; % default cost
end
%% Detrend with a moving average
if M == 0
ma = zeros(size(price));
else
ma = movavg(price,M,M,'e');
end
ri = rsindex(price - ma, N);
%% Position signal
s = zeros(size(price));
% Crossing the lower threshold
indx = ri < thresh(1);
indx = [false; indx(1:end-1) & ~indx(2:end)];
s(indx) = 1;