'size': size, 'level': self.level, 'ccxt_level': self.ccxt_trading_level } if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--level', help='trading level', default='15m', choices=[item.value for item in TradingLevel]) parser.add_argument('--exchanges', help='exchanges', default='binance', nargs='+', choices=[item for item in COIN_EXCHANGES]) parser.add_argument('--codes', help='codes', default='EOS/USDT', nargs='+', choices=[item for item in COIN_PAIRS]) args = parser.parse_args() level = TradingLevel(args.level) init_process_log('coin_{}_kdata.log'.format(args.level)) CoinKdataRecorder(codes=['EOS/USDT'], level=level).run()
help='trading level', default='1m', choices=[item.value for item in TradingLevel]) parser.add_argument('--exchanges', help='exchanges', default='binance', nargs='+', choices=[item for item in COIN_EXCHANGES]) parser.add_argument('--codes', help='codes', default='EOS/USDT', nargs='+', choices=[item for item in COIN_PAIRS]) args = parser.parse_args() level = TradingLevel(args.level) exchanges = args.exchanges if type(exchanges) != list: exchanges = [exchanges] codes = args.codes if type(codes) != list: codes = [codes] init_process_log('coin_{}_{}_{}_kdata.log'.format( '-'.join(exchanges), '-'.join(codes).replace('/', ''), args.level)) CoinKdataRecorder(exchanges=exchanges, codes=codes, level=level).run()
stock_code = category['code'] stock_id = china_stock_code_to_id(stock_code) index_id = index_item.id the_list.append({ 'id': '{}_{}'.format(index_id, stock_id), 'index_id': index_id, 'stock_id': stock_id }) if the_list: df = pd.DataFrame.from_records(the_list) df_to_db(data_schema=self.data_schema, df=df, provider=self.provider) self.logger.info('finish recording index:{},{}'.format( index_item.category, index_item.name)) except Exception as e: self.logger.error("error:,resp.text:", e, resp.text) self.sleep() if __name__ == '__main__': init_process_log('sina_china_stock_category.log') recorder = SinaChinaStockCategoryRecorder() recorder.run()
from zvt.recorders.eastmoney.holder.top_ten_holder_recorder import TopTenHolderRecorder from zvt.recorders.eastmoney.holder.top_ten_tradable_holder_recorder import TopTenTradableHolderRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=1, minute=00) def run(): while True: try: TopTenHolderRecorder().run() TopTenTradableHolderRecorder().run() break except Exception as e: logger.exception('holder runner error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('eastmoney_holder.log') run() sched.start() sched._thread.join()
} kdata_list.append(kdata_json) return kdata_list except Exception as e: logger.exception("record_kdata for security:{} failed".format( entity.id)) else: logger.warning("exchange:{} not support fetchOHLCV".format( entity.exchange)) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--exchanges', help='exchanges', default='binance', nargs='+', choices=[item for item in COIN_EXCHANGES]) parser.add_argument('--codes', help='codes', default='EOS/USDT', nargs='+', choices=[item for item in COIN_PAIRS]) args = parser.parse_args() init_process_log('coin_tick_kdata.log') CoinKdataRecorder(codes=['EOS/USDT']).run()
to_time_str(start), to_time_str(end)) response = requests.get(url, headers=EASTMONEY_ETF_NET_VALUE_HEADER) response_json = demjson.decode(response.text) response_df = pd.DataFrame(response_json['Data']['LSJZList']) # 最后一页 if response_df.empty: break response_df['FSRQ'] = pd.to_datetime(response_df['FSRQ']) response_df['JZZZL'] = pd.to_numeric(response_df['JZZZL'], errors='coerce') response_df['LJJZ'] = pd.to_numeric(response_df['LJJZ'], errors='coerce') response_df = response_df.fillna(0) response_df.set_index('FSRQ', inplace=True, drop=True) df = pd.concat([df, response_df]) page += 1 self.sleep() return df if __name__ == '__main__': init_process_log('sina_china_etf_day_kdata.log') ChinaETFDayKdataRecorder(level=TradingLevel.LEVEL_1DAY).run()
from zvt.recorders.sina.meta.sina_china_stock_category_recorder import SinaChinaStockCategoryRecorder from zvt.recorders.sina.money_flow.sina_index_money_flow_recorder import SinaIndexMoneyFlowRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=17, minute=00) def run(): while True: try: SinaChinaStockCategoryRecorder().run() SinaIndexMoneyFlowRecorder().run() break except Exception as e: logger.exception('sina runner error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('sina_runner.log') run() sched.start() sched._thread.join()
kdata.hfq_low = df.loc[kdata.timestamp, 'low'] kdata.factor = df.loc[kdata.timestamp, 'factor'] self.session.commit() latest_factor = df.factor[-1] # factor not change yet, no need to reset the qfq past if latest_factor == self.current_factors.get(security_item.id): sql = 'UPDATE stock_day_kdata SET qfq_close=hfq_close/{},qfq_high=hfq_high/{}, qfq_open= hfq_open/{}, qfq_low= hfq_low/{} where ' \ 'security_id=\'{}\' and level=\'{}\' and (qfq_close isnull or qfq_high isnull or qfq_low isnull or qfq_open isnull)'.format( latest_factor, latest_factor, latest_factor, latest_factor, security_item.id, self.level.value) else: sql = 'UPDATE stock_day_kdata SET qfq_close=hfq_close/{},qfq_high=hfq_high/{}, qfq_open= hfq_open/{}, qfq_low= hfq_low/{} where ' \ 'security_id=\'{}\' and level=\'{}\''.format(latest_factor, latest_factor, latest_factor, latest_factor, security_item.id, self.level.value) self.logger.info(sql) self.session.execute(sql) self.session.commit() def on_stop(self): super().on_stop() logout() if __name__ == '__main__': init_process_log('china_stock_day_kdata.log') ChinaStockDayKdataRecorder(level=TradingLevel.LEVEL_1DAY).run()
from zvt.recorders.eastmoney.finance.china_stock_balance_sheet_recorder import ChinaStockBalanceSheetRecorder from zvt.recorders.eastmoney.finance.china_stock_income_statement_recorder import ChinaStockIncomeStatementRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=2, minute=00) def run(): while True: try: ChinaStockBalanceSheetRecorder().run() ChinaStockIncomeStatementRecorder().run() break except Exception as e: logger.exception('finance runner 1 error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('eastmoney_balance_sheet_income_statement.log') run() sched.start() sched._thread.join()
self.logger.info(sql) self.session.execute(sql) self.session.commit() # TODO:use netease provider to get turnover_rate self.logger.info('use netease provider to get turnover_rate') def on_stop(self): super().on_stop() logout() if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--level', help='trading level', default='1d', choices=[item.value for item in TradingLevel]) parser.add_argument('--codes', help='codes', default=SAMPLE_STOCK_CODES, nargs='+') args = parser.parse_args() level = TradingLevel(args.level) codes = args.codes init_process_log('jq_china_stock_{}_kdata.log'.format(args.level)) JQChinaStockKdataRecorder(level=level, sleeping_time=0, codes=codes).run()
from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=1, minute=00) def run(): while True: try: ChinaStockListSpider(provider='eastmoney').run() ChinaStockCategoryRecorder().run() ChinaStockMetaRecorder().run() break except Exception as e: logger.exception('meta runner error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('eastmoney_china_stock_meta.log') run() sched.start() sched._thread.join()
from zvt.recorders.eastmoney.finance.china_stock_cash_flow_recorder import ChinaStockCashFlowRecorder from zvt.recorders.eastmoney.finance.china_stock_finance_factor_recorder import ChinaStockFinanceFactorRecorder from zvt.recorders.eastmoney.finance.china_stock_income_statement_recorder import ChinaStockIncomeStatementRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=2, minute=00) def run(): while True: try: ChinaStockFinanceFactorRecorder().run() ChinaStockCashFlowRecorder().run() break except Exception as e: logger.exception('finance runner 0 error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('eastmoney_finance_factor_cash_flow.log') run() sched.start() sched._thread.join()
from zvt.recorders.eastmoney.trading.manager_trading_recorder import ManagerTradingRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=1, minute=00) def run(): while True: try: HolderTradingRecorder().run() ManagerTradingRecorder().run() break except Exception as e: logger.exception('trading runner error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('trading.log') run() sched.start() sched._thread.join()
from zvt.recorders.eastmoney.finance.china_stock_income_statement_recorder import ChinaStockIncomeStatementRecorder from zvt.utils.utils import init_process_log logger = logging.getLogger(__name__) sched = BackgroundScheduler() @sched.scheduled_job('cron', hour=2, minute=00) def run(): while True: try: ChinaStockFinanceFactorRecorder().run() ChinaStockCashFlowRecorder().run() ChinaStockBalanceSheetRecorder().run() ChinaStockIncomeStatementRecorder().run() break except Exception as e: logger.exception('finance runner error:{}'.format(e)) time.sleep(60) if __name__ == '__main__': init_process_log('finance.log') run() sched.start() sched._thread.join()