以文本方式查看主题

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

--  作者:qkl586
--  发布时间:2010/8/19 10:22:19
--  测试正常的公式没有信号显示

我根据指南中单均线模型修改了其它公式,结果图表上没有信号显示,问题出在哪里呢?请明示。

单均线模型:

INPUT:N(15,1,100,1);
MAN:=MA(CLOSE,N);
SP :=TIME>=145500 OR (CLOSE<MAN AND BARSLAST(CROSS(MAN,CLOSE ))>=3);

BP :=TIME>=145500 OR (CLOSE>MAN AND BARSLAST(CROSS(CLOSE,MAN ))>=3);

BK :=TIME>=091500 AND TIME<145500 AND CLOSE>MAN AND BARSLAST(CROSS(CLOSE,MAN ))>=3;

SK :=TIME>=090000 AND TIME<145500 AND CLOSE<MAN AND BARSLAST(CROSS(MAN,CLOSE ))>=3; 
{平多} EXITLONG: SP,TFILTER;
{平空} EXITSHORT: BP,TFILTER;
{开多} ENTERLONG: BK,TFILTER;

{开空} ENTERSHORT: SK,TFILTER;

拟修改的模型修改前(可以正常操作):
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
{平多} EXITLONG: CROSS(d,k),ORDERQUEUE,TFILTER;
{平空} EXITSHORT: CROSS(k,d),ORDERQUEUE,TFILTER;
{开多} ENTERLONG: CROSS(k,d),ORDERQUEUE,TFILTER;

{开空} ENTERSHORT: CROSS(d,k),ORDERQUEUE,TFILTER;

 

修改后(无信号显示):

 

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);
{平多} EXITLONG: CROSS(d,k)AND BARSLAST(CROSS(d,k))>=3,ORDERQUEUE,TFILTER;

{平空} EXITSHORT: CROSS(k,d)AND BARSLAST(CROSS(k,d))>=3,ORDERQUEUE,TFILTER;

{开多} ENTERLONG: CROSS(k,d)AND BARSLAST(CROSS(k,d))>=3,ORDERQUEUE,TFILTER;

{开空} ENTERSHORT: CROSS(d,k)AND BARSLAST(CROSS(d,k))>=3,ORDERQUEUE,TFILTER; 

 


--  作者:董小球
--  发布时间:2010/8/19 11:51:37
--  
貌似是你的K和d根本没有交叉 自然没信号了
--  作者:qkl586
--  发布时间:2010/8/19 12:27:56
--  
把公式中的“AND BARSLAST(CROSS(d,k))>=3”去掉就有信号
--  作者:董小球
--  发布时间:2010/8/19 12:44:44
--  
哦 明白了 ENTER 这种交易函数很简单 别用复合条件了,你吧BARSLAST条件放到外面去,就只留一个CROSS条件在ENTER函数里 就可以了 要么 你就用 BUY SELL 等交易函数
--  作者:fly
--  发布时间:2010/8/19 16:38:17
--  

用这几行语句测试一下,注意看J和I的输出值可不可以同时为真(即,非0),楼主就知道问题出在哪里了。

 

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,P1,1);
D:=SMA(K,P2,1);

 

j:BARSLAST(CROSS(k,d)),linethick0;
i:CROSS(k,d),linethick0;


--  作者:qkl586
--  发布时间:2010/8/19 22:11:00
--  
J的输出值为5,I为0,问题找到了,但是怎么处理呢?在论坛中没有搜索到相关的解决办法。是不是要改变I的条件才能出来信号?
--  作者:fly
--  发布时间:2010/8/20 9:27:27
--  

两个条件在所有周期上,都是-----一个为真时另一个为假。您不能这么设置条件呀!

 

{平空} EXITSHORT: CROSS(k,d) AND BARSLAST(CROSS(k,d))>=3,ORDERQUEUE,TFILTER;

 

在一根K线上,您的条件1--CROSS(k,d)和条件2--BARSLAST(CROSS(k,d))>=3,永远不可能同时为真

 

原因:当条件CROSS(k,d)成立的那根K线上,条件BARSLAST(CROSS(k,d))====0


--  作者:qkl586
--  发布时间:2010/8/21 13:45:25
--  请问公式测试系统如何优化外汇和伦敦金
明白了,谢谢!