以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请问老师,以下的开多语句该怎么写,编译老是通不过  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166214)

--  作者:cjy123
--  发布时间:2018/10/30 13:30:38
--  请问老师,以下的开多语句该怎么写,编译老是通不过
请问老师,以下的开多语句该怎么写,编译老是通不过,谢谢!

buy:(((cross(CLOSE,ma1) or z4) and CLOSE>ma3),2,market);
--  作者:wenarm
--  发布时间:2018/10/30 13:41:07
--  

buy是函数,不能用冒号

buy(((cross(CLOSE,ma1) or z4) and CLOSE>ma3),2,market);

 


--  作者:FireScript
--  发布时间:2018/10/30 13:45:17
--  
 定义的变量不要和已有的关键词冲突,关键词一般是显眼蓝色的。
--  作者:cjy123
--  发布时间:2018/10/30 14:06:51
--  老师帮我看一下这个编写得是否有错误好吗
老师帮我看一下这个系统编写得是否有错误好吗,怎么编译老通不过,谢谢!

MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
MA3:=MA(CLOSE,D);

z1:=ref(hhv(h,10),ENTERBARS+1);//开仓前10个K最高价
p1:=hhv(h,ENTERBARS+1);//临时变量a
p2:=ref(hhv(h,10),ENTERBARS-9);//临时变量b
//2个临时变量是因为部分函数不能在if语句下使用
if ENTERBARS+1>0 and ENTERBARS+1<=9 then  z2:=p1; else if then z2:=p2;//  开仓后10个K,不满足10个K按照已有的K去统计
z3:=cross(CLOSE,ma1);//收盘价上穿ma1
z4:=c>ma1+MINDIFF and c<=ma1+15*MINDIFF;//收盘价在ma1+(1-15)点范畴之内。

Z5:=REF(LLV(LOW,10),ENTERBARS+1);
P3:=LLV(LOW,ENTERBARS+1);
P4:=REF(LLV(LOW,10),ENTERBARS-9);
if ENTERBARS+1>0 and ENTERBARS+1>=9 then  z6:=p3; else if then z6:=p4;
Z7:=cross(ma1,CLOSE);
Z8:=c<ma1-MINDIFF and c>=ma1-15*MINDIFF;

buy(((cross(CLOSE,ma1) or z4) and CLOSE>ma3),2,market);

if buy then 
begin
(((z1>z2) or z3 or z4) and holding>0);
buy(1,2,market); 
end

K1:=(MA1>MA2) AND (ASKPRICE<=MA2-25*MINDIFF);
K2:=(MA1<MA2) AND (ASKPRICE<=MA1-25*MINDIFF);
SELL((K1 OR K2),0,MARKETR);


BUYSHORT((CROSS(MA1,CLOSE) OR Z8) AND CLOSE<MA3,2,MARKET);

if BUYSHORT then 
begin 
(((z5>z6) or z7 or z8) and holding>0);
buyshort(1,2,market);
end

K3:=(MA1<MA2) AND (BIDPRICE>=MA2+25*MINDIFF);
K4:=(MA1>MA2) AND (BIDPRICE>=MA1+25*MINDIFF);
SELLSHORT((K3 OR K4),0,MARKETR);

系统思路是好下:

指标: 5日均线

       10日均线

       60日均线

  

   当价格在60日均线以上只开多,60日均线以下只开空.

 

开多:价格在60日均线以上,当前根K线收盘价至下向上突破5日均线或当前根K线收盘价>5日均线(1-15个基点)范围内,在下根K线开盘以市价开多2.

加仓:当开多后10K线最高价>开多前10K线最高价,当价格再次回调至5日均线附近时,当前根K线收盘价至下向上突破5日均线或当前根K线收盘价 >5日均线(1-15个基点)范围内,在下根K线开盘以市价加多2,以此累推.

止损:5日均线>10日均线时,当价格<(10日均线-25),以市价全部平仓.

       5日均线<10日均线时,当价格<(5日均线-25),以市价全部平仓.

 

 

开空:价格在60日均线以下,当前根K线收盘价至上向下突破5日均线或当前根K线收盘价<5日均线(1-15个基点)范围内,在下根K线开盘以市价开空2.
加仓:当开空后10K线最低价<开空前10K线最低价,当价格再次回调至5日均线附近时,当前根K线收盘价至上向下突破5日均线或当前根K线收盘价 <5日均线(1-15个基点)范围内,在下根K线开盘以市价加空2,以此累推.

止损:5日均线<10日均线时,当价格>(10日均线+25),以市价全部平仓.

       5日均线>10日均线时,当价格>(5日均线+25),以市价全部平仓.


--  作者:FireScript
--  发布时间:2018/10/30 14:26:30
--  
 你这里,我修改个样式给你看下:

开仓:buy(((cross(CLOSE,ma1) or z4) and CLOSE>ma3),2,market);


if (((z1>z2) or z3 or z4) and holding>0)
then
begin
buy(1,2,market);
end

你原先写的不符合基本语法了。我给你调整下基本语法。后面开空的也是同理修改下试下。
还有那个均线参数A  B D不知道你是否定义了,如果没有你补充下定义。

--  作者:cjy123
--  发布时间:2018/10/30 14:50:50
--  好的,谢谢老师
好的,谢谢老师
--  作者:cjy123
--  发布时间:2018/10/30 17:27:05
--  
老师您好,按您的提示修改了,可是反应到图表上全都是乱了,并没有按我原来的思路开平仓,是不是哪里出了问题了搞错了,麻烦您能不能帮我检查一下,谢谢
--  作者:FireScript
--  发布时间:2018/10/31 9:47:14
--  
 帖下你自己修改后的代码。你改过之后的代码不贴出来,我怎么知道你的问题在什么地方呢。