欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 有关全局变量使用的几个困惑

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4296人关注过本帖树形打印复制链接

主题:有关全局变量使用的几个困惑

帅哥哟,离线,有人找我吗?
滚雪球
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
有关全局变量使用的几个困惑  发帖心情 Post By:2014/5/9 10:37:47    Post IP:114.244.31.73[只看该作者]

一开始在图表交易系统使用VARIABLE来作为全局变量,后来改成了后台轮询,发现VARIABLE定义的全局变量不行了,每次都被初始化成了0,
网上查了一下说后台要使用EXTGBDATA,EXTGBDATASET来取值赋值,改了一下正常了。看了编译时的警告帖子
http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=48570 貌似不太推荐使用这种方式,推荐使用GLOBALVARIABLE,
由于后台没法评测,我就在图表系统下将VARIABLE改成GLOBALVARIABLE试了一下,发现改了之后彻底失效,我的程序大概是这样
(逐K线,仅刷最后一根K线运行)
VARIABLE:MAXWIN=0;
//GLOBALVARIABLE:MAXWIN=0;
....
IF MAXWIN<WIN THEN BEGIN
MAXWIN:=WIN;
END

使用MAXWIN记录开仓以来的最大盈利,WIN表示当前盈利,如果当前盈利大于之前的最大盈利就给MAXWIN赋一个新值

现在的问题是:
1. VARIABLE和GLOBALVARIABLE到底什么区别?为什么VARIABLE工作正常的用GLOBALVARIABLE就不能正常工作?
2. 后台程序编译的时候金字塔也没有提示说VARIABLE不能用,那VARIABLE到底能不能用于后台,轮询? 到底是是因为后台还是因为轮询影响了VARIABLE的正常工作?
3. EXTGBDATA,EXTGBDATASET我看到有两种使用形势,一种就是 EXTGBDATA('MAXWIN'),这种变量名加了单引号,貌似无需
申明就可以直接使用,还有一种方式是EXTGBDATA(MAXWIN),没有单引号,之前要给MAXWIN:=xxx赋值,相当于隐性的申明了一下,
如果不这样隐性的申明是否需要使用VARIABLE:MAXWIN=0 这样来申明?这些帮助文件里面也没写。
4. GLOBALVARIABLE和EXTGBDATA,EXTGBDATASET说是运行效果一样,但我在评测的时候试了一下GLOBALVARIABLE不能正常工作
因此没进一步研究,但EXTGBDATA,EXTGBDATASET运行正常,我感觉这两者好像并不一样。我想问GLOBALVARIABLE是专用于后台吗?

 回到顶部
帅哥哟,离线,有人找我吗?
lichenghu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/5/9 10:56:02    Post IP:116.226.229.175[只看该作者]

http://www.weistock.com/WeisoftHelp/zbgs003.htm 看下全局变量说明

 

2,后台是只刷新最新的K线,所以VARIABLE定义的全局变量每次刷新都会重新初始化,导致不能记录历史运行情况

 

3,字符变量,一定要加单引号的。从来没听说过不加单引号的用法

 

 



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
滚雪球
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
  发帖心情 Post By:2014/5/9 11:14:03    Post IP:114.244.31.73[只看该作者]

不加单引号的用法确实有,见金字塔提供的海龟后台模型的例子

 回到顶部
帅哥哟,离线,有人找我吗?
lichenghu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/5/9 11:18:42    Post IP:116.226.229.175[只看该作者]

 看下人家的变量定义,已经定义为字符串变量了

STRENTRYBARPOS:=STRCAT(STKLABEL,'ENTRYBARPOS')

[此贴子已经被作者于2014/5/9 11:19:06编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
滚雪球
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
  发帖心情 Post By:2014/5/9 11:19:40    Post IP:114.244.31.73[只看该作者]

加了单引号,EXTGBDATA,EXTGBDATASET是否就无需申明全局变量?

 回到顶部
帅哥哟,离线,有人找我吗?
lichenghu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/5/9 11:22:11    Post IP:116.226.229.175[只看该作者]

 一个是申明,一个是取值。和加单引号有啥关系?

EXTGBDATA('A')//取得单值全局变量A

EXTGBDATASET('A',1OOO);//定义单指全局变量A,值为1000



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
滚雪球
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
  发帖心情 Post By:2014/5/9 11:31:40    Post IP:114.244.31.73[只看该作者]

我大概知道了
EXTGBDATASET在赋值的时候就算是定义了,因此不需要额外的申明
金字塔自带的后台移动止损止盈的例子把我搞晕了

//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
//该模型运行于后台程序化模式

ZH1:'1000';
PZ1:'IF00';
VARIABLE:A=0; -----------------------------------这一句其实完全没有必要,对吧?

//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);

//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);



//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落

//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( '','' ,0 )>0 AND EXTGBDATA('a' )=0 THEN BEGIN
EXTGBDATASET( 'a',1 );
END

//使A始终表示监控开始后的最高价
IF DYNAINFO(  7)>EXTGBDATA('a' ) and EXTGBDATA('a' )>0 THEN BEGIN
EXTGBDATASET( 'a',DYNAINFO(  7));
END

//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA('a' )-DYNAINFO(  7)>5*MINDIFF and EXTGBDATA('a' )>0 THEN BEGIN
TSELL(1,1,MKT );
EXTGBDATASET( 'a',0);
END
//*******************************

 回到顶部
帅哥哟,离线,有人找我吗?
lichenghu
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:5895 积分:3774 威望:0 精华:0 注册:2012/1/1 0:00:01
  发帖心情 Post By:2014/5/9 11:36:17    Post IP:116.226.229.175[只看该作者]

 没用。回头会改正


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com
 回到顶部