exchange.SetRate();
exchange.SetContractType("quarter");
exchange.SetMarginLevel(20);
Log("PERIOD_M15");
var records2 = exchange.GetRecords(PERIOD_M15);
var macd = TA.MACD(records2, 12, 26, 9);
Log(macd[0].length);
Log("dif0="+_N(macd[0][macd[0].length-1],4));
Log("dif1="+_N(macd[0][macd[0].length-2],4));
Log("dif2="+_N(macd[0][macd[0].length-3],4));
Log(macd[1].length);
Log("dea0="+_N(macd[1][macd[1].length-1],4));
Log("dea1="+_N(macd[1][macd[1].length-2],4));
Log("dea2="+_N(macd[1][macd[1].length-3],4));
Log(macd[2].length);
Log("macd0="+_N(macd[2][macd[2].length-1],4));
Log("macd1="+_N(macd[2][macd[2].length-2],4));
Log("macd2="+_N(macd[2][macd[2].length-3],4));
测试代码如下,输出来的数据和交易所网站上的macd的dif,dea,macd都不一样,是怎么回事啊?哪个地方弄错了吗?
发明者量化-小小梦 此类问题 因素有很多: 1、确定是不是 同一个 合约, 确定是不是 一样的K线周期,确定是不是同样的计价方式(美元计价 还是CNY 计价),简单的就是 先对比你获取的K线数据是不是和交易所一样。 2、K线的最后一个 柱收盘价 是实时变动的,所以对应的这个位置的指标值也是实时变动,可能会不一样。 3、指标库算法: 有些 MACD 的量柱是 dif-dea , 有些是 2倍的 dif - dea, 这个 是算法上的不同,不过 dif dea 应该是相同的算法。 4、数据量问题, 某些指标K线数据量越多,算出的越精确(大部分是 迭代的、递归的算法),所以给定的K线数据量不一样,可能算出的数值也有差别。