Amibroker中Month函数及对应代码段逻辑含义理解咨询
Amibroker月度序列计算代码逻辑详解
以下是原代码片段:
me = Month(); me1 = Ref(me, -1); MFC = me != me1; BSMFC = BarsSince(MFC)+1;
逐行逻辑说明
- 第一行
me = Month();
调用Amibroker内置的Month()函数,返回每根K线对应日期的月份数值(取值范围1-12),生成和K线长度一致的月份序列。 - 第二行
me1 = Ref(me, -1);
调用序列偏移函数Ref(),偏移量设为-1,即取每根K线的前一根K线的月份值,生成滞后1个周期的月份序列。 - 第三行
MFC = me != me1;
逐根K线对比当前月份和前一根K线的月份,返回布尔值序列:当两根K线月份不同时返回1(即每月的第一根K线位置),其余情况返回0。 - 第四行
BSMFC = BarsSince(MFC)+1;
调用BarsSince()函数计算「上一次月份切换(MFC=1)到当前K线的间隔数量」,加1后得到当前K线在当月的序列编号:比如当月第一根K线的返回值为1,第二根为2,以此类推。
代码整体作用
这是Amibroker中非常常用的月度周期定位逻辑,多用于按月调仓策略、月度指标统计、月初触发信号等场景,比如要实现「每月第一个交易日开仓」的规则,只需要判断BSMFC == 1即可生成对应信号。
内容的提问来源于stack exchange,提问作者MVP_Script
相关产品推荐
相关产品推荐

