以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 问个小周期套大周期的问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=165194) |
-- 作者:mhw307 -- 发布时间:2018/8/27 13:44:40 -- 问个小周期套大周期的问题 做小时线,套日线,选择MACD,当日线MACD金叉时,在本小时K线结束时偷鸡进场,结果本日的每个小时都会触发买入条件,按照我的思路,COUNT(A1,4)应该会从1开始累积起来,但是从实际看下来,COUNT(A1,4)在当天一直等于1。 想让老师看看,该怎样修改,可以达到我想要的效果,谢谢!
DIFDAY:=MACD.DIF#DAY; A1:=CROSS(DIFDAY,DEADAY); A2:=COUNT(A1,4)=1; 进场:=ISLASTBAR AND A2; |
-- 作者:FireScript -- 发布时间:2018/8/27 13:53:28 -- 你是否有检查你的DIFDAY 和DEADAY的引用呢? 如下才能正确引用: DIFDAY:"MACD.DIF#DAY";
DEADAY:"MACD.DEA#DAY"; |
-- 作者:mhw307 -- 发布时间:2018/8/27 14:08:38 -- 测试过,这2种引用是一样的。 |
-- 作者:FireScript -- 发布时间:2018/8/27 14:40:12 -- 1.你原先的引用方式 我本地甚至都编译不了。 2.假设正常引用。你代码里面就是判断统计最近4个K A1=1的数量是否等于1。 所以你可以查看下当天小时K对应的A1值的情况了。 你可以在小时线上把A1,A2都输出出来。 另外考虑到你是小引大,当日几个小时K线上引用到的 DIFDAY,DEADAY值应该都是一样的吧。 光从代码暂时无法判断你这个是什么情况了,另外你是走完K运行还是固定轮询运行的呢,每个小时K上都有开仓信息?。
|
-- 作者:mhw307 -- 发布时间:2018/8/27 15:08:46 -- 举例来说: 比如今天第一根K线就满足了日线金叉(CROSS),照道理,第二根K线的时候用COUNT(A1,4),计算得出的周期应该是2,但是在小时线上,这个周期仍然是1,实际上当天4根K线都是1; 似乎日线CROSS对于每根小时线都是成立的。 |
-- 作者:FireScript -- 发布时间:2018/8/27 15:36:57 -- 我知道你这个思路是什么意思。 但是现在问题是如果你是小时K DIFDAY:"MACD.DIF#DAY"; DIFDAY:"MACD.DEA#DAY"; 这种引用在当天的小时K线上引用的值都应该是一样的,因为他们引用到的都是同一个日线的macd下的dif和dea,这种情况下 COUNT(A1,4)=1; 这个条件 至多在当天的前三个K才可能成立。并且还要要求昨日日线满足macd金叉才行。 按照正常逻辑 不可能出现你说的情况的,每个K的count都返回1。所以需要你直接在图表上输出你的a1,a2等变量值。 我不清楚你到底如何检查你的变量返回值的,是图表输出?还是根据实际下单信号倒推出来的。
|
-- 作者:mhw307 -- 发布时间:2018/8/27 16:34:49 -- 我图片发不上来,我用的是在图表上输出,当天小时线上4根K的A2都是1,A1显示的是当天第一个K为1. |
-- 作者:mhw307 -- 发布时间:2018/8/27 16:43:48 -- 我明白了,日线CROSS在小时K上只成立了一次,所以用COUNT(A1,4)肯定等于1;看来我这样的做法是有问题的。
请教老师,有其它方法可以做到我想要的效果吗? |
-- 作者:FireScript -- 发布时间:2018/8/27 17:24:05 -- count函数处理逻辑是这样:如果4个K 的a1都是1,那么在最后一个K上,返回值肯定是4.这个函数机制是没问题的 。问题在于按照你的代码 ,今日的几个小时K上的A1值肯定是一样的,不可能是不同的值的,我本地直接测试,是这样不会错的。 这上面最后面几个K对应的DIFDAY,DIFDAY 都是一样的。也就是说a1值对应的也是一样的。不会有差异的。 你上面发的代码是完整代码吗?我无论如何重现不了你说的情况。 [此贴子已经被作者于2018/8/27 17:24:17编辑过]
|
-- 作者:mhw307 -- 发布时间:2018/8/28 9:12:39 -- 我找到原因了,我引用的是“MACD.DIFF#DAY”;不是“MACD.DIF#DAY”。 使用“MACD.DIFF#DAY”的话,A1只出现在当天第一个K线上, 使用“MACD.DIF#DAY”,A1会出现在当天所有K线上。
但是我发觉不管我用哪个,似乎都没法达到我的要求; 比如今天第二根K线出现了日线金叉,使用“MACD.DIF#DAY”,A1会从当天第一根K线开始为1,也就是说在第二根K线的时候,使用COUNT(A1,4)会等于2,变成类似未来函数的样子。 请教老师,这种情况下有什么其他办法解决吗?
|