请教单账户如何利用TB实现多品种的分仓交易

Discussion in '开拓者期货自动交易平台' started by tradingart, Dec 18, 2009.

  1. 如果只有一个账户,但是要交易多个品种,比如两个,每个品种只能用一半的资金,如果各自权益发生了增减,也只算在各自品种的头上。比方说账户初始100万,给品种A50万,品种B50万。如果品种A做到了60万,品种B只有45万,那么在计算头寸的时候,品种A按60万来计算,品种B按45万来计算。
    如果是手工交易,我可以根据每天的权益计算出每个品种的头寸,但如果想通过TB来自动交易,怎么解决这个问题?如果是通过获取余额然后除二的方式,那么就会把权益给混淆了。
    还请大家给出出主意,再开一个账户就不用了,那样更麻烦 呵呵
     
  2. 建议还是分开账号操作更方便,如果一定要同一账号的话,俺有个思路,不过俺没试过,tradingart看看可否实现你的要求?
    账号初始100万,品种A50万、品种B50万
    1、通过SetTBProfileString、GetTBProfileString将初始100万的一半分别保存到数据库
    (下面以品种A为例)
    2、开仓时通过GetTBProfileString读取上次保存的品种A的权益,以此权益来计算头寸(如果还有持仓可以加上持仓的浮动盈亏),开仓后通过A函数查询成交价格,SetTBProfileString记录成交价和交易量,用作每天权益计算或平仓时计算权益增减的依据
    3、平仓时,通过A函数查询平仓成交价和平仓量,通过GetTBProfileString读取上次保存的品种A的开仓成交价和交易量来计算盈亏(另加上手续费),同时读取上次开仓或平仓后保存的权益值+这次平仓盈亏得到新的权益,然后SetTBProfileString保存
    这是目前我能想到的方法,有点麻烦吧
     
  3. 多谢yonkim兄指点。这个方法还不错,比全局变量强多了 呵呵 这样我倒是可以把原来保存在全局变量的一些内容改到这个来。我暂时还只交易日内,所以逻辑上就不用考虑持仓的情况,相对还简单点。

    我看帮助上说该函数是将数据写到文件中吧,关闭TB或TB里的窗口应该对写入的数据不影响吧?
     
  4. 全局变量的值是存储中缓存中的,其值随着工作区窗口或者TB的关闭而消失
    SetTBProfileString函数以前是写到ini文件里的,3.2.4版开始是写到数据库文件里的,不管是写ini文件还是写数据库,关闭TB或TB里的窗口其值依然有效(除非删除电脑中的数据库文件)

    我一般用SetTBProfileString和GetTBProfileString代替读写全局变量做持仓控制
     
  5. 不错,受教了,以后有关TB还要多多和Yonkim兄请教哦 :p