以文本方式查看主题

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

--  作者:zzzlondon
--  发布时间:2012/2/14 10:27:48
--  [求助]关于extgbdata

代码片段如下,逐K线运行,目的是提前2秒进场,但如果进场后不再满足进场条件,不让信号消失

 

以下内容为程序代码:

1 if ref(date,1)<>date then begin
2     extgbdataset(\'ex03\',0);    //开盘第一分钟,将做多次数记为0
3     extgbdataset(\'ex04\',0);    //开盘第一分钟,将做空次数记为0
4 end
5
6 if barpos>30 then begin
7     if 做多条件 then bb:=1;
8     if 做空条件 then ss:=1;
9 end
10
11 sec:=dynainfo(207);
12 secfilter:=mod(sec,100)>=secEntry;    //如果秒数到达58(即提前2秒下单)
13
14 if secfilter and islastbar then begin
15     if ceiling(sec/100.0)*100=EXTGBDATA(\'ex01\') then begin    //如果当前时间是最后一次进场时间
16         if EXTGBDATA(\'ex02\')=1 then buy(1,1,thisclose);
17         if EXTGBDATA(\'ex02\')=-1 then buyshort(1,1,thisclose);
18     end
19     else if ss=1 and holding=0 and EXTGBDATA(\'ex04\')<2 then begin    //满足做空条件,且当天做空次数<2
20         buyshort(1,units,limitr,close-4*mindiff),IGNORECHECKPRICE;
21         extgbdataset(\'ex01\',ceiling(sec/100.0)*100);    //记录(最后一次)进场时间
22         extgbdataset(\'ex02\',-1);    //记录进场方向为做空
23         trades2:=EXTGBDATA(\'ex04\')+1;
24         extgbdataset(\'ex04\',trades2);    //做空次数+1

25     end
26     else if bb=1 and holding=0 and EXTGBDATA(\'ex03\')<2 then begin    //满足做多条件,且当天做多次数<2
27         buy(1,units,limitr,close+4*mindiff),IGNORECHECKPRICE;
28         extgbdataset(\'ex01\',ceiling(sec/100.0)*100);    //记录(最后一次)进场时间
29         extgbdataset(\'ex02\',1);        //记录进场方向为做多
30         trades1:=EXTGBDATA(\'ex03\')+1;
31         extgbdataset(\'ex03\',trades1);    //做多次数+1
32     end
33 end
34
35 if (time=EXTGBDATA(\'ex01\') and date=currentdate and not(islastbar)) then begin    //如果不是最后一跟bar,且是最后一次进场时间,显示进场
36     if EXTGBDATA(\'ex02\')=1 then begin
37         buy(1,units,thisclose);
38     end
39     if EXTGBDATA(\'ex02\')=-1 then begin
40         buyshort(1,units,thisclose);
41     end
42 end
43
44 bb:=0;
45 ss:=0;

 

实盘运行时,(图表交易,固定轮询-高频)在10:04有做空信号,查看工具-数据-全局变量,EX01=100400,正确,EX02=-1,正确,但EX04=0,应该等于1,请版主帮忙看下红色语句


--  作者:fly
--  发布时间:2012/2/14 14:32:22
--  

红色语句看起来没问题.

 

23         trades2:=EXTGBDATA(\'ex04\')+1;
24         extgbdataset(\'ex04\',trades2);    //做空次数+1

 

将这两句并为1句:extgbdataset(\'ex04\',EXTGBDATA(\'ex04\')+1);  

重点跟踪一下全局变量ex04在语句执行前后的值


--  作者:王锋
--  发布时间:2012/2/14 20:16:06
--  
建议使用专业版的信号消失后恢复持仓功能
--  作者:阿火
--  发布时间:2012/2/14 21:13:47
--  

你第一句 就把 ex04 就赋值为 0 了。 而且这个是每次都执行的。

 


--  作者:zzzlondon
--  发布时间:2012/2/17 8:51:14
--  

对哦,非常感谢