设为首页收藏本站

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

几个问题 [复制链接]

Rank: 5Rank: 5

精华
1
UID
20
积分
810
帖子
153
主题
19
阅读权限
60
注册时间
2007-7-22
最后登录
2013-7-9
跳转到指定楼层
1#
发表于 2007-8-10 16:53:03 |只看该作者 |倒序浏览
1.编译消息提示"Left"没有被声明.
2.参数优化时,理论上应到最大值(或者)+最小变动时停止,但现在是最大值+最小值+最小变动才停止.
3.变量在使用后,没有重新赋值前应保持原值,现在为0.
4.建议增加一个初始化函数,这个函数只在程序启动时运行一次,并保存程序中用到的变量值,这样可以大大提高程序处理速度.

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
2#
发表于 2007-8-10 17:12:06 |只看该作者
原帖由 轮回 于 2007-8-10 16:53 发表
1.编译消息提示"Left"没有被声明.
2.参数优化时,理论上应到最大值(或者)+最小变动时停止,但现在是最大值+最小值+最小变动才停止.
3.变量在使用后,没有重新赋值前应保持原值,现在为0.
4.建议增加一个初始化函数,这个 ...


1、Left没有被声明的问题,应该是旧版本文件没有删掉。您删除掉安装目录xiaUser目录(会清掉您的工作区,公式等文件,请先备份),再重新登录试试!
2、不太明白您的意思,可否举例说明一下?
3、看来你是用过TradeStation的公式的,变量定义时不填写初始值,会默认初始化0,每个Bar都是这样。
这和TradeStation的变量一直保持有所不同,如果你需要在当前Bar用以前Bar的值,用 变量名[nOffset]来获取。
4、其实有这样类似的函数,看看GetGlobalVar和SetGlobalVar。
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
20
积分
810
帖子
153
主题
19
阅读权限
60
注册时间
2007-7-22
最后登录
2013-7-9
3#
发表于 2007-8-11 23:54:09 |只看该作者
1.第1个问题已解决.
2.参数优化时,假设设定最小值为1,最大值为3,步长0.1,那么应该从1到3优化计20次就够了,但现在要优化30次.所以建议大于3时停止优化.
3."如果你需要在当前Bar用以前Bar的值,用 变量名[nOffset]来获取"。庞大的数组序列会消耗很大的资源和速度.没有实用价值.
4.在BEGIN-END程序内的函数每周都是会执行的.用GetGlobalVar和SetGlobalVar好象不能实现只运行一次的要求.举例来说,假设我在交易指令里需要频繁使用5个变量,而这5个变量是根据以往数据经过复杂运算得出(如系数等),由于运算需要较长时间,且一旦算出就暂时不会更改,那么就只要在程序开始运行时执行一次就够了,同时也没有必要使用极耗资源的变量序列(长度=5*BAR),因此我觉得若有一个Init()函数会提供很大的方便.

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
4#
发表于 2007-8-12 11:45:01 |只看该作者
1、关于参数优化,好像步长设置为小数有这种问题,您暂时可以用整数来代替。下次升级会修改这个问题的。
2、变量是在当前周期有效,序列变量是在所有周期有效,要满足您的需求,只好用序列变量。如果觉得序列变量会耗费资源,其实也可以用全局变量[GetGlobalVar和SetGlobalVar函数]来进行转换,我们和TradeStation的实现机制不同,所以这个功能没办法兼容。
3、关于每个周期执行SetGlobalVar和GetGlobalVar的问题,其实很好解决。
在您的技术分析或交易指令里面写以下代码:
  1. If(CurrentBar==0)
  2. {
  3.     Init();
  4. }
复制代码

然后新建一个用户函数:Init。在Init内部就可以实现您的算法了。
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
20
积分
810
帖子
153
主题
19
阅读权限
60
注册时间
2007-7-22
最后登录
2013-7-9
5#
发表于 2007-8-12 12:50:52 |只看该作者
我现在就是用上面判断CurrentBar的办法,看来想省略每次都判断还不行.
即使用序列变量也要不停的赋前值才有效.因为在很多情况下[nOffset]是不方便计算的.

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2007-8-12 13:16:02 |只看该作者
原帖由 轮回 于 2007-8-12 12:50 发表
我现在就是用上面判断CurrentBar的办法,看来想省略每次都判断还不行.
即使用序列变量也要不停的赋前值才有效.因为在很多情况下[nOffset]是不方便计算的. ...


1、这个判断的时间很短的,不会影响效率。
2、序列变量的机制就是这样,用XXX[nOffset]的方式来取值速度也比较快,是直接定位,也不会影响运算速度。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-10 16:51

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部