コード例 #1
0
    def _bc_loadInitBar(self, vtSymbol, initBars, minx):
        """反调函数,因引擎知道数据在哪,初始化Bar数据,"""

        # assert minx != 'min1'

        r = []
        # 直接读取signal对应minx相关的文件。
        fn = self.dss + 'fut/bar/' + minx + '_' + vtSymbol + '.csv'
        if os.path.exists(fn):
            df = pd.read_csv(fn)
            df['datetime'] = df['date'] + ' ' + df['time']
            df = df[df.datetime < self.startDt]
            # print(vtSymbol, len(df), minx)
            assert len(df) >= initBars

            df = df.sort_values(by=['date','time'])
            df = df.iloc[-initBars:]
            # print(df)

            for i, row in df.iterrows():
                d = dict(row)
                #print(d)
                # print(type(d))
                bar = VtBarData()
                bar.__dict__ = d
                #print(bar.__dict__)
                r.append(bar)

        return r
コード例 #2
0
    def _bc_loadInitBar(self, vtSymbol, initBars, minx):
        """反调函数,因引擎知道数据在哪,初始化Bar数据,"""
        r = []

        today = time.strftime('%Y%m%d', time.localtime())
        # 直接读取signal对应minx相关的文件。
        #fname = self.dss + 'fut/bar/' + minx + '_' + vtSymbol + '.csv'
        fname = self.dss + 'fut/put/rec/' + minx + '_' + vtSymbol + '.csv'
        #print(fname)

        if os.path.exists(fname):
            df = pd.read_csv(fname)
            assert len(df) >= initBars

            df = df.sort_values(by=['date', 'time'])
            df = df.iloc[-initBars:]
            #print(df)

            for i, row in df.iterrows():
                d = dict(row)
                # print(d)
                # print(type(d))
                bar = VtBarData()
                bar.__dict__ = d
                r.append(bar)

        return r
コード例 #3
0
    def _bc_loadInitBar(self, vtSymbol, initBars, minx):
        """读取startDt前n条Bar数据,用于初始化am"""

        assert minx != 'min1'
        r = []

        # 直接读取signal对应minx相关的文件。
        fname = self.dss + 'fut/bar/' + self.minx + '_' + vtSymbol + '.csv'
        #print(fname)
        df = pd.read_csv(fname)
        df['datetime'] = df['date'] + ' ' + df['time']
        df = df[df.datetime < self.startDt]
        assert len(df) >= initBars

        df = df.sort_values(by=['date', 'time'])
        df = df.iloc[-initBars:]
        #print(df)

        for i, row in df.iterrows():
            d = dict(row)
            # print(d)
            # print(type(d))
            bar = VtBarData()
            bar.__dict__ = d
            r.append(bar)

        return r
コード例 #4
0
 def put_service(self):
     print('in put_svervice')
     while True:
         time.sleep(1)
         for id in self.vtSymbol_list:
             try:
                 fname = self.dss + 'fut/put/' + self.minx + '_' + id + '.csv'
                 #print(fname)
                 df = pd.read_csv(fname)
                 d = dict(df.loc[0, :])
                 #print(d)
                 #print(type(d))
                 bar = VtBarData()
                 bar.__dict__ = d
                 bar.vtSymbol = id
                 bar.symbol = id
                 if id not in self.vtSymbol_dict:
                     self.vtSymbol_dict[id] = bar
                 elif self.vtSymbol_dict[id].time != bar.time:
                     self.vtSymbol_dict[id] = bar
                     #self.onBar(bar)
                     for p in self.portfolio_list:
                         p.onBar(bar)
             except Exception as e:
                 print('error,读取文件错误')
                 print(e)
コード例 #5
0
    def calcData_min5(self):
        """加载数据"""
        bar_minX = VtBarData()

        for dt, bar in self.min1barDict.items():
            if str(bar.datetime)[-5:-3] in [
                    '00', '05', '10', '15', '20', '25', '30', '35', '40', '45',
                    '50', '55'
            ]:
                if bar_minX.datetime is not None:
                    self.min5barDict[bar_minX.datetime] = bar_minX
                    bar_minX = VtBarData()
            if bar_minX.datetime is None:
                bar_minX.__dict__ = bar.__dict__
            else:
                if bar_minX.high < bar.high:
                    bar_minX.high = bar.high
                if bar_minX.low > bar.low:
                    bar_minX.low = bar.low
                bar_minX.close = bar.close
                bar_minX.volume = bar.volume

        if bar_minX.datetime is not None:
            self.min5barDict[bar_minX.datetime] = bar_minX

        self.barDict = self.min5barDict
コード例 #6
0
ファイル: futEngine.py プロジェクト: dxcv/nature
    def bar_service(self):
        print('in bar_svervice')

        r, dt = is_trade_day()
        if r == False:
            return

        address = ('localhost', SOCKET_BAR)
        while True:
            with Listener(address, authkey=b'secret password') as listener:
                with listener.accept() as conn:
                    #print('connection accepted from', listener.last_accepted)
                    s = conn.recv()
                    d = eval(s)
                    bar = VtBarData()
                    bar.__dict__ = d
                    for p in self.portfolio_list:
                        p.onBar(bar)
コード例 #7
0
    def bar_listen_service(self):
        print('bar_listen_svervice 线程开始工作')

        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.bind(('localhost', SOCKET_BAR))
        server.listen(5)

        while True:
            try:
                conn, addr = server.accept()
                b = conn.recv(10240)
                s = str(b, encoding='utf-8')
                # print( 'recive:', len(s) )
                conn.close()

                d = eval(s)
                if d['vtSymbol'] in self.vtSymbol_list:
                    bar = VtBarData()
                    bar.__dict__ = d

                    bar.close = float(
                        'nan'
                    ) if bar.close == sys.float_info.max else bar.close
                    bar.AskPrice = float(
                        'nan'
                    ) if bar.AskPrice == sys.float_info.max else bar.AskPrice
                    # if bar.AskPrice != bar.AskPrice:
                    #     print(bar.AskPrice)
                    bar.BidPrice = float(
                        'nan'
                    ) if bar.BidPrice == sys.float_info.max else bar.BidPrice
                    # if np.isnan(bar.BidPrice):
                    #     print(bar.BidPrice)

                    self.lock.acquire()
                    self.bar_list.append(bar)
                    self.lock.release()
                else:
                    pass

            except Exception as e:
                print('error ')
                r = traceback.format_exc()
                to_log(r)
コード例 #8
0
    def put_service(self):
        print('in put_svervice')
        vtSymbol_dict = {}         # 缓存中间bar
        g5 = BarGenerator('min5')

        while True:
            time.sleep(1)
            for id in self.vtSymbol_list:
                try:
                    fname = self.dss + 'fut/put/min1_' + id + '.csv'
                    #print(fname)
                    df = pd.read_csv(fname)
                    d = dict(df.loc[0,:])
                    #print(d)
                    #print(type(d))
                    bar = VtBarData()
                    bar.__dict__ = d
                    bar.vtSymbol = id
                    bar.symbol = id

                    if id not in vtSymbol_dict:
                        vtSymbol_dict[id] = bar
                    elif vtSymbol_dict[id].time != bar.time:
                        vtSymbol_dict[id] = bar

                        bar_min5 = g5.update_bar(bar)
                        if bar_min5 is not None:
                            g5.save_bar(bar_min5)
                            for p in self.portfolio_list:
                                p.onBar(bar_min5, 'min5')

                        for p in self.portfolio_list:
                            p.onBar(bar, 'min1')

                except Exception as e:
                    # 对文件并发访问,存着读空文件的可能!!!
                    #print('-'*30)
                    #traceback.print_exc()
                    s = traceback.format_exc()
                    to_log(s)
コード例 #9
0
ファイル: futEngine.py プロジェクト: dxcv/nature
    def loadInitBar(self, vtSymbol, initBars):
        """读取Bar数据,"""
        r = []
        try:
            today = time.strftime('%Y%m%d', time.localtime())
            fname = self.dss + 'fut/bar/min1_' + today + '_' + vtSymbol + '.csv'
            #print(fname)
            df = pd.read_csv(fname)
            df = df.sort_values(by=['date', 'time'])
            df = df.iloc[-initBars:]
            print(df)

            for i, row in df.iterrows():
                d = dict(row)
                #print(d)
                #print(type(d))
                bar = VtBarData()
                bar.__dict__ = d
                r.append(bar)
        except Exception as e:
            print('error ')
            print(e)

        return r
コード例 #10
0
ファイル: verify_size.py プロジェクト: chenzhenhu-yeah/nature
#print(fname)
df = pd.read_csv(fname)
df['datetime'] = df['date'] + ' ' + df['time']
df = df[df.datetime < startDt]
assert len(df) >= initBars

df = df.sort_values(by=['date', 'time'])
df = df.iloc[-initBars:]
print(df)

for i, row in df.iterrows():
    d = dict(row)
    #print(d)
    # print(type(d))
    bar = VtBarData()
    bar.__dict__ = d
    #print(bar.__dict__)
    r.append(bar)

am = ArrayManager(initBars)  # K线容器
for bar in r:
    am.updateBar(bar)

#rsiValue = am.rsi(5, array=True)
#rsiArray50 = am.rsi(10, array=True)
#rsiMa  = rsiValue[-30:].mean()

#atrValue = am.atr(30)
atrValue = am.atr(1, array=True)
atrMa = atrValue[-30:].mean()
print(atrValue)