以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  【12.30帖子恢复】eric917 关于初始化全局变量  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=60462)

--  作者:RogarZ
--  发布时间:2013/12/30 17:37:56
--  【12.30帖子恢复】eric917 关于初始化全局变量
请问一下我这样每天初始化全局变量正确吗?
IF TIME>=090100 AND TIME<091500 THEN
BEGIN

EXTGBDATASET(\'TOTAL_BVOL\',0) ; //当天日内多头总持仓
EXTGBDATASET(\'TOTAL_SVOL\',0) ; //当天日内空头总持仓
END

但是运行的时候没有没有帮我归零,请问是为什么呢?

--  作者:RogarZ
--  发布时间:2013/12/30 17:38:38
--  

【jinzhe回复】

运行在股指上?

改成

currenttime>091501 and currettime<091515

 

金字塔3.01版对全局变量做了调整.

建议你使用 Virable变量, EXTGBDATASET这种超全局变量数据库不要用在这个地方


--  作者:RogarZ
--  发布时间:2013/12/30 17:39:28
--  

【eric917 回复】 

 

意思就是0915之前是不能初始化全局变量咯?


我下面还有一个语句想在开盘的一刻立即开一行多单和一张空单

下面这样写可以实现吗?
IF TIME>=091500 AND TIME<=091505 AND EXTGBDATA(\'BKV_G0\')=0 THEN
BEGIN
TBUY(1,SS,MKT);
EXTGBDATASET(\'BKV_G0\',1) ; //G0的多头仓位标记为1,持有多头
EXTGBDATASET(\'TOTAL_BVOL\',EXTGBDATA(\'TOTAL_BVOL\')+SS); //系统当天所持有的总多头持仓 + 手数
END

IF TIME>=091500 AND TIME<=091505 AND EXTGBDATA(\'SKV_G0\')=0 THEN
BEGIN
TBUYSHORT(1,SS,MKT);
EXTGBDATASET(\'SKV_G0\',1) ; //G0的空头仓位标记为1,持有空头
EXTGBDATASET(\'TOTAL_SVOL\',EXTGBDATA(\'TOTAL_SVOL\')+SS); //系统当天所持有的总空头持仓 + 手数
END
 
 
但要使用后台程序化,不是说只能用EXTGBDATASET 这种吗?
我都模型是日内模型,我想每天开盘前都运行它,它都会自动把该模型的全局变量归零,再开始当天的交易
那应该使用哪种变量比较好呢?谢谢

 
Virable变量 好像只能在图表吧,在后台现在那种变量会比较稳定啊?有点混乱了

--  作者:RogarZ
--  发布时间:2013/12/30 17:40:29
--  

【王峰回复】

你上面的代码是可以的

 
3.01版之后的EXTGBDATASET,默认就只在最后一根K线才能对数据库进行设置的,如果你是在开盘之后才启动的后台交易,由于TIME>=091500 AND TIME<=091505这个条件已经错过了,所以才导致不能初始化正确


--  作者:RogarZ
--  发布时间:2013/12/30 17:40:49
--  

【eric917 回复】

 

谢谢,现在3个问题(股指,后台程序化)

1) 我使用后台程序化是使用 EXTGBDATASET 还是 其他的变量比较稳定适合?.

2)我想在开盘的一刻,立即开一张多单一张空单,锁仓,请问可以实现吗?
如果要实现,应该怎么写呢?谢谢

3)如果我想股指开盘前 自动初始化全部的全局变量(在2)之前就要初始化),这个请问可以实现吗?

--  作者:RogarZ
--  发布时间:2013/12/30 17:41:49
--  

【jinzhe回复】

1. 用ext

2

if dynainfo(207)>091501 and dynainfo(207)<091505 then begin

tbuy(tbuyholdingex(\'\',\'\',0)=0,1,mkt);

tbuyshort(tsellholdingex(\'\',\'\',0)=0,1,mkt);

end

3.if currenttime>090001 and currettime<091458 then begin

全局变量定义语句;

end

要在开盘前启动

 

【王峰回复】

1,EXTGBDATASET 使用的地方主要是用来存放断电保存全局状态,也就是重启金字塔也能保存的状态,只要有这个需要,你就可以使用他.

问题2,假设你是在1分钟K线运行,那么这样就可以

IF TIME=091600 THE

BEGIN

......

END

注意金字塔的K线时间是没有091500的,假设是09点15开盘,那么第一根K线的时间是091600

3,要在开盘前初始化动作,有一些后台设置要搞的.

首选你要勾选不间断监控,并选择固定轮循模式运行后台程序化.

然后代码这样写

IF CURRENTTIME>=091300 AND CURRENTTIME<091500THE

BEGIN

...... 初始化动作

END

 


--  作者:RogarZ
--  发布时间:2013/12/30 17:42:06
--  

【eric917 回复】

 

谢谢

2)请问一下dynainfo(207) 是什么意思呢?
如果我不是使用tbuy(tbuyholdingex(\'\',\'\',0)=0,1,mkt);,而是使用原来的TBUY(1,SS,MKT);这样可以吗?

3)请问一下time和currenttime有什么区别呢?
 
补充:

问题2,假设你是在1分钟K线运行,那么这样就可以

IF TIME=091600 THE

BEGIN

......

END

注意金字塔的K线时间是没有091500的,假设是09点15开盘,那么第一根K线的时间是091600


你好,请问如果是5分钟K线,就要写成092000吗?

[此贴子已经被作者于2013/12/30 17:42:23编辑过]

--  作者:RogarZ
--  发布时间:2013/12/30 17:42:46
--  

【jinzhe回复】

 

2。行情时间

可以,但是用指定买持更好处理一点

3。time是k线时间,比如股指1分钟第一根k线是091600,那么行情在这一根k线上走时,一直是这个数据,比如当前时间是091501,那么这个函数返回091600,当前时间是091502,那么也是返回09160

currettime是当前时间,当前多少时间就是多少时间,比如当前时间是091501,那么这函数返回是091501,当前时间是091502 ,那么这个函数返回091502


--  作者:RogarZ
--  发布时间:2013/12/30 17:43:18
--  

【eric917 回复】

 

好,非常感谢


“指定买持更好处理一点”

如果后天加载了数个模型,可能会引起混乱吧?
还想请问一下,下面两个,哪个是代表服务器行情时间,哪个是代表本机行情时间的呢?

dynainfo(207)

currettime

谢谢

--  作者:RogarZ
--  发布时间:2013/12/30 17:43:48
--  

【jinzhe回复】

 

dy代表交易所的行情时间

cur代表本地时间