我正在尝试将指标从 MQL4(Metatrader 语言)翻译成 Matlab。布林带代码如下:
for(int i=Bars;i>=0;i--)
{
BANDS=iBands(Symbol(),0,20,2,1,0,1,i+1);
}
iBands()文档将 8 个输入列为:
symbol
timeframe
period
deviation
bands_shift
applied_price
mode
shift
我理解所有这些,除了bands_shift
and shift
。问题:如果i = Bars
是数据的整个范围,为什么不i+1
创建超出范围的错误?据我所知,这是 20 个周期、2 个标准差布林带的代码。对于给定的时间间隔,相关的布林带值是否是为前一个时间间隔计算的值(因此1
在第四个逗号之后)?那做什么i+1
呢?鉴于此代码,我将如何在 matlab 中实现?我的尝试,使用这个移动标准差和这个移动平均值:
moving_average = movemean(EURUSD_closes(1:end-1),20); %end-1 in order to shift by 1
moving_average = [NaN; moving_average]; %adding NaN to make BANDS the length of price
moving_std = movestd(EURUSD_closes(1:end-1),20,'backward');
moving_std = [NaN; moving_std1];
BANDS = moving_average + 2*moving_std;
我认为这不会提供与 MQL4 代码相同的输出。任何提示都将不胜感激!