您好,我用的后台交易程序,希望用一个全局变量n,来记录是否送过单。请问这样使用是否有问题。 附上打印的部分log文件,输出的文本好像不太对,求教。谢谢!
cond:=#buycond.xg#;
//全局变量,记录是否买入,0是没送过买单,1是送过单
VARIABLE:n=0;
IF (CURRENTTIME>=130000 and CURRENTTIME<=140000) THEN BEGIN
//开仓
DEBUGFILE('D:\log.TXT',STKNAME(),2);
DEBUGFILE('D:\log.TXT','n:%.0f',n);
if n=0 then begin
TCANCEL(1,0);
buynumber:=10000;
FLOORNUMBER:=FLOOR(buynumber/100)*100;//股票数量变为100的整数倍送单
FLOORCHICANG:=FLOOR(TBUYHOLDINGEX('','',0)/100)*100;
if (cond=1 AND FLOORCHICANG<FLOORNUMBER) then BEGIN
Tbuy(FLOORCHICANG<FLOORNUMBER,FLOORNUMBER-FLOORCHICANG,LMT,DYNAINFO(28));
n:=1;
end
end
DEBUGFILE('D:\log.TXT','n:%.0f',n);
END
//尾盘重置全局变量
IF CURRENTTIME>=145950 THEN BEGIN
n:=0;
end
log。txt中部分文本
2016-09-27 14:40:21.948 中信证券
2016-09-27 14:40:21.949 n:1
2016-09-27 14:40:21.967 n:1
2016-09-27 14:40:21.968 盐 田 港
2016-09-27 14:40:21.970 n:0
2016-09-27 14:40:22.040 n:0
2016-09-27 14:40:22.041 北化股份
2016-09-27 14:40:22.042 n:1
2016-09-27 14:40:22.115 n:1
2016-09-27 14:40:22.116 柳化股份
2016-09-27 14:40:22.117 n:1
2016-09-27 14:40:22.184 n:1
我预期的情况有这么几种:
A 满足买入条件,没有送过单,此时n=0,然后运行tbuy,然后n置为1,打印出来是
类似 中信证券
n=0
n=1;
B 满足买入条件,送过单了,此时n=1,不运行tbuy,n还是1,打印出来是类似
C 不满足买入条件,没有送过单,n=0,不运行tbuy,然后n=0,打印出来是类似
D 不满足买入条件,送过单了,n=1,不运行tbuy,n还是1,打印出来是类似
实际上,没有送过买单,应该只会出现A和C的情况。 但是实际log中出现的c和d的情况。。。
我第一次用金字塔的全局变量,不知道使用上哪里出了什么问题。盼解答,谢谢!
后台要用后台的全局变量
globalvariable,你用的那个是图表上的,不适用于后台
再多问一句。首先我指的是后台交易的程序。EXTGBDATASET申明的变量可以多策略共享,那同样的,对单个策略监控的不同品种,EXTGBDATASET申明的变量是不是对每个品种都是同样的一个变量?