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>(); }
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); }