测试CTP与交易所网速

Discussion in '红璟程序化交易平台' started by terryep, Apr 25, 2014.

  1. //红璟程序化交易平台
    //网站: http://www.programtrade.com.cn
    //QQ群:289246060
    //邮件:hj_support@163.com
    //最新帮助地址:http://www.programtrade.com.cn/webhelp/index.html
    using System;
    using DevelopLibrary.Enums;
    using DevelopLibrary.DevelopAPI;
    using System.Collections.Generic;
    namespace DemoStrategy.功能测试
    {
    public class 测试CTP与交易所网速 : EventStrategyBase
    {
    //本测试假设服务器的处理时间为0。

    DateTime t1;//记录委托后的时间点
    DateTime t2;//记录委托后,CTP返回Order的时间点
    DateTime t3;//记录委托后,交易所返回Order的时间点
    DateTime t4;//记录成交后,交易所返回Order的时间点
    DateTime t5;//记录成交后,交易所返回Trade的时间点

    public override void OnStart()
    {
    OpenBuy(C.LAST + INSTRUMENT.PriceTick * 3, 1);
    t1 = Now;
    }

    public override void OnOrderReturn(Order order)
    {
    if (order.OrderSysID == "")//用于判断是CTP返回,还是交易返回,为空就是CTP返回。
    t2 = Now;
    else if (order.OrderSysID != "" && order.OrderStatus != EnumOrderStatusType.AllTraded)
    t3 = Now;
    else if (order.OrderSysID != "" && order.OrderStatus == EnumOrderStatusType.AllTraded)
    t4 = Now;
    }
    public override void OnTrade(Trade trade)
    {
    t5 = Now;
    Stop();
    }
    public override void OnStop()
    {
    PrintLine("用户端到CTP的网络时间:" + (t2 - t1).TotalMilliseconds / 2 + "ms");//除以2是因为信息来回一趟
    PrintLine("用户端到交易所的网络时间:" + (t3 - t1).TotalMilliseconds / 2 + "ms");
    PrintLine("CTP到交易所的网络时间:" + ((t3 - t1).TotalMilliseconds / 2 - (t2 - t1).TotalMilliseconds / 2) + "ms");
    PrintLine("在成交之后,Trade和Order的延时:" + (t5 - t4).TotalMilliseconds + "ms");

    }
    }
    }