【发布时间】:2018-01-03 12:58:47
【问题描述】:
我正在尝试将指标从 MQL4(Metatrader 语言)翻译到 Matlab。布林带代码如下:
for(int i=Bars;i>=0;i--)
{
BANDS=iBands(Symbol(),0,20,2,1,0,1,i+1);
}
iBands() documentation 将 8 个输入列为:
symbol
timeframe
period
deviation
bands_shift
applied_price
mode
shift
除bands_shift 和shift 外,我了解所有这些。问题:如果i = Bars 是数据的整个范围,为什么i+1 不会产生超出范围的错误?据我所知,这是 20 个周期、2 个标准差布林带的代码。对于给定的时间间隔,相关的布林带值是否是为前一个时间间隔计算的值(因此在第四个逗号之后是 1)?那么i+1 会做什么呢?鉴于此代码,我将如何在 matlab 中实现?我的尝试,使用this 移动标准差和this 移动平均:
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 代码相同的输出。任何提示都将不胜感激!
【问题讨论】: