コード例 #1
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_all_exchange_stocks():
    """ Creates all exchange stocks """
    logger.info('Adding all exchange stocks...')
    create_nasdaq_stocks()
    create_nyse_stocks()
    create_lse_stocks()
    logger.info('Added all exchange stocks')
コード例 #2
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_stock(industry, structure):
    stock = Stock(stock_code='7UP',
                  name='7-UP BOTTLING COMPANY PLS',
                  exchange_code='C',
                  asset_class_code='EG',
                  contact='SEVEN UP',
                  description=faker.text(max_nb_chars=20, ext_word_list=None),
                  tier_code='7UP',
                  par_value='0.5',
                  list_date=faker.date(),
                  outstanding_shares=234234234,
                  grp_code=faker.text(max_nb_chars=20, ext_word_list=None),
                  registrar=faker.text(max_nb_chars=20, ext_word_list=None),
                  address_1=faker.text(max_nb_chars=20, ext_word_list=None),
                  address_2=faker.text(max_nb_chars=20, ext_word_list=None),
                  address_3=faker.text(max_nb_chars=20, ext_word_list=None),
                  state_code=faker.text(max_nb_chars=20, ext_word_list=None),
                  website=faker.uri(),
                  email=faker.company_email(),
                  gsm=faker.text(100),
                  land_tel=faker.text(max_nb_chars=20, ext_word_list=None),
                  fax_no=faker.text(max_nb_chars=20, ext_word_list=None),
                  regis_close=faker.date(),
                  year_end=faker.text(max_nb_chars=20, ext_word_list=None),
                  logo=faker.text(max_nb_chars=20, ext_word_list=None),
                  shares_in_issue=faker.random_number(),
                  capitalization=faker.random_number(),
                  view_count=faker.random_number(),
                  industry=industry,
                  structure=structure,
                  is_active=faker.boolean())
    stock.save()
    logger.info("{} stock created.".format(stock))
    return stock
コード例 #3
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_structure(structure_type):
    structure = Structure(structure_name='AGRICULTURE',
                          structure_code=None,
                          structure_type=structure_type,
                          parent=None,
                          is_active=True,
                          comment=faker.sentence(15))
    structure.save()
    structure2 = Structure(structure_name='CONGLOMERATES',
                           structure_code=None,
                           structure_type=structure_type,
                           parent=None,
                           is_active=True,
                           comment=faker.sentence(15))
    structure2.save()
    structure3 = Structure(structure_name='CONSTRUCTION/REAL ESTATE',
                           structure_code=None,
                           structure_type=structure_type,
                           parent=None,
                           is_active=True,
                           comment=faker.sentence(15))
    structure3.save()
    structure4 = Structure(structure_name='CONSUMER GOODS',
                           structure_code=None,
                           structure_type=structure_type,
                           parent=None,
                           is_active=True,
                           comment=faker.sentence(15))
    structure4.save()
    structure = Structure(structure_name='Crop Production',
                          structure_code=None,
                          structure_type=structure_type,
                          parent=structure,
                          is_active=True,
                          comment=faker.sentence(15))
    structure.save()
    structure = Structure(structure_name='Diversified Industries',
                          structure_code=None,
                          structure_type=structure_type,
                          parent=structure2,
                          is_active=True,
                          comment=faker.sentence(15))
    structure.save()
    structure = Structure(structure_name='Real Estate Development',
                          structure_code=None,
                          structure_type=structure_type,
                          parent=structure3,
                          is_active=True,
                          comment=faker.sentence(15))
    structure.save()
    structure = Structure(structure_name='Beverages-Non Alcoholic',
                          structure_code=None,
                          structure_type=structure_type,
                          parent=structure4,
                          is_active=True,
                          comment=faker.sentence(15))
    structure.save()
    logger.info("{} structures created.".format(structure))
    return structure, structure2
コード例 #4
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_exchanges():
    """ Creates all exchanges """
    logger.info('Creating Exchanges...')
    NASDAQ().create_exchange()
    NYSE().create_exchange()
    LSE().create_exchange()
    SEHK().create_exchange()
    logger.info('Created Exchanges')
コード例 #5
0
 def handle(self, *args, **options):
     logger.info('Running test')
     stock = yfinance.Ticker('AAPL')
     print('Info: {}'.format(stock.info))
     print('Calendar: {}'.format(stock.calendar))
     print('Recommendations: {}'.format(stock.recommendations))
     print('Actions {}'.format(stock.actions))
     print('Sustainability: {}'.format(stock.sustainability))
コード例 #6
0
def create_stocks():
    """Creates the Stock objects"""
    logger.info('Creating Stocks and Stock Data...')
    logger.info('Adding NYSE Stocks...')
    NYSE().save_stocks()
    logger.info('Added NYSE Stocks')
    logger.info('Adding NASDAQ Stocks...')
    NASDAQ().save_stocks()
    logger.info('Added NASDAQ Stocks')
コード例 #7
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_industy():
    industry = Industry(name=faker.name(),
                        exchange_code=faker.text(max_nb_chars=10,
                                                 ext_word_list=None),
                        sync_flag=faker.boolean(chance_of_getting_true=50),
                        logo=faker.text(max_nb_chars=10, ext_word_list=None))
    industry.save()
    logger.info("{} industry created.".format(industry))
    return industry
コード例 #8
0
    def handle(self, *args, **options):
        logger.info('Correcting Industry data...')
        industry = Industry.objects.get(pk=24)
        companies = Company.objects.filter(industry=industry)

        for company in companies:
            company.industry = Industry.objects.get(pk=1)
            company.save()

        industry.delete()
        logger.info('Finished changes.')
コード例 #9
0
def create_data_type():
    """Creates the DataType objects"""
    logger.info('Creating Data Types..')

    data_codes = ['DAILY', 'INTRADAY']
    data_description = ['Data for a 24 period', 'Data for a 1 minute perioo']

    for code, description in zip(data_codes, data_description):
        DataType.objects.update_or_create(code=code, description=description)

        logger.info('{} DataType created'.format(DataType.code))
コード例 #10
0
def clear_data():
    """Deletes all table data"""
    logger.info('Delete all Object instances')

    Position.objects.all().delete()
    FXPriceData.objects.all().delete()
    FX.objects.all().delete()
    StockPriceData.objects.all().delete()
    Stock.objects.all().delete()
    Exchange.objects.all().delete()
    Country.objects.all().delete()
    Currency.objects.all().delete()
    DataType.objects.all().delete()
    Instrument.objects.all().delete()
コード例 #11
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_structure_type():
    structure_type = StructureType(structure_type_name='SECTOR',
                                   description=faker.sentence(100),
                                   is_active=True,
                                   parent=None)
    structure_type.save()
    logger.info("{} structure type created.".format(structure_type))
    structure_type1 = StructureType(structure_type_name='NEWS SECTIONS',
                                    description=faker.sentence(100),
                                    is_active=True,
                                    parent=None)
    structure_type1.save()
    logger.info("{} structure type created.".format(structure_type1))
    return structure_type, structure_type1
コード例 #12
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_news(stock, section, section2):
    author = Author(
        image_file=get_image_file(),
        first_name=faker.first_name(),
        last_name=faker.last_name(),
        description=faker.sentence(nb_words=6,
                                   variable_nb_words=True,
                                   ext_word_list=None),
        twitter=faker.name(),
        facebook=faker.name(),
        linked_in=faker.name(),
        email=faker.name(),
    )
    news = News(
        title=faker.sentence(nb_words=6,
                             variable_nb_words=True,
                             ext_word_list=None),
        content=faker.paragraphs(nb=3, ext_word_list=None),
        news_date=faker.date(),
        entry_date=faker.date(),
        stock=stock,
        is_featured=faker.boolean(),
        has_downloadable=faker.boolean(),
        is_main=faker.boolean(),
        author=author,
    )
    news.save()
    create_news_images(news)
    create_news_section(news, section)
    create_news_section(news, section2)
    news1 = News(
        title=faker.sentence(nb_words=6,
                             variable_nb_words=True,
                             ext_word_list=None),
        content=faker.paragraphs(nb=3, ext_word_list=None),
        news_date=faker.date(),
        entry_date=faker.date(),
        stock=stock,
        is_featured=faker.boolean(),
        has_downloadable=faker.boolean(),
        is_main=faker.boolean(),
        author=author,
    )
    news1.save()
    create_news_images(news1)
    create_news_section(news1, section)
    create_news_section(news1, section2)
    logger.info("{} news created.".format(news1))
    return news
コード例 #13
0
ファイル: seed_stock_data.py プロジェクト: ajmal017/fintrack
 def handle(self, *args, **options):
     logger.info('Seeding Stock price data...')
     for stock in Stock.objects.all():
         logger.info('Seeding {}...'.format(stock.ticker))
         service = StockDataService(ticker=stock.ticker, name=stock.name, exchange=stock.exchange)
         df_util.bulk_stock_price_data_to_model(service.get_stock_data())
         logger.info('Finished seeding {}...'.format(stock.ticker))
     logger.info('Finished seeding stock data.')
コード例 #14
0
    def addJob(self, job):
        result = False
        try:
            _job = JobInstance(job)
            _job_id = 'ID-{0}:{1}:{2}'.format(job.id, job.code, job.title)
            print(_job_id)
            if job.type == 1:
                # 指定执行时间(仅执行一次)
                self.jobs.add_job(
                    'server:addjob',
                    'date',
                    args=[job.id],
                    id=_job_id,
                    run_date=job.start_date.strftime("%Y-%m-%d %H:%M:%S"))
            else:
                # 定时重复执行
                self.jobs.add_job(
                    'server:addjob',
                    'cron',
                    args=[job.id],
                    id=_job_id,
                    year=job.yr,
                    month=job.mo,
                    week=job.wk,
                    day=job.dy,
                    day_of_week=job.dy_of_week,
                    hour=job.hr,
                    minute=job.mi,
                    second=job.se,
                    start_date=job.start_date.strftime("%Y-%m-%d %H:%M:%S"),
                    end_date=job.end_date.strftime("%Y-%m-%d %H:%M:%S"))
            # 运行启动记录
            if (self.jobs.get_job(_job_id)):
                self.addCronjobStatus(job, action=1)
                logger.info('Add Cronjob {0}'.format(job.title))
                result = True
            else:
                self.addCronjobStatus(job, action=1, status=2)
                logger.error('Error Add Cronjob {0}: {1}'.format(
                    job.title, '启动失败'))

        except Exception as e:
            self.addCronjobStatus(job, action=1, status=2)
            logger.error('Error Add Cronjob {0}: {1}'.format(
                job.title, str(e)))

        return result
コード例 #15
0
def create_country():
    """Creates the Country objects"""
    logger.info('Creating Countries..')

    country_codes = ['USA', 'UK', 'CN', 'CAN', 'GER']
    country_names = [
        'United States of America', 'United Kingdom', 'China', 'Canada',
        'Germany'
    ]
    country_currencies = ['USD', 'GBP', 'CNY', 'CAD', 'EUR']

    for code, name, currency_code in zip(country_codes, country_names,
                                         country_currencies):
        cur = Currency.objects.get(code=currency_code)
        Country.objects.update_or_create(code=code, name=name, currency=cur)

        logger.info('{} Country created'.format(Country.code))
コード例 #16
0
def create_instrument():
    """Creates the needed Instrument objects"""
    logger.info('Creating Instruments...')
    instrument_codes = ['STOCK', 'FX', 'BOND', 'INDICIE']
    instrument_names = ['Stocks', 'Foreign Exchange', 'Bonds', 'Indicies']
    instrument_descriptions = [
        'Company shares', 'Foreign exchange instruments',
        'Treasuries/Corporate bonds', 'Stock indicies'
    ]

    for code, name, description in zip(instrument_codes, instrument_names,
                                       instrument_descriptions):
        Instrument.objects.update_or_create(code=code,
                                            name=name,
                                            description=description)

        logger.info('{} instrument created'.format(Instrument.code))
コード例 #17
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def create_price_list(stock):
    price_item = PriceList(sec_code='7UP',
                           price_date=faker.date(),
                           price_close=faker.pydecimal(left_digits=None,
                                                       right_digits=2,
                                                       positive=True),
                           x_open=faker.pydecimal(left_digits=None,
                                                  right_digits=2,
                                                  positive=True),
                           x_high=faker.pydecimal(left_digits=None,
                                                  right_digits=2,
                                                  positive=True),
                           x_low=faker.pydecimal(left_digits=None,
                                                 right_digits=2,
                                                 positive=True),
                           price=faker.pydecimal(left_digits=None,
                                                 right_digits=2,
                                                 positive=True),
                           x_change=faker.pydecimal(left_digits=None,
                                                    right_digits=2,
                                                    positive=True),
                           offer_bid_sign='+',
                           num_of_deals=faker.random_number(),
                           volume=faker.random_number(),
                           x_value=faker.pydecimal(left_digits=None,
                                                   right_digits=2,
                                                   positive=True),
                           dps=faker.pydecimal(left_digits=None,
                                               right_digits=2,
                                               positive=True),
                           eps=faker.pydecimal(left_digits=None,
                                               right_digits=2,
                                               positive=True),
                           pe=faker.pydecimal(left_digits=None,
                                              right_digits=2,
                                              positive=True),
                           rpt=faker.text(10),
                           e_time=faker.date(),
                           e_date=faker.date(),
                           source=faker.text(10),
                           sync_flag=faker.random_number(),
                           stock=stock)
    price_item.save()
    logger.info("{} price list created.".format(price_item))
    return price_item
コード例 #18
0
    def runJob(self):
        self._begin_time = datetime.datetime.now(tz=pytz.timezone(settings.TIME_ZONE))
        _status = 2
        _msg = ''
        logger.info('Run Begin Cronjob: {0} ==========='.format(self.title))
        try:
            # 系统内部程序调用
            if self.command_type == 1 or self.command_type == 3:
                if self.command is not None and self.command != '':
                    try:
                        _content = eval(self.command)
                        _status = 1
                        _msg = 'Complated Cronjob {0}: {1}'.format(self.title, _content)
                    except Exception as e:
                        _status = 3
                        _msg = 'Error Cronjob {0} : {1}'.format(self.title, e)
                else:
                    _status = 2
                    _msg ='Error Cronjob {0}: Command is null'.format(self.title)

            # 操作系统程序调用
            else:
                if self.command is not None and self.command != '':
                    try:
                        _result = self.execcmdCommand(self.command)
                        _status = 1
                        _msg = 'Complated Cronjob {0}: {1}'.format(self.title, _result)
                    except Exception as e:
                        _status = 3
                        _msg = 'Error Cronjob {0} : {1}'.format(self.title, e)
                else:
                    _status = 2
                    _msg ='Error Cronjob {0}: Command is null'.format(self.title)


            self._end_time = datetime.datetime.now(tz=pytz.timezone(settings.TIME_ZONE))
            self.addCronjobLogs(job=self.job, status=_status, content=_msg, date_begin=self._begin_time, date_end=self._end_time)

            logger.info(_msg)

        except Exception as e:
            self._end_time = datetime.datetime.now(tz=pytz.timezone(settings.TIME_ZONE))
            self.addCronjobLogs(job=self.job, status=3, content=e, date_begin=self._begin_time, date_end=self._end_time)
            logger.error('Error Cronjob {0}: {1}'.format(self.title, e))
コード例 #19
0
def create_exchange():
    """Creates the Exchange objects"""
    logger.info('Creating Exchanges..')

    exchange_codes = ['NYSE', 'NASDAQ', 'LSE', 'SSE']
    exchange_names = [
        'New York Stock Exchange', 'NASDAQ Stock Market',
        'London Stock Exchange', 'Shanghai Stock Exchange'
    ]
    exchange_countries = ['USA', 'USA', 'UK', 'CN']

    for code, name, country in zip(exchange_codes, exchange_names,
                                   exchange_countries):
        location = Country.objects.get(code=country)
        Exchange.objects.update_or_create(code=code,
                                          name=name,
                                          country=location)

        logger.info('{} Exchange created'.format(Exchange.code))
コード例 #20
0
ファイル: seed_project.py プロジェクト: ajmal017/fintrack
    def handle(self, *args, **options):
        logger.info('Seeding Project Data...')
        management.call_command('seed_countries')
        logger.info('Seeded Country data.')

        management.call_command('seed_exchanges')
        management.call_command('seed_exchange_stocks')
        logger.info('Seeded Exchanges and Stock data')

        management.call_command('fix_empty_industry')
        management.call_command('fix_empty_sector')

        logger.info('Seeded Fintrack data.')
コード例 #21
0
    def stopJob(self, job):
        result = False
        try:
            _job_id = 'ID-{0}:{1}:{2}'.format(job.id, job.code, job.title)

            if (self.jobs.get_job(_job_id)):
                self.jobs.remove_job(_job_id)
                logger.info('{0} 已经停止'.format(_job_id))
                self.addCronjobStatus(job, action=2)

                result = True
            else:
                self.addCronjobStatus(job, action=2, status=2)
                logger.error('Error Stop Cronjob {0}: {1}'.format(
                    job.title, '任务不存在'))

        except Exception as e:
            self.addCronjobStatus(job, action=2, status=2)
            logger.error('Error Stop Cronjob {0}: {1}'.format(
                job.title, ''.join(e)))

        return result
コード例 #22
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_lse_stocks():
    """ Creates all LSE listed stocks """
    logger.info('Adding LSE Stocks...')
    LSE().create_stocks()
    logger.info('Added LSE Stocks')
コード例 #23
0
def create_currency():
    """Create the Currency and FX objects"""
    logger.info('Creating Currencies..')
    save_currencies()
    logger.info('Created Currencies')
    logger.info('Creating Currency Pairs..')
    save_currency_pairs()
    logger.info('Created Currency Pairs')
    logger.info('Creating FX Data...')
    get_fx_data()
    logger.info('Created FX Data')
コード例 #24
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def seed_exchange_stocks_minute_data(exchange_symbol):
    """ Creates all exchange Stocks minute data """
    logger.info(
        'Adding {} stocks minute price data...'.format(exchange_symbol))
    bulk_get_exchanges_minute_data(exchange_symbol)
    logger.info('Added {} stocks minute price data'.format(exchange_symbol))
コード例 #25
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def refresh_exchange_stocks_minute_data(exchange_symbol):
    logger.info('Refreshing {} stocks minute data'.format(exchange_symbol))
    get_exchanges_minute_data(exchange_symbol)
    logger.info('Refreshed {} minute data'.format(exchange_symbol))
コード例 #26
0
ファイル: seed.py プロジェクト: Maxcutex/stockman_project
def clear_data():
    """Deletes all the table data"""
    logger.info("Delete Structure instances")
    Structure.objects.all().delete()
    logger.info("Delete StructureType instances")
    StructureType.objects.all().delete()
    logger.info("Delete Industry instances")
    Industry.objects.all().delete()
    logger.info("Delete Price instances")
    PriceList.objects.all().delete()
    logger.info("Delete Stock instances")
    Stock.objects.all().delete()
    logger.info("Delete News instances")
    News.objects.all().delete()
    logger.info("Delete NewsImages instances")
    NewsImage.objects.all().delete()
    logger.info("Delete News Sections instances")
    NewsCategorySection.objects.all().delete()
    logger.info("Delete Analysis instances")
    AnalysisOpinion.objects.all().delete()
    logger.info("Delete Analysis Images instances")
    AnalysisImage.objects.all().delete()
    logger.info("Delete Analysis Sections instances")
    AnalysisCategorySection.objects.all().delete()
コード例 #27
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_nyse_stocks():
    """ Creates all NYSE listed stocks """
    logger.info('Adding NYSE Stocks...')
    NYSE().create_stocks()
    logger.info('Added NYSE Stocks')
コード例 #28
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_constituents():
    """ Creates all of the Indices constituents """
    logger.info('Adding Indices constituents...')
    SP500().add_constituents()
    logger.info('Added Indices constituents')
コード例 #29
0
 def shutdown(self):
     self.jobs.shutdown()
     logger.info('===== shutdown cronjob =======')
コード例 #30
0
ファイル: seed_data.py プロジェクト: ajmal017/fintrack
def create_indices():
    """ Creates all Indices """
    logger.info('Creating Indices...')
    SP500().create_index()
    logger.info('Created Indices')