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)
示例#2
0
    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
示例#3
0
    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
示例#5
0
    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)
示例#7
0
    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
示例#9
0
    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)
示例#11
0
    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
示例#13
0
    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)
示例#15
0
    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)
示例#18
0
    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)
示例#19
0
    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)
示例#20
0
    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
示例#22
0
    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
示例#24
0
    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
示例#25
0
    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)
示例#26
0
    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)
示例#27
0
    def __init__(self, engine, symbol_list, signal_param={}):
        self.name = 'dali'

        Portfolio.__init__(self, Fut_DaLiSignal, engine, symbol_list,
                           signal_param)
示例#28
0
    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)
示例#30
0
    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)