def __init__(self, engine, symbol_list, signal_param={}): self.name = 'sdiffer' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False self.be_run = 'stop' self.d_low_open = -100.0 self.d_high_open = 100.0 self.d_low_mail = -100.0 self.d_high_mail = 100.0 self.mailed_low = False self.mailed_high = False self.load_switch() self.stop = False self.basic_m0 = None self.basic_m1 = None self.cacl_vars() self.symbol_obj = None self.d_base_dict = {} Portfolio.__init__(self, Fut_SdifferSignal, engine, symbol_list, signal_param)
def daily_open(self): Portfolio.daily_open(self) fn = get_dss() + 'fut/engine/follow/portfolio_follow_param.csv' if os.path.exists(fn): df = pd.read_csv(fn) if len(df) > 0: rec = df.iloc[-1, :] # 取最近日期的记录 self.symbol_c = rec.symbol_c self.symbol_p = rec.symbol_p self.strike_high = rec.strike_high self.strike_low = rec.strike_low self.profit_o = rec.profit_o self.price_o = rec.price_o self.price_o_high = 1.04 * self.price_o self.price_o_low = 0.96 * self.price_o self.price_c = rec.price_c self.price_p = rec.price_p self.hold_c = rec.hold_c self.hold_p = rec.hold_p
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'ic' assert len(symbol_list) == 2 self.symbol_g = symbol_list[0] self.symbol_d = symbol_list[1] self.dual_name = self.symbol_g + '_' + self.symbol_d symbol_list.append(self.dual_name) self.direction_g = 'direction_g' self.num_g = 0 self.direction_d = 'direction_d' self.num_d = 0 self.got_dict = {} self.got_dict[self.symbol_g] = False self.got_dict[self.symbol_d] = False df = self.load_param() if df is not None: for i, row in df.iterrows(): if row.symbol_g in symbol_list and row.symbol_d in symbol_list: self.direction_g = row.symbol_g self.num_g = row.direction_g self.direction_d = row.num_g self.num_d = row.num_d Portfolio.__init__(self, Fut_IcSignal, engine, symbol_list, signal_param) self.name_second = 'ic_' + self.dual_name
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'ratio' assert len(symbol_list) == 2 self.symbol_c = symbol_list[0] self.symbol_p = symbol_list[1] self.dual_name = self.symbol_c + '_' + self.symbol_p self.got_dict = {} self.got_dict[self.symbol_c] = False self.got_dict[self.symbol_p] = False self.price_c = 0 self.price_p = 0 self.hold_c = 0 self.hold_p = 0 self.profit_c = 0 self.profit_p = 0 self.fixed_size = 1 self.gap = 100 self.profit = 100 self.load_param(self.symbol_c, self.symbol_p) Portfolio.__init__(self, Fut_RatioSignal, engine, symbol_list, signal_param) self.name_second = 'ratio_' + self.dual_name
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'dalicta' s_param = {} for symbol in symbol_list: s_param[symbol] = {'fixedSize': 6} Portfolio.__init__(self, Fut_DaLictaSignal, engine, symbol_list, s_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'turtle' self.multiplierDict = {} # 按照波动幅度计算的委托量单位字典 self.totalLong = 0 # 总的多头持仓 self.totalShort = 0 # 总的空头持仓 Portfolio.__init__(self, Fut_TurtleSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'ratio' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False Portfolio.__init__(self, Fut_RatioSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'straddle' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False Portfolio.__init__(self, Fut_StraddleSignal, engine, symbol_list, signal_param) self.promote = True
def __init__(self, engine, name): Portfolio.__init__(self, engine) self.name = name self.vtSymbolList = [] self.SIZE_DICT = {} self.PRICETICK_DICT = {} self.VARIABLE_COMMISSION_DICT = {} self.FIXED_COMMISSION_DICT = {} self.SLIPPAGE_DICT = {}
def daily_close(self): Portfolio.daily_close(self) r = [ [self.result.date, self.profit_o, self.price_o, self.price_c, self.price_p, self.hold_c, self.hold_p] ] df = pd.DataFrame(r, columns=['datetime', 'profit_o','price_o', 'price_c', 'price_p', 'hold_c', 'hold_p']) fn = get_dss() + 'fut/engine/follow/portfolio_' + self.name_second + '_save.csv' if os.path.exists(fn): df.to_csv(fn, index=False, mode='a', header=False) else: df.to_csv(fn, index=False)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'skew_strd' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False # self.d_base_dict = {} Portfolio.__init__(self, Fut_Skew_StrdSignal, engine, symbol_list, signal_param)
def daily_open(self): Portfolio.daily_open(self) fn = get_dss() + 'opt/sdiffer_d_base.csv' df = pd.read_csv(fn) date_list = sorted(list(set(df.date))) # print(date_list) date = date_list[-1] df = df[df.date == date] for i, row in df.iterrows(): self.d_base_dict[row.basic + '_' + str(row.strike)] = row.d_base
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'short_put' self.open_dict = {} self.close_dict = {} for symbol in symbol_list: self.open_dict[self.symbol] = False self.close_dict[self.symbol] = False Portfolio.__init__(self, Opt_Short_PutSignal, engine, symbol_list, signal_param) self.name_second = 'short_put_' + str(get_contract(symbol_list[0]).pz)
def daily_close(self): Portfolio.daily_close(self) fn = get_dss() + 'fut/engine/sdiffer/portfolio_sdiffer_param.csv' df = pd.read_csv(fn) for i, row in df.iterrows(): if row.date == self.result.date[: 10] and row.source == 'sdiffer' and row.hold_m0 == 0: df.at[i, 'state'] = 'stop' df = df[(df.state == 'run') | (df.date == self.result.date[:10])] df.to_csv(fn, index=False)
def daily_close(self): Portfolio.daily_close(self) fn = get_dss() + 'fut/engine/ratio/portfolio_ratio_param.csv' df = pd.read_csv(fn) for i, row in df.iterrows(): if row.date == self.result.date[: 10] and row.hold_b == 0 and row.hold_s == 0: df.at[i, 'state'] = 'stop' df = df[(df.state == 'run') | (df.date >= get_trade_preday(self.result.date[:10]))] df.to_csv(fn, index=False)
def daily_open(self): Portfolio.daily_open(self) fn = get_dss( ) + 'fut/engine/ratio/portfolio_' + self.name_second + '_save.csv' if os.path.exists(fn): df = pd.read_csv(fn) df = df[(df.symbol_c == self.symbol_c) & (df.symbol_p == self.symbol_p)] if len(df) > 0: rec = df.iloc[-1, :] # 取最近日期的记录 self.price_c = rec.price_c self.price_p = rec.price_p self.hold_c = rec.hold_c self.hold_p = rec.hold_p
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'arbitrage' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False config = open(get_dss()+'fut/cfg/config.json') setting = json.load(config) symbols = setting['symbols_arbitrage'] self.pz_list = symbols.split(',') # 进行套利监控的品种 self.slice_dict = {} # 每分种产生一个行情切片 self.id = 100 # 唯一标识套利机会,便于后续手工下单 Portfolio.__init__(self, Fut_ArbitrageSignal, engine, symbol_list, signal_param)
def daily_close(self): Portfolio.daily_close(self) r = [ [self.result.date, self.symbol_c, self.symbol_p, self.strike_high, self.strike_low, \ self.profit_o, self.price_o, self.price_c, self.price_p, self.hold_c, self.hold_p] ] df = pd.DataFrame(r, columns=[ 'datetime', 'symbol_c', 'symbol_p', 'strike_high', 'strike_low', 'profit_o', 'price_o', 'price_c', 'price_p', 'hold_c', 'hold_p' ]) fn = get_dss() + 'fut/engine/follow/portfolio_follow_param.csv' if os.path.exists(fn): df.to_csv(fn, index=False, mode='a', header=False) else: df.to_csv(fn, index=False)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'spread' self.tm = '00:00:00' self.got_dict = {} for symbol in symbol_list: self.got_dict[symbol] = False self.spread_dict = {} self.process_dict = {} fn = get_dss() + 'fut/engine/spread/portfolio_spread_param.csv' df = pd.read_csv(fn) for i, row in df.iterrows(): self.spread_dict[row.nm] = [row.s0, row.s1] self.process_dict[row.nm] = False Portfolio.__init__(self, Fut_SpreadSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'avenger' assert len(symbol_list) == 3 self.symbol_o = symbol_list[0] self.symbol_c = symbol_list[1] self.symbol_p = symbol_list[2] self.got_dict = {} self.got_dict[self.symbol_o] = False self.got_dict[self.symbol_c] = False self.got_dict[self.symbol_p] = False self.price_o = 0 self.price_o_high = 0 self.price_o_low = 0 self.price_c = 0 self.price_p = 0 self.hold_o = 0 self.hold_c = 0 self.hold_p = 0 self.profit_o = 0 self.profit_c = 0 self.profit_p = 0 self.switch_state = 'off' pz = str(get_contract(self.symbol_c).pz) fn = get_dss() + 'fut/engine/avenger/avenger_switch_' + pz + '.csv' if os.path.exists(fn): df = pd.read_csv(fn) if len(df) > 0: rec = df.iloc[-1, :] if rec.state == 'on': self.switch_state = 'on' rec.state = 'off' df2 = pd.DataFrame([rec]) df2.to_csv(fn, index=False) # 回写文件 Portfolio.__init__(self, Fut_AvengerSignal, engine, symbol_list, signal_param)
def daily_open(self): Portfolio.daily_open(self) fn = get_dss() + 'fut/engine/follow/portfolio_' + self.name_second + '_save.csv' if os.path.exists(fn): df = pd.read_csv(fn) if len(df) > 0: rec = df.iloc[-1,:] # 取最近日期的记录 self.profit_o = rec.profit_o self.price_o = rec.price_o self.price_o_high = (1+self.percent) * self.price_o self.price_o_low = (1-self.percent) * self.price_o self.price_c = rec.price_c self.price_p = rec.price_p self.hold_c = rec.hold_c self.hold_p = rec.hold_p
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'follow' self.symbol_o = '' self.symbol_c = '' self.symbol_p = '' for symbol in symbol_list: if symbol[:2] == 'IF': self.symbol_o = symbol break self.got_dict = {} self.strike_high = 0 self.strike_low = 0 self.price_o = 0 self.price_o_high = 0 self.price_o_low = 0 self.price_c = 0 self.price_p = 0 self.hold_o = 0 self.hold_c = 0 self.hold_p = 0 self.profit_o = 0 self.profit_c = 0 self.profit_p = 0 self.switch_state = 'off' fn = get_dss() + 'fut/engine/follow/follow_switch.csv' if os.path.exists(fn): df = pd.read_csv(fn) if len(df) > 0: rec = df.iloc[-1, :] if rec.state == 'on': self.switch_state = 'on' Portfolio.__init__(self, Fut_FollowSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'follow' assert len(symbol_list) == 3 self.symbol_o = symbol_list[0] self.symbol_c = symbol_list[1] self.symbol_p = symbol_list[2] if self.symbol_o[:2] == 'IF': self.symbol_future = 'IO' + self.symbol_o[2:] else: self.symbol_future = self.symbol_o self.dual_name = self.symbol_future self.got_dict = {} self.got_dict[self.symbol_o] = False self.got_dict[self.symbol_c] = False self.got_dict[self.symbol_p] = False self.price_o = 0 self.price_o_high = 0 self.price_o_low = 0 self.price_c = 0 self.price_p = 0 self.hold_o = 0 self.hold_c = 0 self.hold_p = 0 self.profit_o = 0 self.profit_c = 0 self.profit_p = 0 self.flag_c, self.flag_p, self.strike_high, self.strike_low, self.fixed_size, self.switch_state, self.percent, self.gap = self.load_param(self.symbol_c, self.symbol_p) Portfolio.__init__(self, Fut_FollowSignal, engine, symbol_list, signal_param) self.name_second = 'follow_' + self.dual_name
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'yue' assert len(symbol_list) == 2 self.symbol_a = symbol_list[0] self.symbol_b = symbol_list[1] self.dual_name = self.symbol_a + '_' + self.symbol_b symbol_list.append(self.dual_name) self.got_dict = {} self.got_dict[self.symbol_a] = False self.got_dict[self.symbol_b] = False df = self.load_param() if df is not None: for i, row in df.iterrows(): if row.symbol_a in symbol_list and row.symbol_b in symbol_list: pass Portfolio.__init__(self, Fut_YueSignal, engine, symbol_list, signal_param) self.name_second = 'yue_' + self.dual_name
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'ic' self.got_dict = {} self.dual_dict = {} df = self.load_param() if df is not None: for i, row in df.iterrows(): if row.symbol_g in symbol_list and row.symbol_d in symbol_list: symbol_list.append(row.symbol_dual) self.dual_dict[row.symbol_dual] = { 'symbol_g': row.symbol_g, 'direction_g': row.direction_g, 'num_g': row.num_g, 'symbol_d': row.symbol_d, 'direction_d': row.direction_d, 'num_d': row.num_d, } # 将品种对加入symbol_list symbol_list += self.dual_dict.keys() Portfolio.__init__(self, Fut_IcSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'swap' self.symbol_o = '' self.symbol_a = '' for symbol in symbol_list: if len(symbol) == 6: self.symbol_o = symbol break assert self.symbol_o != '' self.got_dict = {} self.price_o = 0 self.price_a = 0 self.hold_o = 0 self.hold_a = 0 self.profit_o = 0 self.profit_a = 0 self.can_duo = False self.can_kong = False self.switch_state = 'on' pz = str(get_contract(self.symbol_c).pz) fn = get_dss() + 'fut/engine/swap/swap_switch_' + pz + '.csv' if os.path.exists(fn): df = pd.read_csv(fn) if len(df) > 0: rec = df.iloc[-1, :] if rec.state == 'off': self.switch_state = 'off' Portfolio.__init__(self, Fut_SwapSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'dali' Portfolio.__init__(self, Fut_DaLiSignal, engine, symbol_list, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'dalicta' Portfolio.__init__(self, Fut_DaLictaSignal_Duo, engine, symbol_list, signal_param, Fut_DaLictaSignal_Kong, signal_param) self.name_second = 'dalicta_' + str(get_contract(symbol_list[0]).pz)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'rsiboll' Portfolio.__init__(self, Fut_RsiBollSignal_Duo, engine, symbol_list, signal_param, Fut_RsiBollSignal_Kong, signal_param)
def __init__(self, engine, symbol_list, signal_param={}): self.name = 'kama_raw' Portfolio.__init__(self, Fut_Kama_RawSignal_Duo, engine, symbol_list, signal_param, Fut_Kama_RawSignal_Kong, signal_param)