def convertStockDay(stock,startStep,start,end): stckID = meSchema.getStckID(stock) result = meSchema.getStck(stckID,startStep) if len(result) == 78: return True # If already 78.. then most likely already converted. elif len(result) > 0: db.delete(result) step = startStep stockRange = meSchema.getStockRange(stock,start,end) k = len(stockRange) if k < 78: return False m = k - 78 skip = 0 meList = [] for i in range(k): if i%5 in [0,3] and skip < m: skip += 1 else: meStck = meSchema.stck(ID = stckID, step = step, quote = stockRange[i].lastPrice) meList.append(meStck) if len(meList) == 78: db.put(meList) return True step += 1 return False
def post(self): startDayIndex = int(self.request.get('startDayIndex')) Symbol = str(self.request.get('Symbol')) stckID = meSchema.getStckID(Symbol) csvFile = Symbol + '_01-2005_11-2010.csv' dailyQuotes = list(csv.reader(open(csvFile))) dailyQuotes.reverse() # Index 0 is for step 1000001 to 1000080 # Index 1 is for step 1000081 to 1000160 # Index N is for step N*80 + 1 to (N+1)*80 # plus 1000000 putList = [] for N in range(len(dailyQuotes)): dailyOpenStep = 1000000 + N*80 + 1 dailyCloseStep = 1000000 + N*80 + 80 '''Must draw random steps for High and Low.''' daySteps = [step for step in range(dailyOpenStep+1,dailyCloseStep)] highLow = sample(daySteps, 2) dailyHighStep = highLow[0] dailyLowStep = highLow[1] ''' Set Quote Values ''' OpenQuote = dailyQuotes[N][1] HighQuote = dailyQuotes[N][2] LowQuote = dailyQuotes[N][3] CloseQuote = dailyQuotes[N][4] ''' Create stck Entities for stckID Quotes''' openStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyOpenStep), ID = stckID, quote = float(OpenQuote), step = dailyOpenStep) highStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyHighStep), ID = stckID, quote = float(HighQuote), step = dailyHighStep) lowStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyLowStep), ID = stckID, quote = float(LowQuote), step = dailyLowStep) closeStck = meSchema.stck(key_name=str(stckID) + '_' + str(dailyCloseStep), ID = stckID, quote = float(CloseQuote), step = dailyCloseStep) putList.extend([openStck,highStck,lowStck,closeStck]) meSchema.batchPut(putList)
def outputHistoryForChart(keyname, namespace = ''): originalNamespace = namespace_manager.get_namespace() if namespace == '': stckIDs = [1,2,3,4] else: stckIDs = [meSchema.getStckID(namespace)] try: namespace_manager.set_namespace(namespace) meta = meSchema.metaAlg.get_by_key_name(keyname) finally: namespace_manager.set_namespace(originalNamespace) history = eval(meta.history) returns = deque([]) steps = deque([]) for hist in history: steps.appendleft(hist['step']) returns.appendleft(hist['return']) # Need to get stock quotes for step in steps.. and calculate averaged return # step[0] - 400 is the reference step. quoteSteps = [steps[0] - 400] quoteSteps.extend(steps) stckKeys = [] for step in quoteSteps: for stckID in stckIDs: stckKeys.append(str(stckID) + '_' + str(step)) stckQuotes = meSchema.stck.get_by_key_name(stckKeys) stckReturns = [] for i in range(len(stckIDs), len(stckQuotes), len(stckIDs)): rets = [] for j in range(0,len(stckIDs)): rets.append((stckQuotes[i+j].quote - stckQuotes[j].quote)/stckQuotes[j].quote) average = sum(rets)/len(rets) stckReturns.append(average) print 'Long Basket Returns: ', for ret in stckReturns: print '%2.3f' % (100*ret), print '' print 'Returns: ', for ret in returns: print '%2.3f' % (100*ret), print '' print 'Steps: ', for step in steps: print step, print ''
def primeDesireCache(step): # Function to pull out last 400 steps of potential desires. import princeFunc memdict = {} queryStr = princeFunc.getDesireQueryStr(max(step-405,0),step) desires = db.GqlQuery(queryStr).fetch(20000) for desire in desires: # eval desire and pull out cmp(shares,0) and symbol for memcache desirekey = desire.key().name() desireDict = eval(desire.desire) for stock in desireDict: # Must convert symbol to id for memcaching. stckID = meSchema.getStckID(stock) buysell = cmp(desireDict[stock]['Shares'],0) algKey = desirekey.split("_")[-1] # Extract algKey from end. memkey = "desire_" + algKey + "_" + str(buysell) + "_" + str(stckID) step = int(desirekey.split("_")[0]) # Extract step from front part of desirekey. if not memdict.__contains__(memkey): memdict[memkey] = step elif memdict[memkey] < step: memdict[memkey] = step memcache.set_multi(memdict)