fix协议中消息尾校验方法

来源:互联网 发布:恋人网软件可信么 编辑:程序博客网 时间:2024/06/07 04:00
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.4BodyLength: 149MsgType: AccountInfoRequest (U1000)MsgSeqNum: 2SenderCompID: ACCESS KEYSendingTime: 20150917-02:23:49.088TargetCompID: BTCC-PRO-EXCHANGE-SERVERAccount: 经过秘钥加密后的字符串AccReqID: 3b0e8c02-1401-4316-a290-6341af439ce9CheckSum: 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.4BodyLength: 421MsgType: AccountInfoResponse (U2001)MsgSeqNum: 2SenderCompID: BTCC-PRO-EXCHANGE-SERVERSendingTime: 20150917-02:23:52.330TargetCompID: ACCESS KEYAccReqID: 3b0e8c02-1401-4316-a290-6341af439ce9UserID: 93SumOfDeposit: 0Cash: 99889.2TotalProfit: 112.7TotalSize: 17TotalInitMarginRequired: 1278.4TotalMaintenanceMarginRequired: 421.12UsableMargin: 98722.75RemainEquity: 99580.03ContractList: 2Symbol: XBTCNYTotalSellSize: 0OpenSize: 14AvgPx: 1495.95Profit: 112.6MarketValue: 21056UnchargedFee: 0.75InitMarginRequired: 0MaintenanceMarginRequired: 0InitMarginFactor: 0.05MaintenanceMarginFactor: 0.02CheckSum: 129

原创粉丝点击