以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  求助!!!!!!  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=74056)

--  作者:qdxzhy126
--  发布时间:2015/1/6 20:41:37
--  求助!!!!!!
variable:多止损=0;

if holding>0 and DYNAINFO(7)<zs then 多止损:=多止损+1;
if holding<=0  then 多止损:=0;


 if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;

上面代码是否有问题,如果没问题为什么“多止损”测试后的最大值到1就不往上加了。
运行环境为:
图片点击可在新窗口打开查看此主题相关图片如下:mk)q%q4c$~{40d1_s`s0rj.jpg
图片点击可在新窗口打开查看



--  作者:FexTel
--  发布时间:2015/1/6 21:15:22
--  
variable:多止损=0;

if holding>0 and DYNAINFO(7)<zs then 多止损:=多止损+1;
if holding<=0 then 多止损:=0;


if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;

 

//DYNAINFO(7)表示最新价,历史返回的都是当心最新的值

交易代码是逐k运行的哦,多止损刷历史值的时候一定有问题的。你这边历史要用C做下处理


--  作者:百湛必胜客
--  发布时间:2015/1/6 23:11:40
--  
用globalvariable
--  作者:FexTel
--  发布时间:2015/1/7 9:07:09
--  

1,globalvariable //一样的,实际运行没有问题。重启或者停止交易后还是会被重新初始化计算,返回结果前后不一致的

2,这边关键问题在于您要对实时K线和历史K线做区分的

最新的一根K你可以用EXTGBDATASET记录,历史你要单独记录(不能使用DYNAINFO(7))

 

 


--  作者:百湛必胜客
--  发布时间:2015/1/7 12:43:54
--  
用globalvariable 就能解决楼主的不继续累加问题了
--  作者:FexTel
--  发布时间:2015/1/7 13:11:42
--  
处理是可以的,但是你重启软件或者重新启动图表交易后globalvariable还是会被初始化的哦
--  作者:qdxzhy126
--  发布时间:2015/1/22 19:05:34
--  
我用了跨周期调用,代码如下:


globalvariable:多止损=0;
miaohh:STKINDIEX(品种,\'止损.hh\',0,22,1,100),NODRAW;//返回1秒周期的高点H
if holding>0 and miaohh<zs then 多止损:=多止损+1;
if holding<=0 then 多止损:=0;
if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;

现在多止损可以进行累加了,不过新的问题产生了当执行完止损操作if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;后,holding状态值不发生变化,原来是1,执行止损后应该是0,可是holding状态值,依然是1不变化。请帮忙解决!!!!谢谢了




--  作者:qdxzhy126
--  发布时间:2015/1/22 19:24:25
--  
如果 把if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;换成if H<ZS then sell(1,0,MARKETR),ORDERQUEUE;holding值就正常了,我想是不是 “多止损”变量类型的定义问题?如果是该如何解决呢??
--  作者:FexTel
--  发布时间:2015/1/23 8:49:40
--  

1,看下4楼说明,图表是依据历史交易信号的。您这种直接采用动态行情数据在代码里面要做处理

另外CLOSE,在盘中就表示最新价哦

//如下处理下就好了,另外您可以看下全局变量说明http://www.weistock.com/WeisoftHelp/zbgs003.htm

 

variable:多止损=0;

if holding>0 and C<zs then 多止损:=多止损+1;
if holding<=0 then 多止损:=0;


if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;

--  作者:qdxzhy126
--  发布时间:2015/1/26 16:24:19
--  
按如下改写后出现的问题是 “多止损” 在1分钟K线走完后才进行累加,而我的要求是只要出现holding>0 and C<zs就进行累加,  另外variable:多止损=0; 改成 globalvariable:多止损=0;后“多止损”可以时时累加就正确了,不过holding
的状态就不正确了。如此简单的问题怎么实现呀!!!!(变量用variable ,holding的状态是正确的)


variable:多止损=0;

if holding>0 and C<zs then 多止损:=多止损+1;
if holding<=0 then 多止损:=0;
if (多止损>3) then sell(1,0,MARKETR),ORDERQUEUE;