408 Star 1.8K Fork 757

GVPfasiondog / hikyuu

 / 详情

请教macd指标问题

待办的
创建于  
2023-12-25 14:47

MACD指标在没有传入数据时可用以下二种方式初始化:
Indicator HKU_API MACD(int n1, int n2, int n3) {
IndicatorImpPtr p = make_shared();
p->setParam("n1", n1);
p->setParam("n2", n2);
p->setParam("n3", n3);
return Indicator(p);
}

Indicator HKU_API MACD(const IndParam& n1, const IndParam& n2, const IndParam& n3) {
IndicatorImpPtr p = make_shared();
p->setIndParam("n1", n1);
p->setIndParam("n2", n2);
p->setIndParam("n3", n3);
return Indicator(p);
}
但这二种方式的传入的参数保存的位置是不一样的。使用第一种方式初始化,用setContext传入数据计算就会出错,请问是bug还是应用其它方式传入数据?

评论 (7)

jiaping1818 创建了任务

第二种方式,是用 Indicator 做为 n 参数,不一样的,用着 n 不是固定值的情况
MACD不直接接收 KData 输入,setContext 没用,要 MACD(CLOSE(), ...)

我是用C++调用的,如果在程序中经常动态调整close()数据,如何将数据传入到macd中好?setcontext是用于什么目的?还请指教。

ind = MACD(CLOSE())
ind.setContext(k)

setContext 是给 CLOSE/OPEN 等使用的,告知使用的 KData,不依赖于 context 的指标其输入都是其他指标。只有少量的CLOSE等需要用 KData 作为输入

谢谢,可以使用了。指标计算的设计原理有没参考说明?我在使用Singal时又遇到了计算问题。

没有,直接描述你的问题就好了

比如,我要回测使用信号SG_CrossGold,如何才能将macd.dea和macd.diff传入,必须要重写一个信号器内部实现计算macd的二条线才行吗?或者像python中示例一样,实现crtSG,传入自定义函数实现macd二条线的计算,我的理解对吗?

抱歉,前几天回头才发现,之前确实需要自定义一个SG。2.0.2版本加了 RESULT 指标,后面可以直接是使用 SG_CrossGold,直接 RESULT(MACD(), 1) 即可

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
3859 fasiondog 1578914213
C++
1
https://gitee.com/fasiondog/hikyuu.git
git@gitee.com:fasiondog/hikyuu.git
fasiondog
hikyuu
hikyuu

搜索帮助