@ScintiGimcki @幸筍 ,我找到原因了,
1、冒泡法排序的时候
```
for row in range(len(por)):
for nrow in range(row):
if indexes[nrow]<indexes[row]:
indexes[nrow],indexes[row] = indexes[row],indexes[nrow]
for col in range(len(por[0])):
por[nrow][col],por[row][col] = por[row][col],por[nrow][col]
```
这段,应该把小于号; 改成大于号才是顺序排列;,这样幸筍里那张图get_rank之后的排序应该是,
get_rank后
5 0
2 1
1 3
3 4
0 2
6 5
4 6
这才是对的,不过,这样就会漏掉600111,而选出来的是 600498.但是这样回测结果很差。
后来,我又觉得原来策略里,取的量价涨幅时间点,其实是回测当天前面第6天的,我改成回测前一天了
```
portions[i][0] = (close_buy.iloc[i,-1]-open_buy.iloc[i,-1])/open_buy.iloc[i,-1]
portions[i][1] = (volume_buy.iloc[i,-1]-volume_buy.iloc[i,-2])/volume_buy.iloc[i,-1]
```
这样回测结果也一般,题主的思路很好,还可以继续好好研究一下。
2018-02-11