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

156 lines
4.7 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
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();
ULMonitor m_Monitor = new ULMonitor(m_DataMgr);
ULWatch m_Watch = new ULWatch(m_DataMgr);
ULDealing m_Dealing = new ULDealing(m_DataMgr);
ULOwn m_Own = new ULOwn(m_DataMgr);
ULBalanceDlg m_BalanceDlg = null;
public MainForm()
{
InitializeComponent();
m_DataMgr.m_Setting.m_fSearchMin = float.Parse(tbSearchMin.Text);
m_DataMgr.m_Setting.m_fSearchMax = float.Parse(tbSearchMax.Text);
m_DataMgr.m_Setting.m_fBidMin = float.Parse(tbBidMin.Text);
m_DataMgr.m_Setting.m_fBidMax = float.Parse(tbBidMax.Text);
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);
m_DataMgr.m_Setting.m_fLossCut = float.Parse(tbLossCut.Text);
SetDoubleBuffered(lvWatch);
m_Monitor.SetView(lvWatch);
m_MainTimer.Interval = 10;
m_MainTimer.Tick += Refresh;
m_MainTimer.Start();
}
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 = DateTime.Now;
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;
int iDeltaT = iCurTime - m_iLastTime;
m_Monitor.Refresh(iCurTime);
m_Watch.Refresh(iCurTime);
m_Dealing.Refresh(iCurTime);
m_Own.Refresh(iCurTime);
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);
m_DataMgr.m_Setting.m_fSearchMax = float.Parse(tbSearchMax.Text);
m_DataMgr.m_Setting.m_fBidMin = float.Parse(tbBidMin.Text);
m_DataMgr.m_Setting.m_fBidMax = float.Parse(tbBidMax.Text);
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);
m_DataMgr.m_Setting.m_fLossCut = float.Parse(tbLossCut.Text);
}
catch(Exception ex)
{
UlUtil.Trace(ex.ToString());
}
}
private void btCancel_Click(object sender, EventArgs e)
{
tbSearchMin.Text = m_DataMgr.m_Setting.m_fSearchMin.ToString("0.0");
tbSearchMax.Text = m_DataMgr.m_Setting.m_fSearchMax.ToString("0.0");
tbBidMin.Text = m_DataMgr.m_Setting.m_fBidMin.ToString("0.0");
tbBidMax.Text = m_DataMgr.m_Setting.m_fBidMax.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.ToString("0.0");
tbLossCut.Text = m_DataMgr.m_Setting.m_fLossCut.ToString("0.0");
}
private void btBalance_Click(object sender, EventArgs e)
{
if (m_BalanceDlg == null)
m_BalanceDlg = new ULBalanceDlg(m_DataMgr);
m_BalanceDlg.Show();
}
}
}