def testBuy() : from Queue import Queue from cxCybosPlus import gCybosPlusClassDic import win32gui import time from common import getResultStringPortrait from cxFile import cxFile reportQueue = Queue() conclusionQueue = Queue() cpTdUtil = gCybosPlusClassDic['cxCpTdUtil'] result = cpTdUtil.TradeInit() if result != 0 : print 'cpTdUtil.init failed' return accountList = cpTdUtil.AccountNumber() goodsList = cpTdUtil.GoodsList(accountList[0], 3) cpConclusion = gCybosPlusClassDic['cxCpConclusion'] cpConclusion.open() cpConclusion.set_result_queue(conclusionQueue) cpConclusion.Subscribe() cpTd0311 = gCybosPlusClassDic['cxCpTd0311'] cpTd0311.open() cpTd0311.set_result_queue(reportQueue) cpTd0311.SetInputValue(0, 2) # 1 : sell, 2 : buy cpTd0311.SetInputValue(1, accountList[0]) cpTd0311.SetInputValue(2, goodsList[0]) stockCode = u'A005180' #빙그레 amount = 1 unitPrice = 1 tradeCondition = 0 tradeType = '03' cpTd0311.SetInputValue(3, stockCode) cpTd0311.SetInputValue(4, amount) cpTd0311.SetInputValue(5, unitPrice) cpTd0311.SetInputValue(7, tradeCondition) cpTd0311.SetInputValue(8, tradeType) # result = cpTd0311.BlockRequest() result = cpTd0311.Request() print 'result', result print 'GetDibStatus',cpTd0311.GetDibStatus() print 'GetDibMsg1', cpTd0311.GetDibMsg1() print 'Continue', cpTd0311.Continue() #print cpTd0311.get_header_value_list() cntConclusion = 0 resultFile = cxFile() while True : if reportQueue.qsize() != 0 : print reportQueue.qsize() resultList = reportQueue.get() resultString = getResultStringPortrait(resultList, 1, 1, 1, 1 ) print resultString resultFile.write(resultString) print resultList[0] print resultList[4] if ( resultList[0] == -1 ) and ( resultList[4] == u'cxCpTd0311' ) : del resultList del resultString break del resultList del resultString if conclusionQueue.qsize() != 0 : resultList = conclusionQueue.get() resultString = getResultStringPortrait(resultList, 1, 1, 1, 1) print resultString resultFile.write(resultString) print resultList[0] print resultList[4] cntConclusion += 1 if cntConclusion >= 2 : break win32gui.PumpWaitingMessages() time.sleep(0.5) resultFile.close() cpConclusion.Unsubscribe() cpConclusion.close()
def RapidSnowBall() : reportQueue = Queue() conclusionQueue = Queue() resultFile = cxFile() cpTdUtil = gCybosPlusClassDic['cxCpTdUtil'] result = cpTdUtil.TradeInit() if result != 0 : resultString = u'cpTdUtil.init failed' resultFile.write(resultString) return accountList = cpTdUtil.AccountNumber() goodsList = cpTdUtil.GoodsList(accountList[0],3) cpConclusion = gCybosPlusClassDic['cxCpConclusion'] cpConclusion.open() cpConclusion.set_result_queue(conclusionQueue) cpConclusion.Subscribe() cpTd0311 = gCybosPlusClassDic['cxCpTd0311'] cpTd0311.open() cpTd0311.set_result_queue(reportQueue) # TODO :initial subscribe subscribeStockList = loadSubscribeStockList() #if len(subscribeStockList) : while True : #if reportQueue.qsize() != 0 : #resultList = reportQueue.get() #resultString = getResultStringPortrait(resultList, 1, 1, 1, 1) #resultFile.write(resultString) # TODO : if it gets some value changes, # determines whether buy or sell. # determines stockCode, amount, unitPrice, tradeCondition, # tradType also. # TODO : if it determines to buy, buy it. # TODO : if it determines to sell, sell it. #cpTd0311.SetInputValue(0, 1 or 2 ) # 1 : sell, 2 : buy #cpTd0311.SetInputValue(1, accountList[0]) #cpTd0311.SetInputValue(2, goodsList[0]) #cpTd0311.SetInputValue(3, stockCode) # stockCode #cpTd0311.SetInputValue(4, amount) # amount #cpTd0311.SetInputValue(5, unitPrice) # unitPrice #cpTd0311.SetInputValue(7, tradeCondition) # tradeCondition #cpTd0311.SetInputValue(8, tradeType) # tradeType #result = cpTd0311.Request() #print 'result', result #print 'GetDibStatus', cpTd0311.GetDibStatus() #print 'GetDibMsg1', cpTd0311.GetDibMsg1() #bContinue = cpTd0311.Continue() #print 'Continue', bContinue #if bContinue == 1 : # cpTd0311.Request() if conclusionQueue.qsize() != 0 : resultList = conclusionQueue.get() resultString = getResultStringPortrait(resultList, 1, 1, 1, 1) print resultString resultFile.write(resultString) # TODO : check the loop-end conditions. # keystroke or some other conditions. win32gui.PumpWaitingMessages() #time.sleep(1) time.sleep(0.01) #0.01 for 10 msec. resultFile.close() cpTd0311.close() cpConclusion.Unsubscribe() cpConclusion.close()