Files
upper-limit-crawler/ULDataMgr.cs
mjjo 62315062bf - 5MA 계산 버그 수정
- 매수, 매도 조건 수정 : 5MA slope 조건 추가
- 기본 파라미터 수정
2016-08-01 01:29:48 +09:00

149 lines
3.2 KiB
C#

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 POSTPONE_ITEM
{
public POSTPONE_ITEM(string strCode, int iTime)
{
m_strCode = strCode;
m_iTime = iTime;
}
public string m_strCode;
public int m_iTime;
}
public class ULDataMgr
{
public SETTING m_Setting = new SETTING();
ULTrader m_Trader = new ULTrader();
Dictionary<string, ULWatchItem> m_WatchList = new Dictionary<string, ULWatchItem>();
List<POSTPONE_ITEM> m_PostponeList = new List<POSTPONE_ITEM>();
Dictionary<string, int> m_LossCutList = new Dictionary<string, int>();
List<string> m_BlackList = new List<string>();
public ULDataMgr()
{
}
public void Init()
{
m_Trader.Init();
}
public string GetAccount()
{
return m_Trader.GetAccount();
}
public ULTrader GetTrader()
{
return m_Trader;
}
public void AddWatch(string strCode, string strCodeName, int iCurPrice, int iPrevClosing)
{
if (m_WatchList.ContainsKey(strCode))
return;
ULWatchItem item = new ULWatchItem();
item.m_strCode = strCode;
item.m_strCodeName = strCodeName;
item.m_iCurPrice = iCurPrice;
item.m_iPrevClosing = iPrevClosing;
item.FillPrice();
item.m_StockCur = new DSCBO1Lib.StockCur();
item.m_StockCur.SetInputValue(0, strCode);
item.m_StockCur.Received += item.Received;
item.m_StockCur.SubscribeLatest();
m_WatchList.Add(strCode, item);
}
public void RemoveWatch(string strCode)
{
if (m_WatchList.ContainsKey(strCode))
return;
m_WatchList[strCode].m_StockCur.Unsubscribe();
m_WatchList.Remove(strCode);
}
public void StartAll()
{
foreach (KeyValuePair<string, ULWatchItem> item in m_WatchList)
{
item.Value.m_StockCur = new DSCBO1Lib.StockCur();
item.Value.m_StockCur.SetInputValue(0, item.Value.m_strCode);
item.Value.m_StockCur.Received += item.Value.Received;
item.Value.m_StockCur.SubscribeLatest();
}
}
public void StopAll()
{
foreach (KeyValuePair<string, ULWatchItem> item in m_WatchList)
{
item.Value.m_StockCur.Unsubscribe();
}
}
public void AddPostphoneItem(int iTime, string strCode)
{
POSTPONE_ITEM postpone = new POSTPONE_ITEM(strCode, iTime);
m_PostponeList.Add(postpone);
}
public bool IsInPostponeList(int iTime, string strCode)
{
return m_PostponeList.Any(r => r.m_strCode == strCode && ULUtil.IsInTime(r.m_iTime, iTime, 4));
}
public void AddLosscutItem(string strCode)
{
if(m_LossCutList.ContainsKey(strCode) == false)
{
m_LossCutList.Add(strCode, 1);
}
else
{
m_LossCutList[strCode] += 1;
if(m_LossCutList[strCode] >= 2)
m_BlackList.Add(strCode);
}
}
public bool IsInBlackList(string strCode)
{
return m_BlackList.Any(r => r == strCode);
}
public Dictionary<string, ULWatchItem> GetWatchList()
{
return m_WatchList;
}
}
}