以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教一下,关于数据引用方面的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=137573)

--  作者:安天步
--  发布时间:2016/8/5 9:55:16
--  请教一下,关于数据引用方面的问题
编写了一个股指期货的程序,想根据大盘指数上穿均线来买卖,出现一点问题,请教老师帮忙看看。

A1:="999999$CLOSE";            //这行也可以改成A1:=CALLSTOCK(\'999999\',VTCLOSE,6,0);
A2:=MA(A1,5);
A3:=MA(A1,10);

平空:SELLSHORT(CROSS(A1,A2) OR CROSS(A1,A3),HOLDING,THISCLOSE);

IF CROSS(A2,A1) THEN
开空:BUYSHORT(HOLDING=0,1,THISCLOSE);

IF CROSS(A3,A1) THEN
开空:BUYSHORT(HOLDING=0,1,THISCLOSE);

调试都通过了,但是用在图表交易中,都提示我第一行解释错误,请老师帮忙看看,是否有隐藏的问题,谢谢

--  作者:jinzhe
--  发布时间:2016/8/5 9:58:19
--  

并没有第一行解释错误,用户是不是还有其他代码没贴出来?

上面的问题是两个“开空”重复了, 一个改成“开空1”一个改成“开空2”


--  作者:安天步
--  发布时间:2016/8/5 10:03:49
--  
都贴出来了,我双击公式放在图表上的时候,公式旁边显示“解释错误”
--  作者:jinzhe
--  发布时间:2016/8/5 10:06:54
--  

1.如同我上面改的那样,没有你所说的问题

2.没看到你讲的“解释错误”


图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

--  作者:安天步
--  发布时间:2016/8/5 12:57:34
--  
懂了,实际上就是开空1和开空2没标数字的原因
--  作者:安天步
--  发布时间:2016/8/8 10:53:55
--  
A0:=CALLSTOCK(\'399106\',VTCLOSE,6,0);
A1:=CALLSTOCK(\'399106\',VTCLOSE,6,-1);
A2:=CALLSTOCK(\'399106\',VTCLOSE,6,-2);
A3:=CALLSTOCK(\'399106\',VTCLOSE,6,-3);
A4:=CALLSTOCK(\'399106\',VTCLOSE,6,-4);
A5:=CALLSTOCK(\'399106\',VTCLOSE,6,-5);
A6:=CALLSTOCK(\'399106\',VTCLOSE,6,-6);
A7:=CALLSTOCK(\'399106\',VTCLOSE,6,-7);
A8:=CALLSTOCK(\'399106\',VTCLOSE,6,-8);
A9:=CALLSTOCK(\'399106\',VTCLOSE,6,-9);
A10:=CALLSTOCK(\'399106\',VTCLOSE,6,-10);
A11:=CALLSTOCK(\'399106\',VTCLOSE,6,-11);
A12:=CALLSTOCK(\'399106\',VTCLOSE,6,-12);
A13:=CALLSTOCK(\'399106\',VTCLOSE,6,-13);
A14:=CALLSTOCK(\'399106\',VTCLOSE,6,-14);
A15:=CALLSTOCK(\'399106\',VTCLOSE,6,-15);
A16:=CALLSTOCK(\'399106\',VTCLOSE,6,-16);
A17:=CALLSTOCK(\'399106\',VTCLOSE,6,-17);
A18:=CALLSTOCK(\'399106\',VTCLOSE,6,-18);
A19:=CALLSTOCK(\'399106\',VTCLOSE,6,-19);

AA5:=(A0+A1+A2+A3+A4)/5;
AA10:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9)/10;
AA15:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14)/15;
AA20:=(A0+A1+A2+A3+A4+A5+A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19)/20;

AFZ:=CALLSTOCK(\'399106\',VTCLOSE,1,0);
PK:=CROSS(AFZ,AA20) or cross(afz,aa5) or cross(afz,aa10) or cross(afz,aa15);
平空:SELLSHORT(PK,HOLDING,MARKET);

IF CROSS(AA5,AFZ) THEN
开空1:BUYSHORT(HOLDING=0,1,MARKET);

IF CROSS(AA10,AFZ) THEN
开空2:BUYSHORT(HOLDING=0,1,MARKET);

IF CROSS(AA15,AFZ) THEN
开空3:BUYSHORT(HOLDING=0,1,MARKET);

IF CROSS(AA20,AFZ) THEN
开空4:BUYSHORT(HOLDING=0,1,MARKET);

求助一下,请金哲老师帮忙看看,能不能将上面的公式进行简化,感觉这样编写既繁琐又增加计算量。

--  作者:jinzhe
--  发布时间:2016/8/8 10:56:27
--  

 

aa5:=stkindi(\'399106\',\'ma.ma1(5)\',0,6);

aa10:=stkindi(\'399106\',\'ma.ma1(10)\',0,6);

aa15:=stkindi(\'399106\',\'ma.ma1(15)\',0,6);

aa20:=stkindi(\'399106\',\'ma.ma1(20)\',0,6);


--  作者:安天步
--  发布时间:2016/8/8 11:23:09
--  
这是要先做一个MA的技术指标,然后再引用吗?
--  作者:jinzhe
--  发布时间:2016/8/8 11:26:09
--  
不用,系统自带就有ma指标
[此贴子已经被作者于2016-8-8 11:26:16编辑过]

--  作者:安天步
--  发布时间:2016/8/9 11:24:08
--  

aa5:=stkindi(\'399106\',\'ma.ma1(5)\',0,6,-1);

aa10:=stkindi(\'399106\',\'ma.ma1(10)\',0,6,-1);

aa15:=stkindi(\'399106\',\'ma.ma1(15)\',0,6,-1);

aa20:=stkindi(\'399106\',\'ma.ma1(20)\',0,6,-1);


AFZ:=CALLSTOCK(\'399106\',VTCLOSE,1,0);
KDPK:=CROSS(AFZ,AA20) or cross(afz,aa5) or cross(afz,aa10) or cross(afz,aa15);
平空:TSELLSHORT(KDPK,THOLDING,MKT);
开多:TBUY(KDPK AND THOLDING<=0,1,MKT);    

KKPD:=CROSS(AA5,AFZ) OR CROSS(AA10,AFZ) OR CROSS(AA15,AFZ) OR CROSS(AA20,AFZ);
开空:TBUYSHORT(KKPD AND THOLDING>=0,1,MKT);
平多:TSELL(KKPD,THOLDING,MKT);        

金哲老师,帮忙看看上面的代码运行有没有问题?
另外这里THOLDING换成TBUYHOLDING(1)和TSELLHOLDING(1)可以吧?
还有,图表上有没有专门的多头持仓和空头持仓?