fix协议中消息尾校验方法

fix协议的每一条消息都分为三部分,
即:消息头,消息内容,消息尾

消息头和消息尾

FIX 协议每个消息都包括标准消息头和标准消息尾。在标准消息头和标准消息尾中间的是消息体。消息的类型在标准消息头中标签信息类型35=

标准消息头#

下边是btcc的专业交易消息头
标签名称数据类型必选?注释
8BeginStringString'FIX.4.4'.
9BodyLengthlength消息长度的字节数. 永远在整条消息的第二个字段(不加密).
35MsgTypeString代表消息类型
34MsgSeqNumSeqNum整型消息序列号.
49SenderCompIDString您的访问秘钥.
52SendingTimeUTCTimestamp消息发送时间, UTC时间(世界标准时间, 也称作 'GMT').
56TargetCompIDString'BTCC-PRO-EXCHANGE-SERVER'.

消息头有第一个标签一般情况下都是8,表示消息使用的fix协议版本.接着9标签表示消息内容长度的字节数,第三个标签,消息类型,分为"A","U",等不同类型,"A"类型为登陆消息,"U"类型一般表示自定义消息类型.

标准消息尾#

标签名称数据类型必选?注释
10CheckSumString三个字节的校验码
btcc的专业交易标准消息尾只有一个三字节的消息效验码。

char *GenerateCheckSum( char *buf, long bufLen ) 

{

static char tmpBuf[ 4 ]; long idx;

unsigned int cks;

for( idx = 0L, cks = 0; idx < bufLen; cks += (unsigned int)buf[ idx++ ] ); sprintf( tmpBuf, “%03d”, (unsigned int)( cks % 256 ) );

return( tmpBuf );

}


账户信息查询请求--Account Info Request (U1000)#

账户信息查询请求消息('U1000'类型)用来请求用户账户余额信息。
标签名称数据类型必选?注释
35MsgTypeString'U1000'.
1AccountString经过秘钥加密后的字符串
8000AccReqIDString客户端请求的唯一标识ID.
9263SubAccountInfoRequestTypeChar值是‘0’或‘1’(BTCC自定义字段,如果想要使用推送功能,请参照selfFIX44.xml修改您的xml文件)

账户信息查询请求消息样本#

注意:FIX消息是由一串”标签=数值”的字段表示的,它们之间的分隔符是SOH(0x01). SOH是不可见的字符,在下面的所有样本示例中,我们使用'|'代替SOH来分隔不同字段.

客户端发来的账户信息查询请求消息样本:

8=FIX.4.4 | 9=149 | 35=U1000 | 34=2 | 49=<ACCESS KEY>| 52=20150917-02:23:49.088 | 56=BTCC-PRO-EXCHANGE-SERVER | 1=1414580974252000:Basic YmQ2NzI4OTctMTA0ZC00OTRlLWE0ZjItMjI5N2M0ZjdlMTMxOmMzOTYyMTBkNWMyNDk1MjE4YzFkZThlYjczOWQzMjVlNTgyNjMzZmE= | 8000=3b0e8c02-1401-4316-a290-6341af439ce9 | 10=018 |

依据上述说明,这条消息表示:

BeginString: FIX.4.4
BodyLength: 149
MsgType: AccountInfoRequest (U1000)
MsgSeqNum: 2
SenderCompID: ACCESS KEY
SendingTime: 20150917-02:23:49.088
TargetCompID: BTCC-PRO-EXCHANGE-SERVER
Account: 经过秘钥加密后的字符串
AccReqID: 3b0e8c02-1401-4316-a290-6341af439ce9
CheckSum: 018

账户信息查询响应--User Account Info Response (U2001)#

成功收到用户发送的账户信息请求消息后,服务器会返回一个AccountInfoResponse ('U2001'类型)消息给客户端。

标签名称类型必选?注释
35MsgTypeString'U2001'.
1AccountStringYes经过秘钥加密后的字符串.
8000AccReqIDStringYes和请求传过来的AccReqID一样
8002UserIDIntYes用户 id .
8003SumOfDepositDoubleYes充值总和
8004CashDoubleYes现金
8005TotalProfitDoubleYes总盈亏
8006TotalSizeDoubleYes总量
8007TotalInitMarginRequiredDoubleYes总共必须的初始保证金
8009TotalMaintenanceMarginRequiredDoubleYes总共必须的维持保证金
8010UsableMarginDoubleYes可用的保证金
8011RemainEquityDoubleYes保留的仓位
9001ContractListNUMINGROUPYes合约数量
55SymbolStringYes标示 ,“XBTCNY”或“XBTUSD”
8012TotalSellSizeDoubleNo总卖量
8013TotalBuySizeDoubleNo总买量
8014OpenPositionDoubleYes持仓数量
6AvgPxDoubleYes平均价格
8015ProfitDoubleYes收益
8016MarketValueDoubleYes市场价
8017UnchargedFeeDoubleYes待收手续费
8018InitMarginRequiredDoubleYes需要的初始保证金
8019MaintenanceMarginRequiredDoubleYes需要的维持保证金
8020InitMarginFactorDoubleYes初始保证金比例
8021MaintenanceMarginFactorDoubleYes维持保证金比例

账户信息查询响应消息样本#

服务器返回的账户信息查询响应消息样本:

8=FIX.4.4 | 9=421 | 35=U2001 | 34=2 | 49=BTCC-PRO-EXCHANGE-SERVER | 52=20150917-02:23:52.330 | 56=<ACCESS KEY> | 8000=3b0e8c02-1401-4316-a290-6341af439ce9 | 8002=93 | 8003=0 | 8004=99889.2 | 8005=112.7 | 8006=17 | 8007=1278.4 | 8009=421.12 | 8010=98722.75 | 8011=99580.03 | 9001=2 | 55=XBTCNY | 8012=0 | 8014=14 | 6=1495.95 | 8015=112.6 | 8016=21056 | 8017=0.75 | 8018=0 | 8019=0 | 8020=0.05 | 8021=0.02 | 55=XBTCNY| 8012=0 | 8014=0 | 6=0 | 8015=0 | 8016=0 | 8017=0 | 8018=0 | 8019=0 | 8020=0.05 | 8021=0.02 | 10=129 |

依据上述说明,这条消息表示:

BeginString: FIX.4.4
BodyLength: 421
MsgType: AccountInfoResponse (U2001)
MsgSeqNum: 2
SenderCompID: BTCC-PRO-EXCHANGE-SERVER
SendingTime: 20150917-02:23:52.330
TargetCompID: ACCESS KEY
AccReqID: 3b0e8c02-1401-4316-a290-6341af439ce9
UserID: 93
SumOfDeposit: 0
Cash: 99889.2
TotalProfit: 112.7
TotalSize: 17
TotalInitMarginRequired: 1278.4
TotalMaintenanceMarginRequired: 421.12
UsableMargin: 98722.75
RemainEquity: 99580.03
ContractList: 2
Symbol: XBTCNY
TotalSellSize: 0
OpenSize: 14
AvgPx: 1495.95
Profit: 112.6
MarketValue: 21056
UnchargedFee: 0.75
InitMarginRequired: 0
MaintenanceMarginRequired: 0
InitMarginFactor: 0.05
MaintenanceMarginFactor: 0.02
CheckSum: 129

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值