以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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;
DEADAY:=MACD.DEA#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值肯定是一样的,不可能是不同的值的,我本地直接测试,是这样不会错的。


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看
这上面最后面几个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,变成类似未来函数的样子。

请教老师,这种情况下有什么其他办法解决吗?