设为首页收藏本站

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

为什么A_FreeMargin函数取不到有效值? [复制链接]

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
跳转到指定楼层
1#
发表于 2010-11-3 15:46:57 |只看该作者 |倒序浏览
我做了测试,在开盘前加载交易指令Test6,并且关联账户,然后静等9:00开盘。
测试结果表明在开盘的第一个Bar内,A_FreeMargin(交易帐户的可用资金)的值始终不可用。
请管理员或论坛高手分析原因。
交易指令如下:
  1. Begin
  2.         // 新一天交易开始,取账户数据
  3.         If (Date!=Date[1])
  4.         {
  5.                 If (BarStatus==2)
  6.                 {        If (AccountDataExist) //账户有效
  7.                                 FileAppend("C:\\Test6.Log",Text(CurrentBar)+" "+DateToString(Date)+" "+TimeToString(CurrentTime)+" A_FreeMargin: "+Text(A_FreeMargin)+" "+Text(ContractUnit)+" "+Text(MarginRatio));
  8.                         Else
  9.                                 FileAppend("C:\\Test6.Log",Text(CurrentBar)+"#"+DateToString(Date)+" "+TimeToString(CurrentTime)+IIFString(A_FreeMargin==InvalidNumeric,"N/A",Text(A_FreeMargin)));
  10.                 } Else
  11.                         FileAppend("C:\\Test6.Log",Text(CurrentBar)+"*"+DateToString(Date)+" "+TimeToString(Time)+" CurrentCapital: "+Text(CurrentCapital)+" "+Text(ContractUnit)+" "+Text(MarginRatio));
  12.         }
  13. End
复制代码
上善若水,无欲则刚

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
2#
发表于 2010-11-3 15:57:41 |只看该作者
指令中只输出一天的第一个Bar的记录,测试时图表为1分钟周期。
在历史回测阶段,输出带有*号的记录;在最后一个Bar(包括实时交易时段),输出带有“ ”或#号的记录。
实际上程序在开盘后的第一个Bar内只输出了N/A,表明它没有取到有效的A_FreeMargin值,而此时AccountDataExist是有效的。
以下是记录结果:
0*2010-10-12 13:42:00 CurrentCapital: 500000 10 0.1000
78*2010-10-13 09:00:00 CurrentCapital: 500000 10 0.1000
303*2010-10-14 09:00:00 CurrentCapital: 500000 10 0.1000
528*2010-10-15 09:00:00 CurrentCapital: 500000 10 0.1000
753*2010-10-18 09:00:00 CurrentCapital: 500000 10 0.1000
978*2010-10-19 09:00:00 CurrentCapital: 500000 10 0.1000
1203*2010-10-20 09:00:00 CurrentCapital: 500000 10 0.1000
1428*2010-10-21 09:00:00 CurrentCapital: 500000 10 0.1000
1653*2010-10-22 09:00:00 CurrentCapital: 500000 10 0.1000
1878*2010-10-25 09:00:00 CurrentCapital: 500000 10 0.1000
2100*2010-10-26 09:00:00 CurrentCapital: 500000 10 0.1000
2325*2010-10-27 09:00:00 CurrentCapital: 500000 10 0.1000
2550*2010-10-28 09:00:00 CurrentCapital: 500000 10 0.1000
2775*2010-10-29 09:00:00 CurrentCapital: 500000 10 0.1000
3000*2010-11-01 09:00:00 CurrentCapital: 500000 10 0.1000
3225*2010-11-02 09:00:00 CurrentCapital: 500000 10 0.1000
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
3450*2010-11-03 09:00:00 CurrentCapital: 500000 10 0.1000
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
3#
发表于 2010-11-3 16:01:14 |只看该作者
本帖最后由 efrog 于 2010-11-3 16:02 编辑

应该说,在当天的第一个Bar内,每来一个Tick记录一条(目前都是N/A),但最后一条为什么记录BarStatus==1的情况,这个机理没不明白,请管理员说明。谢谢!
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
4#
发表于 2010-11-3 16:33:59 |只看该作者
明天打算用以下指令测试,进一步明确什么时候能取到A_FreeMargin值。
Begin
  If (BarStatus==2)
  {  If (AccountDataExist)
     {  FileAppend("C:\\Test6.Log",Text(CurrentBar)+"%"+DateToString(Date)+" "+TimeToString(CurrentTime));
         FileAppend("C:\\Test6.Log"," % A_FreeMargin: "+IIFString(A_FreeMargin==InvalidNumeric,"N/A",Text(A_FreeMargin)));
         FileAppend("C:\\Test6.Log"," % ContractUnit:"+Text(ContractUnit)+" MarginRatio "+Text(MarginRatio));
    }
  Else
    { FileAppend("C:\\Test6.Log",Text(CurrentBar)+"#"+DateToString(Date)+" "+TimeToString(CurrentTime));
       FileAppend("C:\\Test6.Log"," # "+IIFString(A_FreeMargin==InvalidNumeric,"N/A",Text(A_FreeMargin)));
    }
  } Else
       FileAppend("C:\\Test6.Log",Text(CurrentBar)+"*"+DateToString(Date)+" "+TimeToString(Time)+" CurrentCapital: "+Text(CurrentCapital)+" "+Text(ContractUnit)+" "+Text(MarginRatio));
End
上善若水,无欲则刚

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20906
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
5#
发表于 2010-11-3 16:34:10 |只看该作者
关联了账户都是可以取到的,不确定问题在哪
公式条件我加 了一个条件,您再试试
  1. Begin
  2.         // 新一天交易开始,取账户数据
  3.         If (Date!=Date[1] && high>low)
  4.         {
  5.                 If (BarStatus==2)
  6.                 {        If (AccountDataExist) //账户有效
  7.                                 FileAppend("C:\\Test6.Log",Text(CurrentBar)+" "+DateToString(Date)+" "+TimeToString(CurrentTime)+" A_FreeMargin: "+Text(A_FreeMargin)+" "+Text(ContractUnit)+" "+Text(MarginRatio));
  8.                         Else
  9.                                 FileAppend("C:\\Test6.Log",Text(CurrentBar)+"#"+DateToString(Date)+" "+TimeToString(CurrentTime)+IIFString(A_FreeMargin==InvalidNumeric,"N/A",Text(A_FreeMargin)));
  10.                 } Else
  11.                         FileAppend("C:\\Test6.Log",Text(CurrentBar)+"*"+DateToString(Date)+" "+TimeToString(Time)+" CurrentCapital: "+Text(CurrentCapital)+" "+Text(ContractUnit)+" "+Text(MarginRatio));
  12.         }
  13. End
复制代码

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
6#
发表于 2010-11-3 16:42:55 |只看该作者
我也几次遇到取不到A函数值(A_BuyPosition等)的问题(在盘中),导致交易指令出现混乱,很让我头疼,感觉好像是tbdatacenter的问题,不知怎么解决,重启TB好像有用。

你说的
但最后一条为什么记录BarStatus==1的情况
,我感觉可能是在你新的bar开始时,TB会把前一个bar的最后一个tick重新运行一遍,论坛里有帖子谈到这一点。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
7#
发表于 2010-11-4 09:12:13 |只看该作者
谢谢二位的指点。
加了管理员加的条件,能取到了A_FreeMargin数据(其中有变化是因为程序自动开仓了),但不明白加上High>Low的原因,请管理员说明。谢谢!
2775*2010-11-03 09:00:00 CurrentCapital: 28508 10 0.1000
3000 2010-11-04 09:00:02 A_FreeMargin: 405088.0000 10 0.1000
3000 2010-11-04 09:00:03 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:04 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:05 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:06 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:06 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:07 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:08 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:09 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:09 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:10 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:10 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:11 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:12 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:12 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:13 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:13 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:14 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:15 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:15 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:16 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:17 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:17 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:18 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:19 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:19 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:20 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:21 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:21 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:22 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:23 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:24 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:24 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:25 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:26 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:26 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:26 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:27 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:28 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:29 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:29 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:30 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:31 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:31 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:31 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:33 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:33 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:34 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:34 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:35 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:35 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:36 A_FreeMargin: 216396.0000 10 0.1000
3000 2010-11-04 09:00:37 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:37 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:38 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:39 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:39 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:40 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:40 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:41 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:41 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:42 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:43 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:43 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:44 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:44 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:45 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:46 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:46 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:47 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:47 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:48 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:49 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:49 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:50 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:50 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:51 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:51 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:52 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:52 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:53 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:54 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:54 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:55 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:55 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:56 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:57 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:57 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:58 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:58 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:00:59 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:00 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:00 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:01 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:01 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:02 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:03 A_FreeMargin: 216166.0000 10 0.1000
3000 2010-11-04 09:01:03 A_FreeMargin: 216166.0000 10 0.1000
3000*2010-11-04 09:00:00 CurrentCapital: 43238 10 0.1000
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
8#
发表于 2010-11-4 09:15:10 |只看该作者
另外问一下,最后自动执行一条BarStatus==1的情况对编程需要注意哪些?
上善若水,无欲则刚

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
9#
发表于 2010-11-4 09:27:17 |只看该作者
High>Low表示集合竞价已过交易已经开始。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 20:40

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部