Files
upper-limit-crawler/ULDataMgr.cs
2016-07-14 00:52:17 +09:00

140 lines
3.2 KiB
C#

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<MONITOR_ITEM> m_MonitorList = new List<MONITOR_ITEM>();
Dictionary<string, WATCH_ITEM> m_WatchList = new Dictionary<string, WATCH_ITEM>();
List<string> m_BlackList = new List<string>();
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<string, WATCH_ITEM> 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<MONITOR_ITEM> GetMonitor()
{
return m_MonitorList;
}
public Dictionary<string, WATCH_ITEM> GetWatchList()
{
return m_WatchList;
}
}
}