199 lines
7.9 KiB
C#
199 lines
7.9 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;
|
|
|
|
namespace future_crawler
|
|
{
|
|
public partial class Form1 : Form
|
|
{
|
|
MySqlConnection m_DBCon;
|
|
|
|
CPUTILLib.CpFutureCode m_FutCode = new CPUTILLib.CpFutureCode();
|
|
string m_strTargetFutCode = "101K9";
|
|
string m_strTargetOptCode = "201K7255";
|
|
|
|
CPSYSDIBLib.FutOptChart m_FutOpChart = new CPSYSDIBLib.FutOptChart();
|
|
|
|
public Form1()
|
|
{
|
|
InitializeComponent();
|
|
|
|
string strConn = "Server=mjjo53.us.to;Database=futopt;Uid=mjjo;Pwd=whaudwls;";
|
|
m_DBCon = new MySqlConnection(strConn);
|
|
m_DBCon.Open();
|
|
}
|
|
|
|
private void btSearchCode_Click(object sender, EventArgs e)
|
|
{
|
|
int iCnt = m_FutCode.GetCount();
|
|
for (short i = 0; i < iCnt; i++)
|
|
{
|
|
string strCode = (string)m_FutCode.GetData(0, i);
|
|
string strName = (string)m_FutCode.GetData(1, i);
|
|
|
|
Console.WriteLine(string.Format("{0} / {1}", strCode, strName));
|
|
}
|
|
|
|
m_strTargetFutCode = (string)m_FutCode.GetData(0, 0);
|
|
lbFutCode.Text = m_strTargetFutCode;
|
|
}
|
|
|
|
private void btCrawling_Click(object sender, EventArgs e)
|
|
{
|
|
// 필드값
|
|
//0: 날짜(ulong)
|
|
//1:시간(ulong) - hhmm(단, 차트구분을 초('S')로 설정한 경우에는 hhmmss)
|
|
//2:시가(ulong or float)
|
|
//3:고가(ulong or float)
|
|
//4:저가(ulong or float)
|
|
//5:종가(ulong or float)
|
|
//6:전일대비(long or float)
|
|
//8:거래량(ulong or ulonglong)
|
|
//9:거래대금(ulonglong)
|
|
//10:누적체결매도수량(ulong or ulonglong) - 주) 분,틱 요청일 때만 제공
|
|
//11:누적체결매수수량(ulong or ulonglong) - 주) 분,틱 요청일 때만 제공
|
|
//12: 사용하지 않음
|
|
//13: 사용하지 않음
|
|
//14: 사용하지 않음
|
|
//15: 사용하지 않음
|
|
//16: 사용하지 않음
|
|
//17: 사용하지 않음
|
|
//18:수정주가일자(ulong) - YYYYMMDD
|
|
//19:수정주가비율(float)
|
|
//20:기관순매수(long)
|
|
//21:기관누적순매수(long)
|
|
//22: 사용하지 않음
|
|
//23: 사용하지 않음
|
|
//24: 사용하지 않음
|
|
//25: 사용하지 않음
|
|
//26: 사용하지 않음
|
|
//27: 미결제약정
|
|
//28: 선물이론가(선물 일간데이터에서만 제공)
|
|
//29: 베이시스
|
|
//30: 옵션이론가 (옵션일 때만 제공)
|
|
//31: IV
|
|
//32: Delta
|
|
//33: Gamma
|
|
//34: Theta
|
|
//35: Vaga
|
|
//36: Rho
|
|
|
|
|
|
|
|
m_FutOpChart.SetInputValue(0, m_strTargetFutCode);
|
|
m_FutOpChart.SetInputValue(1, '1');
|
|
m_FutOpChart.SetInputValue(2, 20150618);
|
|
m_FutOpChart.SetInputValue(3, 20150618);
|
|
m_FutOpChart.SetInputValue(4, 0);
|
|
m_FutOpChart.SetInputValue(5, new int[] { 0, 1, 5, 8, 9, 20 });
|
|
m_FutOpChart.SetInputValue(6, 'S');
|
|
m_FutOpChart.SetInputValue(7, 1);
|
|
m_FutOpChart.SetInputValue(8, '0');
|
|
m_FutOpChart.SetInputValue(9, '0');
|
|
|
|
int iResult = m_FutOpChart.BlockRequest2(1);
|
|
if (iResult != 0)
|
|
MessageBox.Show("결과가 이상함");
|
|
|
|
|
|
MySqlCommand cmd = new MySqlCommand();
|
|
|
|
bool bContinue = true;
|
|
while (bContinue == true)
|
|
{
|
|
MySqlTransaction trans = m_DBCon.BeginTransaction();
|
|
cmd.Connection = m_DBCon;
|
|
cmd.Transaction = trans;
|
|
|
|
int iCnt = m_FutOpChart.GetHeaderValue(3);
|
|
int iFieldCnt = m_FutOpChart.GetHeaderValue(1);
|
|
for (int i = 0; i < iCnt; i++)
|
|
{
|
|
ulong date = m_FutOpChart.GetDataValue(0, i);
|
|
ulong time = m_FutOpChart.GetDataValue(1, i);
|
|
float fp = m_FutOpChart.GetDataValue(2, i);
|
|
object deal_amount = m_FutOpChart.GetDataValue(3, i);
|
|
object deal_cash = m_FutOpChart.GetDataValue(4, i);
|
|
int comp_bid = m_FutOpChart.GetDataValue(5, i);
|
|
|
|
string strTime = string.Format("{0:d04}-{1:d02}-{2:d02} {3:d02}:{4:d02}:{5:d02}", date / 10000, (date % 10000) / 100, date % 100, time / 10000, (time % 10000) / 100, time % 100);
|
|
|
|
cmd.CommandText = string.Format("insert into future_list(code,date,fin_price,deal_amount,deal_cash,comp_bid) values('{0}','{1}',{2},{3},{4},{5})",
|
|
m_strTargetFutCode, strTime, fp, deal_amount, deal_cash, comp_bid);
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine(string.Format("{0}/{1}/{2}/{3}/{4}/{5}/{6}", m_strTargetFutCode, date, time, fp, deal_amount, deal_cash, comp_bid));
|
|
}
|
|
trans.Commit();
|
|
|
|
bContinue = (m_FutOpChart.Continue == 1);
|
|
iResult = m_FutOpChart.BlockRequest2(1);
|
|
}
|
|
|
|
Console.WriteLine("end.");
|
|
}
|
|
|
|
private void btCrawlingOption_Click(object sender, EventArgs e)
|
|
{
|
|
m_FutOpChart.SetInputValue(0, m_strTargetOptCode);
|
|
m_FutOpChart.SetInputValue(1, '1');
|
|
m_FutOpChart.SetInputValue(2, 20150618);
|
|
m_FutOpChart.SetInputValue(3, 20150618);
|
|
m_FutOpChart.SetInputValue(4, 0);
|
|
m_FutOpChart.SetInputValue(5, new int[] { 0, 1, 5, 8, 9, 20 });
|
|
m_FutOpChart.SetInputValue(6, 'S');
|
|
m_FutOpChart.SetInputValue(7, 1);
|
|
m_FutOpChart.SetInputValue(8, '0');
|
|
m_FutOpChart.SetInputValue(9, '0');
|
|
|
|
int iResult = m_FutOpChart.BlockRequest2(1);
|
|
if (iResult != 0)
|
|
MessageBox.Show("결과가 이상함");
|
|
|
|
|
|
MySqlCommand cmd = new MySqlCommand();
|
|
|
|
bool bContinue = true;
|
|
while (bContinue == true)
|
|
{
|
|
MySqlTransaction trans = m_DBCon.BeginTransaction();
|
|
cmd.Connection = m_DBCon;
|
|
cmd.Transaction = trans;
|
|
|
|
int iCnt = m_FutOpChart.GetHeaderValue(3);
|
|
int iFieldCnt = m_FutOpChart.GetHeaderValue(1);
|
|
for (int i = 0; i < iCnt; i++)
|
|
{
|
|
ulong date = m_FutOpChart.GetDataValue(0, i);
|
|
ulong time = m_FutOpChart.GetDataValue(1, i);
|
|
float fp = m_FutOpChart.GetDataValue(2, i);
|
|
object deal_amount = m_FutOpChart.GetDataValue(3, i);
|
|
object deal_cash = m_FutOpChart.GetDataValue(4, i);
|
|
int comp_bid = m_FutOpChart.GetDataValue(5, i);
|
|
|
|
string strTime = string.Format("{0:d04}-{1:d02}-{2:d02} {3:d02}:{4:d02}:{5:d02}", date / 10000, (date % 10000) / 100, date % 100, time / 10000, (time % 10000) / 100, time % 100);
|
|
|
|
cmd.CommandText = string.Format("insert into option_list(code,date,fin_price,deal_amount,deal_cash,comp_bid) values('{0}','{1}',{2},{3},{4},{5})",
|
|
m_strTargetOptCode, strTime, fp, deal_amount, deal_cash, comp_bid);
|
|
cmd.ExecuteNonQuery();
|
|
|
|
Console.WriteLine(string.Format("{0}/{1}/{2}/{3}/{4}/{5}/{6}", m_strTargetOptCode, date, time, fp, deal_amount, deal_cash, comp_bid));
|
|
}
|
|
trans.Commit();
|
|
|
|
bContinue = (m_FutOpChart.Continue == 1);
|
|
iResult = m_FutOpChart.BlockRequest2(1);
|
|
}
|
|
|
|
Console.WriteLine("end.");
|
|
}
|
|
}
|
|
}
|