以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [求助]全局变量问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76296)

--  作者:渴望知识
--  发布时间:2015/3/9 14:42:59
--  [求助]全局变量问题

老师好

我定义了一个全局变量,但是后面却不执行,麻烦帮忙看下我写的有没有问题,谢谢。

 

runmode:0;

VARIABLE:QS=0;//组合策略实现

szqs:=。。。。。。;

xdqs:=............;

if(szqs or xdqs ,qs:=1,qs:=-1);

 

if qs>0 then begin
BUY(holding=0  and  090000<time and time<02300000,1,limitr,c),ORDERQUEUE; //开多
BUYSHORT(holding=0 and 090000<time and time<02300000,1,limitr,c),ORDERQUEUE;//开空
end

 

这里如果我把IF的语句都撤掉,那正常开单,但是加上就没有任何开单了,是不是我的全局变量这个定义有问题呢?


--  作者:jinzhe
--  发布时间:2015/3/9 14:52:27
--  

1  (szqs or xdqs ,qs:=1,qs:=-1); 多了两个冒号

2  time<02300000 后面多了两个0

3  你这样写只会开多不会开空


--  作者:渴望知识
--  发布时间:2015/3/9 15:40:43
--  

谢谢提醒多了两个0。

老师说的多了两个冒号,我曾经(刚才)都改过的,也还是一样不开仓,没有被执行。


--  作者:渴望知识
--  发布时间:2015/3/9 15:42:08
--  

 

[此贴子已经被作者于2015/3/9 15:42:40编辑过]

--  作者:渴望知识
--  发布时间:2015/3/9 15:47:42
--  
哈哈,还有啊,怪了,我把时间的那2个0去掉了,反而不开仓了啊,哈哈,真是怪了。
--  作者:jinzhe
--  发布时间:2015/3/9 15:50:51
--  
这不会。请贴出全部的代码来我们做本地测试
--  作者:渴望知识
--  发布时间:2015/3/9 16:05:41
--  

//变量定义
runmode:0;
A:=mindiff;//取模组交易合约的最小变动价位
VARIABLE:QS=0;//组合策略实现(单边行情1,横盘震荡0)

//趋势判断策略(上涨趋势szqs,下跌xdqs,盘中震荡pzzd,震荡振幅zdzf)
gpx:=ema(c,5);//跟盘线
qsx:=ema(c,60);//趋势线
kpx:=ema(c,20);//控盘线
qsllv:=llv(close,10);
qshhv:=hhv(high,10);
pzzdcs:count(CROSS(gpx,kpx),20) + count(cross(kpx,gpx),20);//盘中震荡次数
zdzf:=all(abs(qshhv-qsx)/qsx>0.01 or abs(qsllv-qsx)/qsx>0.01,10);//趋势中最高(低)价始终大于趋势线1%
szqs:=qsllv>qsx and pzzdcs<=2 and zdzf;//上涨趋势条件
xdqs:=qshhv<qsx and pzzdcs<=2 and zdzf;//下跌趋势条件

if(szqs or xdqs ,qs=1,qs=-1);

//单边趋势操作(不逆市做)

//if qs>0 then begin
BUY(holding=0  and szqs   and  090000<time and time<02300000,1,limitr,c),ORDERQUEUE; //开多
BUYSHORT(holding=0 and xdqs  and 090000<time and time<02300000,1,limitr,c),ORDERQUEUE;//开空
sell(close<qsx   and holding>0,0,limitr,c),ORDERQUEUE;//平多止损
sellshort(close>qsx  and holding<0,0,limitr,c),ORDERQUEUE;//平空止损
//end


--  作者:渴望知识
--  发布时间:2015/3/9 16:09:26
--  
而且还有个问题,日线以上级别的,这家伙不干活啊,呵呵,不明白了。
--  作者:jinzhe
--  发布时间:2015/3/9 16:10:15
--  
把qs那一段代码删了都没信号,没信号和全局变量没关系
--  作者:jinzhe
--  发布时间:2015/3/9 16:12:16
--  
sellshort(close>qsx  and holding<0,0,limitr,c),ORDERQUEUE;//平空止损
BUY(holding=0  and szqs   and  (time>090000 and time<=235900)or  (time>=000000 and time<023000),1,limitr,c),ORDERQUEUE; //开多
sell(close<qsx   and holding>0,0,limitr,c),ORDERQUEUE;//平多止损
BUYSHORT(holding=0 and xdqs  and (time>090000 and time<=235900)or  (time>=000000 and time<023000),1,limitr,c),ORDERQUEUE;//开空
你的时间段就设置错了,重新编了一下,可以了