以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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;
将这两句并为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 -- 对哦,非常感谢 |