This commit is contained in:
2013-09-13 03:46:48 +00:00
parent 5730cec542
commit 33690ff5b4
10 changed files with 74 additions and 219 deletions

View File

@@ -78,45 +78,43 @@ IDR_MAINFRAME ICON "res\\CPRobot.ico"
// Dialog
//
IDD_CPROBOT_DIALOG DIALOGEX 0, 0, 683, 381
IDD_CPROBOT_DIALOG DIALOGEX 0, 0, 382, 309
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Option Robot"
FONT 8, "MS Shell Dlg", 400, 0, 0x0
BEGIN
GROUPBOX "매수 조건",IDC_STATIC,7,7,669,74
LTEXT "거래 금액 : ",IDC_STATIC,16,24,42,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERINGPRICE,62,21,67,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "원 (잔고 : -원)",IDC_STATIC_BALANCE,133,24,134,8,NOT WS_GROUP
LTEXT "가격 :",IDC_STATIC,24,41,22,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERING_TICK_MIN,62,39,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "~",IDC_STATIC,100,41,8,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERING_TICK_MAX,110,39,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "취소 : ",IDC_STATIC,24,59,24,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_CANCEL_DELAY,61,57,34,12,ES_AUTOHSCROLL,WS_EX_RIGHT
LTEXT "ms",IDC_STATIC,99,60,10,8,NOT WS_GROUP
CONTROL "1차 매도호가",IDC_RADIO_BID,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,174,42,60,10
CONTROL "1차 매수호가",IDC_RADIO_ASK,"Button",BS_AUTORADIOBUTTON,235,42,61,10
CONTROL "콜옵션",IDC_RADIO_CALLOP,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,174,58,37,10
CONTROL "풋옵션",IDC_RADIO_PUTOP,"Button",BS_AUTORADIOBUTTON,215,58,37,10
GROUPBOX "매도 조건",IDC_STATIC,7,85,669,58,WS_GROUP
LTEXT "요청 틱 :",IDC_STATIC,19,102,32,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_SELL_TICK,62,101,34,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "틱",IDC_STATIC,101,104,8,8,NOT WS_GROUP
LTEXT "트레일링 :",IDC_STATIC,19,121,38,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_TRAING_TICK,62,120,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "(가격)",IDC_STATIC,101,122,21,8,NOT WS_GROUP
LTEXT "손절 범위 :",IDC_STATIC,164,102,40,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_LOSS_CUT_TICK,206,101,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "(가격)",IDC_STATIC,244,104,26,8,NOT WS_GROUP
LTEXT "청산 시간 :",IDC_STATIC,164,121,40,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_WIND_UP_DELAY,206,120,34,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "ms",IDC_STATIC,245,123,10,8,NOT WS_GROUP
COMBOBOX IDC_COMBO_WINDUP_TICK,260,120,53,58,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_TABSTOP
PUSHBUTTON "검색",IDC_BUTTON_SEARCH,205,147,50,14
DEFPUSHBUTTON "거래 시작",IDC_BUTTON_START_DEAL,263,147,50,14
LISTBOX IDC_LIST_ITEMS,7,168,669,206,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
PUSHBUTTON "Button1",IDC_BUTTON1,341,46,50,14
GROUPBOX "매수 조건",IDC_STATIC,7,7,368,74
LTEXT "거래 금액 : ",IDC_STATIC,25,24,42,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERINGPRICE,71,21,67,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "원 (잔고 : -원)",IDC_STATIC_BALANCE,142,24,134,8,NOT WS_GROUP
LTEXT "가격 :",IDC_STATIC,33,41,22,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERING_TICK_MIN,71,39,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "~",IDC_STATIC,109,41,8,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_ORDERING_TICK_MAX,119,39,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "취소 : ",IDC_STATIC,33,59,24,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_CANCEL_DELAY,70,57,34,12,ES_AUTOHSCROLL,WS_EX_RIGHT
LTEXT "ms",IDC_STATIC,108,60,10,8,NOT WS_GROUP
CONTROL "1차 매도호가",IDC_RADIO_BID,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,183,42,60,10
CONTROL "1차 매수호가",IDC_RADIO_ASK,"Button",BS_AUTORADIOBUTTON,244,42,61,10
CONTROL "콜옵션",IDC_RADIO_CALLOP,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,183,58,37,10
CONTROL "풋옵션",IDC_RADIO_PUTOP,"Button",BS_AUTORADIOBUTTON,224,58,37,10
GROUPBOX "매도 조건",IDC_STATIC,7,85,368,58,WS_GROUP
LTEXT "요청 틱 :",IDC_STATIC,30,102,32,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_SELL_TICK,73,101,34,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "틱",IDC_STATIC,112,104,8,8,NOT WS_GROUP
LTEXT "트레일링 :",IDC_STATIC,30,121,38,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_TRAING_TICK,73,120,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "(가격)",IDC_STATIC,112,122,21,8,NOT WS_GROUP
LTEXT "손절 범위 :",IDC_STATIC,175,102,40,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_LOSS_CUT_TICK,217,101,34,12,ES_RIGHT | ES_AUTOHSCROLL
LTEXT "(가격)",IDC_STATIC,255,104,26,8,NOT WS_GROUP
LTEXT "청산 시간 :",IDC_STATIC,175,121,40,8,NOT WS_GROUP
EDITTEXT IDC_EDIT_WIND_UP_DELAY,217,120,34,12,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER
LTEXT "ms",IDC_STATIC,256,123,10,8,NOT WS_GROUP
COMBOBOX IDC_COMBO_WINDUP_TICK,271,120,53,58,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_TABSTOP
DEFPUSHBUTTON "거래 시작",IDC_BUTTON_START_DEAL,314,148,50,14
LISTBOX IDC_LIST_ITEMS,7,171,368,131,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
END
@@ -170,9 +168,9 @@ BEGIN
IDD_CPROBOT_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 676
RIGHTMARGIN, 375
TOPMARGIN, 7
BOTTOMMARGIN, 374
BOTTOMMARGIN, 302
END
END
#endif // APSTUDIO_INVOKED

View File

@@ -224,10 +224,6 @@
/>
</FileConfiguration>
</File>
<File
RelativePath=".\Trader.cpp"
>
</File>
</Filter>
<Filter
Name="헤더 파일"
@@ -258,10 +254,6 @@
RelativePath=".\targetver.h"
>
</File>
<File
RelativePath=".\Trader.h"
>
</File>
</Filter>
<Filter
Name="리소스 파일"

Binary file not shown.

View File

@@ -21,14 +21,43 @@ struct CP_UNITINFO
float m_fHighestPrice;
CTime m_Time;
int m_iOrderNum;
CTime m_TestCurTime;
};
struct CP_PRICEINFO
{
bool m_bUpdated;
float m_afAskPrice[5];
int m_aiAskCnt[5];
float m_afBidPrice[5];
int m_aiBidCnt[5];
};
enum CP_ORDER_STATE
{
CPOS_NONE=0,
CPOS_RECEIPTION,
CPOS_CORRECTION,
CPOS_CANCEL,
CPOS_CONCLUTION,
CPOS_DENY
};
enum CP_ORDER_TYPE
{
CPOT_NONE=0,
CPOT_ASK,
CPOT_BID
};
struct CP_CONCLUSIONINFO
{
string m_Code;
int m_iOrderNum;
int m_iOrgOrderNum;
double m_dPrice;
int m_iCnt;
CP_ORDER_STATE m_enState;
CP_ORDER_TYPE m_enOrderType;
};
@@ -63,10 +92,9 @@ protected:
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg LRESULT OnBuy(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnSell(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnCancelOrder(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnWindUp(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnProcPrice(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnProcConclusion(WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
void SaveToFile(void);
@@ -102,13 +130,11 @@ private:
vector<CP_UNITINFO> m_BidOrderList; // 매수 요청한 리스트
//vector<CP_UNITINFO> m_BidConclusionList; // 매수 체결된 리스트
vector<CP_UNITINFO> m_AskOrderList; // 매도 요청한 리스트
map<string, CP_PRICEINFO> m_CurPriceList;
CRITICAL_SECTION m_CSBid;
CRITICAL_SECTION m_CSAsk;
CRITICAL_SECTION m_CSLog;
vector<CP_CONCLUSIONINFO> m_ConclusionList;
bool m_bUsingConclusion;
CpDib::IDibPtr m_pCpFConclusion;
CEventHandlerDib m_EventHandlerDib;
@@ -127,12 +153,9 @@ private:
void WindUp(const CP_UNITINFO& Unit);
void CancelOrder(const CP_UNITINFO& Unit);
void CheckPrice(const string Code);
void CheckConclusion(const CP_CONCLUSIONINFO& ConclusionInfo);
void CPLog(const string fmt, ...);
public:
afx_msg void OnBnClickedButton1();
afx_msg LRESULT OnBuyMsg(WPARAM wParam, LPARAM lParam);
};

View File

@@ -1,37 +0,0 @@
#include "stdafx.h"
#include "DataMgr.h"
CDataMgr::CDataMgr()
{
m_bSell = TRUE;
m_iAmountSet = 0;
m_iBalance = 0;
m_iMinPriceSet = 0;
m_iMaxPriceSet = 0;
m_iSellTick = 0;
m_iLossCutTick = 0;
m_iTrailingTick = 0;
m_iCancelDelay = 0;
m_bCallOption = TRUE;
}
CDataMgr::~CDataMgr()
{
SaveToFile();
}
void CDataMgr::SaveToFile(void)
{
FILE* fp = NULL;
fopen_s(&fp, "setting.ini", "w");
fclose(fp);
fp = NULL;
}
void CDataMgr::LoadFromFile(void)
{
FILE* fp = NULL;
fopen_s(&fp, "setting.ini", "r");
fclose(fp);
fp = NULL;
}

View File

@@ -1,35 +0,0 @@
#ifndef __DATA_MGR__
#define __DATA_MGR__
#include <vector>
#include <string>
class CDataMgr
{
public:
CDataMgr();
~CDataMgr();
void SaveToFile(void);
void LoadFromFile(void);
bool m_bSell;
int m_iAmountSet;
int m_iBalance;
int m_iMinPriceSet; // tick
int m_iMaxPriceSet; // tick
int m_iSellTick;
int m_iLossCutTick;
int m_iTrailingTick;
int m_iCancelDelay;
bool m_bCallOption;
std::vector<std::string> m_CallCodeList;
std::vector<float> m_Call1stBid;
std::vector<std::string> m_PutCodeList;
std::vector<float> m_Put1stBid;
};
#endif

View File

@@ -1,24 +0,0 @@
#include "stdafx.h"
#include "OptionEventHandler.h"
COptionEventHandler::COptionEventHandler()
{
m_pTrader = NULL;
}
COptionEventHandler::~COptionEventHandler()
{
}
const BOOL COptionEventHandler::IsConditionOK(void) const
{
return FALSE;
}
void COptionEventHandler::Received()
{
if(IsConditionOK() == TRUE)
m_pTrader->StartTrading();
}

View File

@@ -1,24 +0,0 @@
#ifndef __OPTION_EVENT_HANDLER__
#define __OPTION_EVENT_HANDLER__
#include "EventHandler.h"
#include "Trader.h"
class COptionEventHandler : public IEventHandler
{
public:
COptionEventHandler();
~COptionEventHandler();
void SetTrader(CTrader* pTrader) { m_pTrader = pTrader; };
virtual void Received();
private:
const BOOL IsConditionOK(void) const;
CTrader* m_pTrader;
};
#endif

View File

@@ -1,19 +0,0 @@
#include "stdafx.h"
#include "Trader.h"
CTrader::CTrader()
{
}
CTrader::~CTrader()
{
}
const BOOL CTrader::IsTrading(void) const
{
return FALSE;
}
void CTrader::StartTrading(void)
{
}

View File

@@ -1,19 +0,0 @@
#ifndef __TRADER__
#define __TRADER__
// 주문과 취소를 전담하는 클래스
class CTrader
{
public:
CTrader();
~CTrader();
const BOOL IsTrading(void) const;
void StartTrading(void);
private:
};
#endif __TRADER__