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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [讨论]关于逐周期模式下的Variable型全局变量的理解

   

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


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

主题:[讨论]关于逐周期模式下的Variable型全局变量的理解

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


加好友 发短信
等级:小飞侠 帖子:1882 积分:3310 威望:0 精华:15 注册:2010/3/15 13:11:56
[讨论]关于逐周期模式下的Variable型全局变量的理解  发帖心情 Post By:2010/11/1 13:20:38    Post IP:114.241.170.29[只看该作者]

关于逐周期模式下的Variable型全局变量的理解

 

1.Variable型全局变量的作用范围是单个品种上的每个计算周期。

2.Variable型全局变量在历史测试时只在一个品种上计算一次,所以可以实现全局变量的作用。

3.Variable型全局变量在图表交易时在每个品种的每个Tick上均计算一次,在一个新的计算周期开始时会重新初始化,但因为与holding配合使用,实际每个过去发生的K线上的持仓状态是稳定的,所以也可以实现全局变量的作用。

4.Variable型全局变量在后台交易时在每个品种的每个Tick上均计算一次,在一个新的计算周期开始时会重新初始化,但因为与tholding配合使用,实际每个过去发生的K线上的持仓状态是非稳定的,所以无法实现全局变量的作用。如下面的这段代码:

 

variable:s=0;

 

if tholding=0 then begin

     s:=1;

end;

 

if tholding>0 then begin

     s:=2;

end;

 

 

 

 


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


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

在逐周期模式下,在每根K线上,代码都会重新执行一次.

 

         但,Variable型的全局变量,只会在一开始的时候初始化一次,随后的每个周期,会根据具体条件对此全局变量赋予不同的值,

从而可以让编程者根据其返回值再行判断和利用.

 

下面是一个根据楼主提供信息改编的一个简单的例子,希望可以帮助楼主更好的理解和使用Variable型的全局变量

 

//IF合约,1分钟周期,日内

 

ma5:ma(close,5);
ma15:ma(close,15);

 

//开多平空

if CROSS(ma5,ma15) and time>090100 and time<145000 then
begin
sellshort(holding<0,0,thisclose);
buy(holding=0,1,thisclose);
end

 

//开空平多

if CROSS(ma15,ma5) and time>090100 and time<145000 then
begin
sell(holding>0,0,thisclose);
buyshort(holding=0,1,thisclose);
end

 

//收盘前5分钟平仓
if time > 145500 then
 begin
 sell(holding > 0, 0, thisclose);
 sellshort(holding < 0, 0, thisclose);
 end

 

variable:s=0;                //初始化s=0
if holding>0 then begin
     s:=1;                    //  可以得到 holding>0-----s = 1
end;
if holding<0 then begin
     s:=2;                    //可以得到 holding<0-----s = 2
end;

if holding=0 then begin
     s:=-1;                   //可以得到 holding<0-----s= -1
end

ss:s,linethick0;

 

楼主可以在K线图上看到,S只有在一开始的时候,才被初始化过一次,为0;随后,S一直在1,2,-1之间变化



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

客户服务部

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

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

service@weistock.com

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

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


加好友 发短信
等级:论坛游侠 帖子:514 积分:2695 威望:0 精华:0 注册:2011/3/4 18:24:01
  发帖心情 Post By:2012/10/18 13:55:23    Post IP:14.209.59.161[只看该作者]

在楼上的例子中,
variable:s=0;                //初始化s=0
去掉这行,跟有这个,没有任何区别。

为什么要加这行呢?

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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2012/10/18 14:16:46    Post IP:58.246.57.26[只看该作者]



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

客户服务部

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

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

 回到顶部