python字典操作不起作用

时间:2015-08-19 10:00:20

标签: python sorting dictionary

我正在进行数据处理以过滤和排序等...

for stock in context.timeSeriesData:
    try:
        if context.timeSeriesData.iloc[1,:][stock][2] > 0 and context.timeSeriesData.iloc[0,:][stock][2] > 0:
            if context.timeSeriesData.iloc[1,:][stock][2] > context.timeSeriesData.iloc[0,:][stock][2]:
                context.tradingList[stock] = []       
                increment = context.timeSeriesData.iloc[1,:][stock][2] / context.timeSeriesData.iloc[0,:][stock][2]
                context.tradingList[stock].append(increment)            
    except:
        pass      

try:
    sorted_tradingList = sorted(context.tradingList.items(), key = lambda x: x[1], reverse = True)
except:
    pass



try:
    sorted_tradingList.clear()
except:
    pass



for x,stock in sorted_tradingList:
    if len(context.tradingBook) < (1.25/context.weightLong):
        if stock in data and 'price' in data[stock]:
            context.tradingBook[stock] = [] 
            context.tradingBook[stock].append(0.0)
            order_target_percent(stock, context.weightLong) 




for k, v in context.tradingBook.iteritems():
    v[0] +=1

timeToSell = {k:v for (k,v) in context.tradingBook.iteritems() if v[0] == 10}

for stock in timeToSell:
    if stock in data and 'price' in data[stock]:
        TargetHedge = (len(context.tradingBook) - 1) * context.weightShort
        order_target_percent(stock, 0.0) 
        del context.tradingBook[stock]

if len(timeToSell)>0:
    timeToSell.clear()

TargetHedge = (len(context.tradingBook)) * context.weightShort
order_target_percent(sid(8554), TargetHedge) 

在第一个循环中,context.timeSeriesData将生成许多具有三个数据元素的公司集。例如,前两个如下所示。让我们看看AAPL,311是一个行业代码(我现在不在乎使用它),第二个元素18024000000是净收入,3.08是每股收益(我想操纵)

DataFrame:
          Equity(24 [AAPL])         
1  [311.0, 18024000000.0, 3.08] 
2  [311.0, 18024000000.0, 3.08]  

在上面的数据中,第一行表示前一天收到的数据,第二行表示刚刚到达的数据。因此将来如果DataFrame:更改为如下所示。计算机应该将其放入context.tradingBook

DataFrame:
          Equity(24 [AAPL])         
1  [311.0, 18024000000.0, 3.08] 
2  [311.0, 19033000000.0, 3.79]  

所以目的是当收到新数据并且每股收益得到改善时,它将被存储到context.tradingList中。然后它以最高&#34;增量&#34;

短路
sorted_tradingList = sorted(context.tradingList.items(), key = lambda x: x[1], reverse = True)

然后是代码

for k, v in context.tradingBook.iteritems():
    v[0] +=1
每次处理整个代码块(每天一次)时,

将添加一天。你可以看到它从0天开始,context.tradingBook [stock] .append(0.0),但每天它会增加一天直到10天过去,此时,我会尝试卖掉它们。

order_target_percent(stock,context.weightLong)是买卖股票的代码,对我的系统来说是独一无二的,所以不要担心。我的问题是......为什么不加几天。我遇到了问题

for k, v in context.tradingBook.iteritems():
    v[0] +=1

目前还没有添加天数。我究竟做错了什么。如果你有兴趣沿着这个目标前进,我还有另外一个问题。但是,一旦我们迈出第一步,我会通知你。非常感谢。

1 个答案:

答案 0 :(得分:0)

问题出在

try:
    sorted_tradingList.clear()
except:
    pass

它没有用,我也没有意识到这一点。