Files
upper-limit-crawler/MainForm.cs
2016-07-21 00:25:01 +09:00

151 lines
4.4 KiB
C#

using System;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;
namespace upper_limit_crawler
{
//struct ITEM
//{
// string m_strCode;
// DateTime m_Time;
// int m_iCurPrice;
// int m_iAskCount;
// int m_iBidCount;
// int m_iStartPrice;
// int m_iTradingVolume;
// float m_fRatePerStart;
//}
public partial class MainForm : Form
{
ArrayList m_TraceList = new ArrayList();
Timer m_MainTimer = new Timer();
int m_iLastTime = 0;
static ULDataMgr m_DataMgr = new ULDataMgr();
ULOwn m_Own = new ULOwn(m_DataMgr);
ULMonitorDlg m_MonitorDlg = null;
ULBalanceDlg m_BalanceDlg = null;
public MainForm()
{
InitializeComponent();
SetDoubleBuffered(tbLog);
UlUtil.Init(tbLog);
//UlUtil.GetServerTime();
btApply_Click(null, null);
m_MonitorDlg = new ULMonitorDlg(m_DataMgr);
splitContainer3.Panel1.Controls.Add(m_MonitorDlg);
m_MonitorDlg.Dock = DockStyle.Fill;
m_MonitorDlg.Show();
m_BalanceDlg = new ULBalanceDlg(m_DataMgr);
splitContainer3.Panel2.Controls.Add(m_BalanceDlg);
m_BalanceDlg.Dock = DockStyle.Fill;
m_BalanceDlg.Show();
m_MainTimer.Interval = 10;
m_MainTimer.Tick += Refresh;
m_MainTimer.Start();
UlUtil.Trace("시작");
}
public static void SetDoubleBuffered(Control control)
{
// set instance non-public property with name "DoubleBuffered" to true
typeof(Control).InvokeMember("DoubleBuffered",
BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
null, control, new object[] { true });
}
private bool IsOnTime()
{
DateTime CurTime = UlUtil.GetCurTime();
if (CurTime.DayOfWeek == DayOfWeek.Sunday || CurTime.DayOfWeek == DayOfWeek.Saturday)
return false;
if (CurTime.Hour < 8 || CurTime.Hour > 15)
return false;
if (CurTime.Hour == 8 && CurTime.Minute < 50)
return false;
if (CurTime.Hour == 15 && CurTime.Minute > 15)
return false;
return true;
}
private void Refresh(object sender, EventArgs e)
{
//if(IsOnTime() == false)
// return;
int iCurTime = Environment.TickCount;
if(m_iLastTime == 0)
{
m_iLastTime=iCurTime;
return;
}
int iDeltaT = iCurTime - m_iLastTime;
m_Own.Refresh(iCurTime);
lbRQCnt.Text = "RQ Count : " + UlUtil.GetLimitRemainCountRQ().ToString();
lbSBCnt.Text = "SB Count : " + UlUtil.GetLimitRemainCountSB().ToString();
m_iLastTime = iCurTime;
}
private void AddTrace(string strCode)
{
if (m_TraceList.Contains(strCode) == true)
return;
m_TraceList.Add(strCode);
}
private void btApply_Click(object sender, EventArgs e)
{
try
{
m_DataMgr.m_Setting.m_fSearchMin = float.Parse(tbSearchMin.Text.Replace("%", ""))/100;
m_DataMgr.m_Setting.m_fSearchMax = float.Parse(tbSearchMax.Text.Replace("%", ""))/100;
m_DataMgr.m_Setting.m_fBidMin = float.Parse(tbBidMin.Text.Replace("%", ""))/100;
m_DataMgr.m_Setting.m_fBidMax = float.Parse(tbBidMax.Text.Replace("%", ""))/100;
m_DataMgr.m_Setting.m_fBidAmount = float.Parse(tbBidAmount.Text);
m_DataMgr.m_Setting.m_fTimeout = float.Parse(tbTimeout.Text);
m_DataMgr.m_Setting.m_fTrailing = float.Parse(tbTrailing.Text.Replace("%", ""))/100;
m_DataMgr.m_Setting.m_fLossCut = float.Parse(tbLossCut.Text.Replace("%", ""))/100;
btCancel_Click(null, null);
}
catch(Exception ex)
{
UlUtil.Trace(ex.ToString());
}
}
private void btCancel_Click(object sender, EventArgs e)
{
tbSearchMin.Text = (m_DataMgr.m_Setting.m_fSearchMin*100).ToString("0.0") + "%";
tbSearchMax.Text = (m_DataMgr.m_Setting.m_fSearchMax*100).ToString("0.0") + "%";
tbBidMin.Text = (m_DataMgr.m_Setting.m_fBidMin*100).ToString("0.0") + "%";
tbBidMax.Text = (m_DataMgr.m_Setting.m_fBidMax*100).ToString("0.0") + "%";
tbBidAmount.Text = m_DataMgr.m_Setting.m_fBidAmount.ToString("###,###,###,###,###");
tbTimeout.Text = m_DataMgr.m_Setting.m_fTimeout.ToString("0.###");
tbTrailing.Text = (m_DataMgr.m_Setting.m_fTrailing*100).ToString("0.0") + "%";
tbLossCut.Text = (m_DataMgr.m_Setting.m_fLossCut*100).ToString("0.0") + "%";
}
}
}