import numpy as np
from numpy import nan
from math import isnan
import math
import pandas as pd
from jqdata import jy
from jqdata import *
from jqdata import finance
import talib
import talib as tl
获取每种期货的主力合约\次主力合约
def get_3dominant_future(category):
#主力合约
domain = get_dominant_future(category)
log.info(category,' domain = ',domain)
#当月可交易的全部该品种合约列表
contractlist = get_future_contracts(category)
#log.info(' ',category,' contractlist = ',contractlist)
#简历某种期货各合约成交量字典
volumedict = dict()
for i in contractlist:
volumetemp = float(attribute_history(i, 3, '1d',['volume']).mean()) #2
#if isnan(volumetemp):
#return ['成交量小', '成交量小', '成交量小',0,0]
#if not isnan(volumetemp):
volumedict[i] = volumetemp
log.info(' 主力合约是%s,volumedict = '%domain,volumedict)
del volumedict[domain]
log.info(' 剔除主力合约%s 后的volumedict = '%domain,volumedict)
#次主力合约
domain2 = max(volumedict, key=volumedict.get)
log.info(category,' domain2 = ',domain2)
2016-04-18 05:00:00 - INFO - JM domain = JM1609.XDCE
2016-04-18 05:00:00 - INFO - 主力合约是JM1609.XDCE,volumedict = {'JM1704.XDCE': nan, 'JM1609.XDCE': 953164.0, 'JM1703.XDCE': 0.0, 'JM1701.XDCE': 11966.0, 'JM1605.XDCE': 46560.666666666664, 'JM1606.XDCE': 0.0, 'JM1607.XDCE': 0.0, 'JM1612.XDCE': 0.0, 'JM1611.XDCE': 0.0, 'JM1610.XDCE': 1.3333333333333333, 'JM1608.XDCE': 0.0, 'JM1702.XDCE': 0.0}
2016-04-18 05:00:00 - INFO - 剔除主力合约JM1609.XDCE 后的volumedict = {'JM1704.XDCE': nan, 'JM1703.XDCE': 0.0, 'JM1701.XDCE': 11966.0, 'JM1605.XDCE': 46560.666666666664, 'JM1606.XDCE': 0.0, 'JM1607.XDCE': 0.0, 'JM1612.XDCE': 0.0, 'JM1611.XDCE': 0.0, 'JM1610.XDCE': 1.3333333333333333, 'JM1608.XDCE': 0.0, 'JM1702.XDCE': 0.0}
2016-04-18 05:00:00 - INFO - JM domain2 = JM1704.XDCE
问题:在聚宽python2下,回测时,domain = JM1704.XDCE;在研究环境下 domain = JM1605.XDCE 二个结果不一致,请问是怎么回事?
如volumedict = {'RU1611.XSGE': 350.6666666666667, 'RU1605.XSGE': 57966.666666666664, 'RU1608.XSGE': 51.333333333333336, 'RU1703.XSGE': 54.666666666666664, 'RU1704.XSGE': nan, 'RU1607.XSGE': 104.0, 'RU1701.XSGE': 45772.666666666664, 'RU1610.XSGE': 566.6666666666666, 'RU1606.XSGE': 84.0},则无论回测还是研究环境下都是domain=RU1605.XSGE,结果是正常的。