设为首页收藏本站

 找回密码
 注册
查看: 37048|回复: 3
打印 上一主题 下一主题

能否举例通俗的解释一下 SetGlobalVar和 GetGlobalVar? [复制链接]

初级大户

程序化交易探索者

Rank: 5Rank: 5

精华
2
UID
99
积分
662
帖子
159
主题
42
阅读权限
60
注册时间
2007-8-12
最后登录
2015-6-9
跳转到指定楼层
1#
发表于 2007-8-18 02:13:15 |显示全部楼层 |倒序浏览
我对编程不熟,对于变量的赋值和局部变量全局变量等东西,理解很粗浅.

我在看老师写海龟交易系统的公式的时候,发现要用到
SetGlobalVar  设置某个索引的全局变量值
GetGlobalVar  获取某个索引的全局变量值


能否请斑竹举个简单的例子,通俗的解释一下 SetGlobalVar和 GetGlobalVar是什么意思?

初级大户

程序化交易探索者

Rank: 5Rank: 5

精华
2
UID
99
积分
662
帖子
159
主题
42
阅读权限
60
注册时间
2007-8-12
最后登录
2015-6-9
2#
发表于 2007-8-18 03:13:09 |显示全部楼层
在斑竹写的海龟交易系统中,第11楼有这样一段代码:

Begin
        N = XAverage(TrueRange,Length);
        TurtleUnits = (CurrentCapital()*0.01) /(N * BigPointValue());
        TurtleUnits = IntPart(TurtleUnits);
        
        DonchianHi = Highest(Close[1],Length);
        DonchianLo = Lowest(Close[1],Length);
        
        If(CrossOver(High,DonchianHi))
        {
                // 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真实情况,并能尽量保证成交
                myEntryPrice = min(high,DonchianHi + PriceScale*MinMove);
                Buy(TurtleUnits,myEntryPrice);
                IsEntryThisBar = True;
                SetGlobalVar(0,myEntryPrice);                        // 保存第一次开仓的价格

这最后一句为什么要写? 前面不是已经对 myEntryPrice 进行赋值,并保存在变量 myEntryPrice 中了吗?在后面直接引用和重新赋值不就行了吗?为什么还要来一句:
    SetGlobalVar(0,myEntryPrice);                        // 保存第一次开仓的价格

使用道具 举报

初级大户

程序化交易探索者

Rank: 5Rank: 5

精华
2
UID
99
积分
662
帖子
159
主题
42
阅读权限
60
注册时间
2007-8-12
最后登录
2015-6-9
3#
发表于 2007-8-18 03:20:10 |显示全部楼层
我不是很明白,举例说吧
if(------------)
{
   ------------;
   ------------;
   ------------;
  a = 123;
}
难道在  if 语句后面的大括号里面第一次申明和赋值的变量(例如 变量a)都是属于局部变量吗?离开这个大括号之后就不能引用了吗? 是否使用个SetGlobalVar就把像a这样的局部变量转换为了可以在 其他地方引用的全局变量?

使用道具 举报

初级大户

程序化交易探索者

Rank: 5Rank: 5

精华
2
UID
99
积分
662
帖子
159
主题
42
阅读权限
60
注册时间
2007-8-12
最后登录
2015-6-9
4#
发表于 2007-8-18 03:26:26 |显示全部楼层
自己找了点资料,请斑竹帮我看下,这个说明是否正确?

局部变量是在只有在“{”和“}”中间定义并起作用的变量,在内存中基本上是一堆栈形式存放的变量,只有程序运行到“{”时出现,离开“}”后消失的变量。
全程变量是定义在“{”和“}”之前的变量,基本上是在整个“{”和“}”之间都起作用的,但是如果在“{”和“}”之间也定义与之相同的变量的话,则程序运行到“{”和“}”之间时用的是在“{”和“}”定义的局部变量
如:
int x;
main()
{
    ...//使用全局变量x
    if(...)
    {
        int x;
        ...;//使用局部变量x
    }
}
程序运行到不同的过程不同的边另起作用
形参是放在函数名后的括号里面的变量,供函数之间传递数值使用。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-21 09:56

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部