示例#1
0
文件: Strategy.cs 项目: kwangphys/QT
        public Strategy(int strategy_id, string config, IBApi.EClientInterface socket)
        {
            _socket = socket;
            id      = strategy_id;
            XmlDocument xml = new XmlDocument();

            xml.LoadXml(config);
            XmlNode xn1    = xml.SelectSingleNode("/Config");
            XmlNode common = xn1.SelectSingleNode("Common");

            _time_zone     = common["TimeZone"].InnerText;
            _zone          = mapDotNetTimeZone(_time_zone);
            _start_time    = TimeSpan.Parse(common["StartTime"].InnerText);
            _end_time      = TimeSpan.Parse(common["EndTime"].InnerText);
            _calendar_name = common["Calendar"].InnerText;
            _calendar      = mapCalendar(_calendar_name);
            if (common.SelectSingleNode("BarType") == null)
            {
                _bar_type = "TRADES";
            }
            else
            {
                _bar_type = (common["BarType"].InnerText).ToUpper();
            }
            _db  = DBAccess.DBAccess.instance;
            _tg  = TickerGenerator.instance;
            _tm  = ThreadManager.instance;
            _mm  = MarketDataManager.instance;
            _om  = OrderManager.instance;
            _msg = Messenger.instance;
            _realtimeBarEvent  = _tm.createEvent();
            _reqContractMap    = new Dictionary <int, int>();
            _contractReqMap    = new Dictionary <int, int>();
            _contracts         = new List <int>();
            _contractDetailMap = new Dictionary <int, ContractDetails>();
        }
示例#2
0
        public EWrapperImpl(
            string account_config,
            bool require_live_bars   = true,
            bool record_live_bars    = false,
            bool overwrite_live_bars = false,
            int sleep_time           = 5000
            )
        {
            Thread.CurrentThread.CurrentCulture   = CultureInfo.InvariantCulture;
            Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

            requireLiveBars   = require_live_bars;
            recordLiveBars    = record_live_bars;
            overwriteLiveBars = overwrite_live_bars;
            sleepTime         = sleep_time;
            gettingOpenOrders = false;

            XmlDocument xml = new XmlDocument();

            xml.LoadXml(account_config);
            XmlNode xn1 = xml.SelectSingleNode("/Config");

            engine_type = xn1["EngineType"].InnerText;
            verbose     = xn1["Verbose"] == null ? true : Boolean.Parse(xn1["Verbose"].InnerText);

            msg = Messenger.instance;
            XmlNode xnemail = xn1.SelectSingleNode("Email");

            if (xnemail != null)
            {
                string smtp      = xnemail["SMTP"].InnerText;
                int    port      = Int32.Parse(xnemail["Port"].InnerText);
                string address   = xnemail["Address"].InnerText;
                string password  = xnemail["Password"].InnerText;
                bool   enableSsl = Boolean.Parse(xnemail["EnableSSL"].InnerText);
                msg.setupEmail(smtp, port, address, password, enableSsl);
            }
            pnlSchedule = new List <TimeSpan>();
            XmlElement pnlScheduleNode = xn1["PnLReportSchedule"];

            if (pnlScheduleNode != null)
            {
                XmlNodeList sub_nodes = pnlScheduleNode.GetElementsByTagName("Time");
                foreach (XmlNode node in sub_nodes)
                {
                    pnlSchedule.Add(TimeSpan.Parse(node.InnerText));
                }
            }
            contractDetailsMap = new Dictionary <int, ContractDetails>();
            currPnlIndices     = new Dictionary <int, int>();
            strategies         = new Dictionary <int, Strategy>();
            //dbTickMap = new Dictionary<int, int>();
            orders        = new HashSet <int>();
            orderStatuses = new Dictionary <int, HashSet <string> >();

            db = DBAccess.DBAccess.instance;
            tg = TickerGenerator.instance;
            om = OrderManager.instance;
            mm = MarketDataManager.instance;
            if (engine_type == "TWS")
            {
                clientSocket = new EClientSocket(this, Signal);
            }
            else
            {
                clientSocket = new BacktestEngine(this, db, xn1["BacktestConfig"]);
            }
            om.setupSocket(clientSocket);
            mm.setupSocket(clientSocket);
        }