using MySql.Data.MySqlClient; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace upper_limit_crawler { public struct SETTING { public float m_fSearchMin; public float m_fSearchMax; public float m_fBidMin; public float m_fBidMax; public float m_fBidAmount; public float m_fTimeout; public float m_fTrailing; public float m_fLossCut; } public struct MONITOR_ITEM { public string Code; public string Name; public int CurPrice; public object flag; public int Comp; public float CompRate; public int Volume; public int StartPrice; public int StartPriceComp; public float StartPriceCompRate; public int SerialDay; } public class WATCH_ITEM { public string m_strCode; public DSCBO1Lib.StockCur m_StockCur = null; public int m_iCurPrice; public int m_iPrevClosing; public int m_iStartPrice; public int m_iHighestPrice; public int m_iVolume; public int m_iBidPrice; public int m_iBidCnt; } public class ULDataMgr { public SETTING m_Setting = new SETTING(); ULTrader m_Trader = new ULTrader(); List m_MonitorList = new List(); Dictionary m_WatchList = new Dictionary(); List m_BlackList = new List(); public ULDataMgr() { } public string GetAccount() { return m_Trader.GetAccount(); } public ULTrader GetTrader() { return m_Trader; } public void ClearMonitor() { m_MonitorList.Clear(); } public void AddMonitor(MONITOR_ITEM Item) { m_MonitorList.Add(Item); } public void AddWatch(string strCode, int iCurPrice, int iPrevClosing) { if (m_WatchList.ContainsKey(strCode)) return; WATCH_ITEM item = new WATCH_ITEM(); item.m_strCode = strCode; item.m_iCurPrice = iCurPrice; item.m_iPrevClosing = iPrevClosing; item.m_StockCur = new DSCBO1Lib.StockCur(); item.m_StockCur.SetInputValue(0, strCode); item.m_StockCur.Received += StockCur_Received; item.m_StockCur.SubscribeLatest(); m_WatchList.Add(strCode, item); } private void StockCur_Received() { foreach(KeyValuePair item in m_WatchList) { item.Value.m_iCurPrice = item.Value.m_StockCur.GetHeaderValue(13); item.Value.m_iStartPrice = item.Value.m_StockCur.GetHeaderValue(4); item.Value.m_iHighestPrice = item.Value.m_StockCur.GetHeaderValue(5); item.Value.m_iVolume = item.Value.m_StockCur.GetHeaderValue(9); item.Value.m_iBidPrice = item.Value.m_StockCur.GetHeaderValue(8); item.Value.m_iBidCnt = 0; } } public void AddBlackList(string strCode) { m_BlackList.Add(strCode); } public bool IsInBlackList(string strCode) { return m_BlackList.Contains(strCode); } public List GetMonitor() { return m_MonitorList; } public Dictionary GetWatchList() { return m_WatchList; } } }