Beispiel #1
0
    def __init__(self,
                 main_df: pd.DataFrame = None,
                 factor_df_list: List[pd.DataFrame] = None,
                 sub_df_list: pd.DataFrame = None,
                 main_data: NormalData = None,
                 factor_data_list: List[NormalData] = None,
                 sub_data_list: NormalData = None,
                 sub_col_chart: Optional[dict] = None,
                 rects: List[Rect] = None,
                 annotation_df: pd.DataFrame = None) -> None:
        """

        :param main_df: df for main chart
        :param factor_df_list: list of factor df on main chart
        :param sub_df_list: df for sub chart under main chart
        :param main_data: NormalData wrap main_df,use either
        :param factor_data_list: list of NormalData wrap factor_df,use either
        :param sub_data_list: NormalData wrap sub_df,use either
        :param annotation_df:
        """

        # 主图数据
        if main_data is None:
            main_data = NormalData(main_df)
        self.main_data: NormalData = main_data

        # 主图因子
        if not factor_data_list and factor_df_list:
            factor_data_list = []
            for df in factor_df_list:
                factor_data_list.append(NormalData(df))
        # 每一个df可能有多个column, 代表多个指标,对于连续型的,可以放在一个df里面
        # 对于离散型的,比如一些特定模式的连线,放在多个df里面较好,因为index不同
        self.factor_data_list: List[NormalData] = factor_data_list

        # 副图数据
        if not sub_data_list and sub_df_list:
            sub_data_list = []
            for df in sub_df_list:
                sub_data_list.append(NormalData(df))
        # 每一个df可能有多个column, 代表多个指标,对于连续型的,可以放在一个df里面
        # 对于离散型的,比如一些特定模式的连线,放在多个df里面较好,因为index不同
        self.sub_data_list: List[NormalData] = sub_data_list

        # 幅图col对应的图形,line or bar
        self.sub_col_chart = sub_col_chart

        # 主图的标记数据
        self.annotation_df = annotation_df

        # list of rect
        self.rects = rects
Beispiel #2
0
 def on_finish(self, timestmap):
     self.on_trading_finish(timestmap)
     # show the result
     if self.draw_result:
         import plotly.io as pio
         pio.renderers.default = "browser"
         reader = AccountStatsReader(region=self.region,
                                     trader_names=[self.trader_name])
         df = reader.data_df
         drawer = Drawer(main_data=NormalData(
             df.copy()[['trader_name', 'timestamp', 'all_value']],
             category_field='trader_name'))
         drawer.draw_line(show=True)
Beispiel #3
0
 def add_sub_df(self, df: pd.DataFrame):
     self.add_sub_data(NormalData(df))
Beispiel #4
0
 def add_factor_df(self, df: pd.DataFrame):
     self.add_factor_data(NormalData(df))
 def draw_line(self, show=True):
     drawer = Drawer(main_data=NormalData(
         self.data_df.copy()[['trader_name', 'timestamp', 'all_value']],
         category_field='trader_name'))
     return drawer.draw_line(show=show)
                         None,
                         None,
                         None,
                         None,
                         None,
                         the_timestamp,
                         start_timestamp,
                         end_timestamp,
                         columns,
                         self.filters,
                         order,
                         None,
                         level,
                         category_field='trader_name',
                         time_field='timestamp',
                         computing_window=None)


if __name__ == '__main__':
    reader = AccountStatsReader(region=Region.CHN,
                                trader_names=['000338_ma_trader'])
    drawer = Drawer(main_data=NormalData(
        reader.data_df.copy()[['trader_name', 'timestamp', 'all_value']],
        category_field='trader_name'))
    drawer.draw_line()
# the __all__ is generated
__all__ = [
    'get_trader_info', 'get_order_securities', 'AccountStatsReader',
    'OrderReader'
]