设为首页收藏本站

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

TB公式之常见问题(Q&A)! [复制链接]

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
跳转到指定楼层
1#
发表于 2007-11-8 16:14:33 |只看该作者 |倒序浏览
Q1: 如何在公式编辑器中快速显示系统函数帮助?

A1:
1、在公式编辑器中,用鼠标选中系统函数;
2、点击工具栏的帮助按钮,将会打开对应的帮助文件。




Q2: 我自己建的公式没有编译,但在公式编辑器中不能编译啊,编译按钮是灰的,我该怎么做?

A2:
您只需要在公式代码中任意位置加入一个空格,然后再删掉这个空格,就可以进行编译了。
这是因为该公式以前被保存过,如果代码没有被修改过, 就不能触发进行保存编译。

Q3:保存公式的时候,需要时间很长是为什么?

A3:
保存公式的时候,需要做大量的编译工作,所以会比较慢,请耐心等待几秒钟。

Q4:如何快捷的在公式编辑器中跳转到调用的用户函数中?

A4:鼠标双击函数名,选中,点工具栏的一个按钮,就可以转到用户函数的代码中。



Q5:我的公式死活编译不过,还没有任何提示?

A5:有两种情况可能导致这样的问题:
1、应该是公式的简称里面有中文,TB公式不支持中文的函数或公式名称,所以您只能删掉这个公式,重新建一个,不要用包含中文的名字。
2、您的公式里面可能有中文的符号,或者其它不可显示的字符,您需要仔细检查一下代码。也可以采取一行一行加注释的方式来排除问题。

Q6:总是报“锁定编译目标文件超时”是什么原因?

A6:
有两种可能。
1、已经打开的图表调用了技术指标或交易指令,并且行情更新较快,导致编译时覆盖旧文件失败。这个时候,您可以关闭先所有的图表窗体在试试看。
2、可能是公式的写法有问题,是系统现在还不能识别的错误。您可以另外写一个简单的公式看看能不能编译通过,如果能通过,那就证明是这个公式有问题。如果不是,那我也不知道具体原因:(。您可以考虑导出您自己的公式,备份自己的工作区,然后删掉User目录重新登录。

Q7:我新建的用户函数编译提示:Return语句的返回值类型与公式定义的返回值类型不符。我该怎么做?

A7:
您只需要在公式编辑器中打开属性设置对话框,在最后一页[返回类型]中将返回之类型设置为正确的类型。
如果您希望函数返回一个数字,那您可以选择数值型。
如果您希望函数返回一个条件,那您可以选择布尔型。
如果您希望函数返回一个字符串,那您可以选择字符串。

Q8:我建了一个指标,怎样让它在副图上显示,在公式属性里设置,我看到有“主图”和“子图”两个选项,但是是灰色的,不能用

A8:
1、您可以在图表中直接选中该指标,把它拖到图表下面的时间横坐标轴的位置,然后放开鼠标。 这只是暂时解决显示的问题,指标的默认还是主图显示。
2、您可以在公式管理器中,选中技术指标,点属性按钮,在默认页面,设置主图,子图。
3、您也可以在技术指标的公式编辑器中,点属性按钮,进行设置。

以下是相关的内容:
http://www.tradeblazer.net/forum/thread-719-1-3.html

Q9:如何用Commentary进行调试?

A9:
1、代码里面这么写:


2、在图表里面双击鼠标左键:


Q10:为什么出现最终目标文件编译错误?

A10:
目前发现有以下几种情况会导致这个问题出现:
1、整体公式比较多,累计到一定程度,就会出现这个问题,对于这种情况,暂时没法解决,只好先把不用的公式备份出来,然后删掉一些公式。
2、用了一些C++的关键字来命名变量,比如.switch,case,int,Public,protected,class,long,double....有好几百个,可以考虑加上一些前缀,比如My****,这样就可以了。
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
2#
发表于 2007-11-8 16:16:33 |只看该作者
Q: 如何在交易开拓者中编写技术指标?

A:见下贴:
如何在交易开拓者中编写技术指标?


Q:请详细讲解一下交易系统的创建和使用过程

A:
1、请先参考一下这个帖子:
如何在交易开拓者中编写技术指标?
2、交易指令的创建方式和技术指标类似;
3、Txt文件导入需要在公式编辑器中进行,这和公式的导入/导出是不同的。
4、公式写好之后,需要保存,编译。编译成功之后,就可以在超级图表中调用交易指令了。
5、如果条件合理,交易指令会在图表中显示出相应的讯号,如果讯号出不来,有可能是交易设置中资金太少,或者是最大持仓设置有误。

以下是另外一个帖子,更加详细的解释了如何创建交易系统!
http://www.tradeblazer.net/forum/thread-58-1-14.html
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
3#
发表于 2007-11-8 16:18:59 |只看该作者
Q1:关于全局变量的处理,能否举例通俗的解释一下 SetGlobalVar和 GetGlobalVar?

A1:
系统公式目前提供50个全局变量。这50个全局变量附着在超级图表上,即一个图表的各个交易指令可以有50个全局变量。
您可以通过这些全局变量在交易指令中进行数据交换。关掉超级图表之后及全部删除,新建一个超级图表,新建出50个初值为无效值的变量。用户自行通过GetGlobalVar,SetGlobalVar进行保存及获取数据的操作。全局变量不会因为当前Bar的变化而变化。

每一个图表的单个技术指标,K线型态,特征走势都有50个全局变量。一个图表的所有交易指令共有50个全局变量。
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
4#
发表于 2007-11-8 16:25:32 |只看该作者
Q:如何处理讯号出现又消失的情况?

A:有以下两种方式:
1、使用Buy(1,Close,True)这样的格式,将信号延迟到该Bar走完,下一个Bar的第一个Tick出现的时候发送。
这个时候您可以用Buy(1,Close,True),表示的意思是用当前Bar的收盘价在下一个Bar开始时候交易。
您也可以用Buy(1,NextOpen,True),表示用下一个Bar的开盘价交易。
对于上面的这种处理方式,还有另外一种变通的处理,那就是取上一个Bar的条件或数据,只用当前Bar的Open价来进行判断。这样公式会写得更清晰。以下两段代码效果是相同的。
  1. Condition = 您的交易条件;
  2. If(Condition)
  3. {
  4.     Buy(1,NextOpen,True);
  5. }
复制代码

  1. Condition = 您的交易条件;
  2. If(Condition[1])
  3. {
  4.     Buy(1,Open);
  5. }
复制代码


2、第一种处理方式对于时间敏感性不高的系统,是可以采取的,但有些系统,如果选择延迟发送,则会导致比较大的性能下降。
此时我们需要选择另外一种处理方式。使用High,Low,Open这样能够保持住的价格来进行条件判断。
是价格往上的突破形成的交易操作用High来判断。是价格下上的突破形成的交易操作用Low来判断。其他不确定方向的情况最好用Open来判断。
比如,以下两种情况在实时交易方面同样迅速,但后面的就不会出现讯号消失的问题。
  1. AvgClose = AverageFC(Close,10);
  2. If(CrossOver(Close,AvgClose))
  3. {
  4.     Buy(1,AvgClose+MinMove*PriceScale);
  5. }
复制代码

  1. AvgClose = AverageFC(Close,10);
  2. If(CrossOver(High,AvgClose))
  3. {
  4.     Buy(1,AvgClose+MinMove*PriceScale);
  5. }
复制代码
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
5#
发表于 2007-11-8 16:27:43 |只看该作者
Q1:AverageFC和Average有什么区别?

A1:
1、Average和AverageFC都是内建的用户函数,目的都是用来求N个Bar以来的平均值,您可以直接看到实现的代码。
2、Average和AverageFC有什么不同呢?AverageFC是指FastCalculate,即快速计算。当这两个函数的第二个变量,即N个Bar是常量时,使用AverageFC,提高计算效率。当N是不确定的变量时,则必须使用Average,否则会出现计算问题。
3、系统里面类似的用户函数还有Summation和SumamtionFC,Highest和HighestFC,Lowest和LowestFC等。

Q2:如何区别这几个函数:CurrentCapital,A_CurrentEquity,A_FreeMargin?

A2:见下贴。
http://www.tradeblazer.net/forum/thread-93-1-15.html

另外一个相关的贴:
http://www.tradeblazer.net/forum/thread-181-1-13.html

Q3:请教Close(i)和Close[ i ]有和区别?

A3:见下贴。
http://www.tradeblazer.net/forum/thread-167-1-14.html

Q4:请教关于numerc和numericseries的区别?

A4:
Numeric表达单个变量.
NumericSeries表达与BAR数量等长的数组变量.
定义为序列变量之后就可以用AAA[1]引用以前的数据.

Q5:请教版主,关于文华的Ref和BarsLast,TB对应的是什么?

A5:见下贴
http://www.tradeblazer.net/forum/thread-599-1-7.html
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
6#
发表于 2007-11-8 16:29:46 |只看该作者
Q:如何修改自动交易测试的开始时间和结束时间?

A: 见下贴。
如何修改自动交易测试的开始时间和结束时间?
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
7#
发表于 2007-11-8 16:34:02 |只看该作者
Q:关于回溯测试和自动交易同步的处理?

A:见下贴
http://www.tradeblazer.net/forum/thread-423-1-7.html
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
8#
发表于 2007-11-8 16:39:27 |只看该作者
Q1:怎样在子图指标中加入K线?

A1:
该功能从V3.0.6版已经开始支持,您需要输出至少4条线,并且按照Open.High,Low,Close来命名。例子如下:

新建一个技术指标,假定命名为Demo,该技术指标将当前的高开低收除2输出到指标中。
  1. Begin
  2.     PlotNumeric("Open",Open/2);
  3.     PlotNumeric("High",High/2);
  4.     PlotNumeric("Low",Low/2);
  5.     PlotNumeric("Close",Close/2);
  6. End
复制代码


Q2:如何实现一个线条的多色显示?

A2:下面有两个例子:

1、如何实现双色的成交量指标!
2、实现渐近色指标!
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
9#
发表于 2007-11-8 16:42:10 |只看该作者
Q: Q_XXXX函数用法?

A:见下贴。
http://www.tradeblazer.net/forum/thread-860-1-2.html
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
10#
发表于 2007-11-8 17:06:35 |只看该作者
Q:如何获得自今日9:00开始到当前K线的个数?

A:见下贴.
http://www.tradeblazer.net/forum/thread-201-1-13.html
交易开拓者 - 期货程序化与量化系统自动交易领航者

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

使用道具 举报

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

bottom

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

GMT+8, 2024-5-4 00:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部