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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → Variable全局变量问题

   

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


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

主题:Variable全局变量问题

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


加好友 发短信
等级:论坛游侠 帖子:138 积分:947 威望:0 精华:0 注册:2010/7/20 12:13:13
Variable全局变量问题  发帖心情 Post By:2010/7/28 11:26:43    Post IP:183.16.148.215[只看该作者]

在后台交易模拟中发现Variable全局变量好像有问题,做一个测试程序:后台交易运行,固定时间间隔5秒。

 

Variable: Myholding=0;

DEBUGFILE('C:\test.txt','VS:%.0f',Myholding);
IF ISLASTBAR THEN
BEGIN
 IF Myholding=0 THEN
 BEGIN
  Myholding:=1;
  DEBUGFILE('C:\test.txt','Myholding:%.0f',Myholding);
 END
END

 

按照我的理解,在Myholding:=1后,应该保持为1。但实际测试文件的结果如下:

2010-07-28 11:12:00.265    VS:0
2010-07-28 11:12:00.265    Myholding:1
2010-07-28 11:12:05.734    VS:0
2010-07-28 11:12:05.734    Myholding:1
2010-07-28 11:12:10.718    VS:0
2010-07-28 11:12:10.718    Myholding:1
2010-07-28 11:12:15.718    VS:0
2010-07-28 11:12:15.718    Myholding:1
2010-07-28 11:12:20.734    VS:0
2010-07-28 11:12:20.734    Myholding:1
2010-07-28 11:12:25.718    VS:0
2010-07-28 11:12:25.718    Myholding:1
2010-07-28 11:12:30.734    VS:0
2010-07-28 11:12:30.734    Myholding:1
2010-07-28 11:12:35.718    VS:0
2010-07-28 11:12:35.734    Myholding:1

能请教一下是怎么回事?Variable定义的全局变量为什么被不停地初始化了呢?


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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/28 11:33:43    Post IP:125.34.167.210[只看该作者]

Variable: Myholding=0;

每次执行一次循环检测时,都会被初始化一次,如果你需要变量一致记住,需要使用全局变量数据库,保存变量状态,请参考EXTGBDATA,EXTGBDATASET

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=2240


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


加好友 发短信
等级:论坛游侠 帖子:138 积分:947 威望:0 精华:0 注册:2010/7/20 12:13:13
  发帖心情 Post By:2010/7/28 11:39:13    Post IP:183.16.148.215[只看该作者]

那和下面您在其他帖子里的描述不一样啊??

 

全局变量有两种,一种是在公式里的,每次执行都被初始化一次的,这里的每次执行指的是每次金字塔执行公式系统的运行,即从1周期到BARCOUNT的过程。

比如一个变量这样声明:

variable:maxprofit=0;

他只会在第一个周期被初始化赋值为0,其他周期均不会对此变量进行赋值,比如:

variable:maxprofit=0;

IF BARPOS = 2 THEN

   MAXPROFIT := 10;

 

IF BARPOS = 10 THEN

   MAXPROFIT := 30;

 

AA:MAXPROFIT;

 

通过AA的显示曲线,用户应该会明白全局变量的用途

 

金字塔还有一种全局变量,可以保存数据到全局变量数据库中,具体参考 EXTGBDATASET 和  EXTGBDATA 函数的调用

[此贴子已经被作者于2010-7-28 11:39:42编辑过]

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/28 12:03:12    Post IP:125.34.167.210[只看该作者]

怎么不一样了?每次执行一次循环信号检测,都需要重新初始化公式系统

[此贴子已经被作者于2010-7-28 12:03:47编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:138 积分:947 威望:0 精华:0 注册:2010/7/20 12:13:13
  发帖心情 Post By:2010/7/28 12:35:48    Post IP:183.16.148.215[只看该作者]

啊!后台交易,每次循环都会初始化公式!又明白了一点后台交易的机理。谢谢!

 

不过,有关软件运行机理方面的东西希望能够有集中介绍。


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


加好友 发短信
等级:新手上路 帖子:98 积分:610 威望:0 精华:0 注册:2010/8/11 17:50:06
  发帖心情 Post By:2010/10/24 20:05:57    Post IP:221.226.20.110[只看该作者]

顶出来学习

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


加好友 发短信
等级:论坛游侠 帖子:415 积分:1791 威望:0 精华:0 注册:2009/11/20 21:02:10
使用全局变量实际交易无法使用移动止损止盈  发帖心情 Post By:2010/10/25 8:34:35    Post IP:115.193.193.38[只看该作者]

代码工作在图表自动交易模式下
当出现开仓后,开仓价格相比,最大损失超过2%止损
当出现盈利后,与最大盈利价格相比,回落到60%幅度后止赢离场}

MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,30);

variable:maxprofit=0;//有仓位时最大获利幅度

//开仓
IF CROSS(MA1,MA2) THEN
BEGIN
 BUY(1,1);
 maxprofit:=0;
END

//平仓
SELL(CROSS(MA2,MA1),0);

//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;

if holding > 0 and enterbars > 0 then
begin
 win:=(c-enterprice)/enterprice*100; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
 
 win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

//出现浮动亏损比如2%平仓
止损多:SELL(win < -2,0);
 
// 出现最高盈利后,回落到盈利的60%平仓出场
止赢多:SELL(win2 >= 60 and openprofit > 0, 0);

//开仓
IF CROSS(MA2,MA1) THEN
BEGIN
 BUYSHORT(1,1);
 maxprofit:=0;
END

//平仓
SELLSHORT(CROSS(MA1,MA2),0);

//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;

if holding < 0 and enterbars > 0 then
begin
 win:=(enterprice-c)/enterprice*100; //记录最大盈利
 if win > maxprofit then
  maxprofit:=win;
 
 win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end

//出现浮动亏损比如2%平仓
止损空:SELLSHORT(win < -2,0);
 
// 出现最高盈利后,回落到盈利的60%平仓出场
止赢空:SELLSHORT(win2 >= 60 and openprofit > 0, 0);

 

这是帮主的一个例子,按照前边的说法,每一次循环全局变量就初始化一次,所以,这里使用全局变量实际交易无法使用???


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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2010/10/25 9:01:11    Post IP:58.246.57.26[只看该作者]

可以的.

楼主可参考论坛里variable相关的帖子,以助理解!



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

客户服务部

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

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

service@weistock.com

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

 回到顶部