Order

Discussion in 'QuantDeveloper' started by morosetrue, Apr 13, 2009.

  1. Code:
    //MyTimer 可以额外传递品种,用于ATSCross
    public class MyTimer: System.Timers.Timer
    {
        public MyTimer()
    	{		
    	}
    	
    	public string Symbol;	
    }
    
    myTimer.AutoReset=false;
    myTimer.Elapsed+=OnTimedEvent;
    
    public void OnTimedEvent(object source, ElapsedEventArgs e)
    {
    	MyTimer timer=source as MyTimer;
    	string Symbol=timer.Symbol;
    	OrderBookList.Add(InstrumentManager.Instruments[Symbol].OrderBook);
    		
        // do sth;		
    }
    
    //订阅MarketDepth事件
    InstrumentManager.Instruments[WarrantSymbol].NewMarketDepth+=OnMarketDepth
    
    public void OnMarketDepth(object sender, MarketDepthEventArgs  arg) 
    {
    		timer.Interval=10;//考虑timer的精度是1毫秒
    		timer.Enabled=true;		
    }
    
    测试效果是,20个品种,timer.interval 选2毫秒没有问题,每个品种对应10个marketdepth到来的时间不过1毫秒。

    目前的问题是,每个品种,都要单独开一个timer在backpool线程。所以2000个品种,就要开2000个线程。希望大家提供更好的方法。