给一个公司做网站需要什么内容,深圳网站界面设计,网站建设的相应技术,外贸网站建站公司判断是否为调仓日
ef is_adjust_day(self, dom1):判断是否是每月的调仓日。 :params int dom: 每月第几个交易日进行调仓#xff0c;缺省是第1个交易日。:return: 如果是调仓日#xff0c;返回True#xff0c;否则返回False。ret Falsetoday self.datetime.date()…判断是否为调仓日
ef is_adjust_day(self, dom1):判断是否是每月的调仓日。 :params int dom: 每月第几个交易日进行调仓缺省是第1个交易日。:return: 如果是调仓日返回True否则返回False。ret Falsetoday self.datetime.date()if self.month is None or self.month ! today.month:self.month today.monthself.num_of_days 1else:self.num_of_days 1if self.num_of_days dom:ret Truereturn ret
获取指定档位期权 def get_opt(self, otypecall, pos1, when1):根据ETF当前价格获取期权。:params str otype: 期权类型call或者put。:params int pos: 期权的位置正数表示比当前标的价格高几档负数表示比当前期权价格低几档。:params int when: 期权的到期日期0/1/2/3分别表示当月/下月/当季/下季。:return: 期权代码如果没有找到则返回None。etf_price self.datas[0].close[0]# 获取期权的到期日期m self.get_maturity(whenwhen)# 筛选这个到日期的期权并按照行权价由低到高排序d self.params.optsd d[ (d[maturity] m) (d[type] otype) ]d d.sort_values(by[strike])# 建立一个按照行权价由低到高排列的期权代码列表option_codes []pos_etf 0for _, row in d.iterrows():if row[strike] etf_price :if pos_etf 0 :option_codes.append(None)pos_etf len(option_codes) - 1option_codes.append(row[code])# 返回需要的期权代码idx pos_etf posif idx 0 and idx len(option_codes) :return option_codes[idx]else:return None计算结束日期
def get_maturity(self, when1):获取期权的结束日期:param int when: 哪一个到期日期。0/1/2/3分别表示当月/下月/当季/下季的到期日期。:return: 期权的到期日期# 获取所有已经开始交易的期权代码trading_codes []for d in self.datas:if len(d) 0:trading_codes.append(d._name)#print(trading_codes)
# 选出到期日期大于等于今天的期权合约df self.params.opts#print(df)df df[ df[maturity] pd.to_datetime(self.datetime.date()) ]#print(df)
# 现在可以交易的期权的到期日期列表按照从小到大排序m_list sorted(list(set(df[df[code].isin(trading_codes)][maturity])))#today self.datetime.date()#print(today)#print(m_list)
# 如果给的参数不符合要求返回最后一个日期if when len(m_list):when len(m_list) - 1#return m_list[when]if len(m_list)!0:print(m_list)return m_list[0]else:pass添加期权数据到backtrader
# 添加ETF日线数据到回测引擎。ETF是159919。日线数据在策略中通过self.datas[0]来引用
df2[date] df2[date].astype(datetime64[ns])
data PandasData(datanamedf2, datetimedate)cerebro.adddata(data, name159919) # 添加期权数据到回测引擎
for opt in list(set(hs300[code])):d hs300[hs300[code]opt].iloc[:,1:]d[trade_date] d[trade_date].astype(datetime64[ns])d.index pd.to_datetime(d[trade_date])data PandasData(datanamed)cerebro.adddata(data, nameopt)