% 模拟交易 inicash = 10^7; SI = TOHLCV(:,5) / TOHLCV(1,5); N1 = 10:10:60; % 进场信号探测窗口周期 N2 = 0.5:0.05:1.2; % 出场信号探测窗口周期 b_a = 1; % 信号探测使用高低点 (取值1)或收盘价 (取值2) AR = nan( numel(N1) , numel(N2) ); % 年化回报率矩阵 Sharpe = nan( numel(N1) , numel(N2) ); % 夏普比矩阵 Calmar = nan( numel(N1) , numel(N2) ); % 卡玛比矩阵 for i = 1 : numel(N1) for j = 1 : numel(N2) paramcell = { [N1(i) N2(j) b_a] [N1(i) N2(j) b_a] }; [ Capital , H ] = feval( [ 'Strategy_' strategyname ] , TOHLCV , paramcell , inicash ); Eqty = Capital / inicash; % 净值曲线 equitypfm = performmetrics( Eqty , 1 , SI' ); AR(i,j) = equitypfm(1); Sharpe(i,j) = equitypfm(1) / equitypfm(5); Calmar(i,j) = equitypfm(1) / equitypfm(2); end end [ X , Y ] = meshgrid( N1 , N2 ) ; Z = AR; % Z = (AR+Sharpe+Calmar) / 3; surf(X',Y',Z) xlabel('N1') ylabel('N2')这这段代码参数改为function ema = calcema(S, N) alpha = 2/(N+1); ema = zeros(size(S)); ema(1) = S(1); for i = 2:length(S) ema(i) = alpha*S(i) + (1-alpha)*ema(i-1); end end中的参数
时间: 2024-02-07 14:03:22 浏览: 188
ASUS华硕 M5A97/SI主板BIOS驱动程序下载
这段代码和你之前提供的代码没有关系,但是根据你给出的代码,我猜测你想知道`calcema`函数的参数是什么意思。
这个函数的输入参数包括:
- S:待计算的价格序列,是一个向量。
- N:EMA的计算周期,即需要计算多少个价格数据的平均值。通常情况下,N是一个整数。
函数的输出是一个与输入序列S等长的向量,表示对应的EMA序列。
具体来说,这个函数实现了以下步骤:
- 计算EMA的平滑系数alpha,其中alpha的常用取值为2/(N+1)。
- 初始化EMA序列,将第一个价格作为初始值。
- 使用循环遍历输入序列S中的每一个价格,根据EMA的递推公式计算对应的EMA值。递推公式为:EMA(i) = alpha * S(i) + (1-alpha) * EMA(i-1),其中i表示当前的时间点,i-1表示前一个时间点的EMA值。
需要注意的是,这个函数的输出变量名是`ema`,表示计算得到的EMA序列。
阅读全文