This commit is contained in:
70
CPRobot.rc
70
CPRobot.rc
@@ -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
|
||||
|
||||
@@ -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="리소스 파일"
|
||||
|
||||
BIN
CPRobotDlg.cpp
BIN
CPRobotDlg.cpp
Binary file not shown.
57
CPRobotDlg.h
57
CPRobotDlg.h
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
37
DataMgr.cpp
37
DataMgr.cpp
@@ -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;
|
||||
}
|
||||
35
DataMgr.h
35
DataMgr.h
@@ -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
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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
|
||||
19
Trader.cpp
19
Trader.cpp
@@ -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)
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user