以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=5153)

--  作者:mel_6e
--  发布时间:2011/2/13 14:40:17
--  请帮忙看下程序测试和思路偏差的原因

jk:=VALUEWHEN(DATE<>REF(DATE,1),OPEN);//今开盘价
MA10:=MA(CLOSE,10);
MA30:=MA(CLOSE,30);
MA100:=MA(CLOSE,100);
BK:=MA10>MA30 AND close>MA100 and CROSS(CLOSE,REF(HHV(HIGH,10),1));
SK:=MA10<MA30 AND close<MA100 and CROSS(REF(LLV(LOW,10),1),CLOSE);
new:close,LINETHICK0;
low10:REF(LLV(LOW,10),1),LINETHICK1;//用来调试问题的
high10:REF(HHV(HIGH,10),1),LINETHICK1;//同上

{开多} ENTERLONG: BK,TFILTER; //10上穿30且close大于100,等待破前10根线的最高价开多
{平多} EXITLONG: (MA10<MA30 AND CROSS(REF(LLV(LOW,10),1),CLOSE))or time>1458,TFILTER; //10在30下,且突破前10根线的最低价平多
{开空} ENTERSHORT:SK,TFILTER;
{平空} EXITSHORT: (MA10>MA30 AND CROSS(CLOSE,REF(HHV(HIGH,10),1))) or time>1458,TFILTER;

 

平仓条件本来是写10下穿30,但也有同样问题暂时就写成10<30吧,关键是,平仓有几次不对,已经满足10<30,并且破了前十根线最低,还是不平仓。测试品种ru1105,截其中一次2010年12月22,(应该10:32就平多且反手),交易信号连线明显不对,反手时间也不对,刚接触金字塔,请看下是什么问题。

 

图片点击可在新窗口打开查看

 

[此贴子已经被作者于2011-2-13 14:48:58编辑过]

--  作者:mel_6e
--  发布时间:2011/2/13 15:55:41
--  

没贴上,再贴一次

图片点击可在新窗口打开查看

[此贴子已经被作者于2011-2-13 16:00:03编辑过]

--  作者:z7c9
--  发布时间:2011/2/13 20:00:06
--  
10:32时 ma10 = 37395 ma30 =37326.333 不满足 ma10<ma30的条件
--  作者:阿火
--  发布时间:2011/2/13 22:51:10
--  

这个问题我以前也碰到过

问题就出在 cross

把 CROSS(REF(LLV(LOW,10),1),CLOSE) 改为 C<REF(LLV(LOW,10),1) 即可

或者写个变量记录 是否已经发生过 C<REF(LLV(LOW,10),1) ,然后结合均线判断下单条件是否成立

[此贴子已经被作者于2011-2-13 22:52:42编辑过]

--  作者:mel_6e
--  发布时间:2011/2/13 23:49:43
--  
以下是引用z7c9在2011-2-13 20:00:06的发言:
10:32时 ma10 = 37395 ma30 =37326.333 不满足 ma10<ma30的条件

你说的是1:32吧,我是1105合约,ma10=37424,ma30=37439,肯定满足的


--  作者:mel_6e
--  发布时间:2011/2/13 23:57:08
--  
以下是引用leevolvo在2011-2-13 22:51:10的发言:

这个问题我以前也碰到过

问题就出在 cross

把 CROSS(REF(LLV(LOW,10),1),CLOSE) 改为 C<REF(LLV(LOW,10),1) 即可

或者写个变量记录 是否已经发生过 C<REF(LLV(LOW,10),1) ,然后结合均线判断下单条件是否成立

[此贴子已经被作者于2011-2-13 22:52:42编辑过]

我把cross全部改成小于,大于的条件判断语句了,貌似可以,是没理解透cross的逻辑,还是本来就存在这种bug,这个函数存在的意义在哪,改成大于小于判断语句后会不会有新的毛病?

什么情况下非用这个函数不可呢?

 

还有用变量,判断是不是得用 if then语句了,编程基础不好,麻烦了

[此贴子已经被作者于2011-2-14 0:14:56编辑过]

--  作者:gxnnxxt
--  发布时间:2011/2/14 2:21:00
--  
cross函数不好用,如果要表达穿越,试着选用LOW<指定价,HIGH>指定价.可自行建立一个试验指标进行对比,很容易看出问题所在