Commit c1900177 authored by wenwen.tang's avatar wenwen.tang 😕

update

parent 1174318f
......@@ -190,7 +190,7 @@ class IndexSync(JDCDataSync):
'pe': x['peRatio'] if 'peRatio' in x else None,
'pb': x['pbRatio'] if 'pbRatio' in x else None,
'volume': x['volume'] if 'volume' in x else None,
} for x in datas if is_workday(dt.fromtimestamp(x['date'] / 1000), tz=pytz.timezone('Asia/Shanghai')) and 'close' in x]
} for x in datas if is_workday(dt.fromtimestamp(x['date'] / 1000, tz=pytz.timezone('Asia/Shanghai'))) and 'close' in x]
if save_datas:
rid.batch_insert(save_datas)
......
# import datetime as dt
# import json
# from multiprocessing import Process
#
# import uvicorn
# from apscheduler.schedulers.blocking import BlockingScheduler
# from fastapi import FastAPI
# from py_jftech import prev_workday, filter_weekend
#
# import main
# from api import DatumType, PortfoliosRisk
# from basic.datum import DefaultDatum
#
# app = FastAPI()
#
# REC_GID = 'E3886FBA-123B-7890-123E-123456BEEED'
#
#
# def get_today_rec():
# from portfolios.dao import robo_mpt_portfolios as rmp
# from api import PortfoliosType, PortfoliosRisk
# day = prev_workday(filter_weekend(dt.date.today()))
# portfolio = rmp.get_one(day, PortfoliosType.NORMAL, PortfoliosRisk.FT3)
# return portfolio
#
#
# def get_last_signal():
# from rebalance.dao import robo_rebalance_signal as rrs
#
# day = prev_workday(filter_weekend(dt.date.today()))
# last_re = rrs.get_last_one(max_date=day, risk=PortfoliosRisk.FT3, effective=True)
# return last_re
#
#
# @app.get("/recommend")
# async def root():
# portfolio = get_today_rec()
# if portfolio:
# fund_infos = DefaultDatum().get_datums(DatumType.FUND)
# id_ticker_map = {str(info['id']): info for info in fund_infos}
# funds = json.loads(portfolio['portfolio'])
# rec_list = []
# portfolios = {'recomm_guid': REC_GID}
# data = {'recomm_guid': REC_GID}
# data['data_date'] = portfolio['date'].strftime('%Y-%m-%d')
# data['funds'] = [{'weight': round(weight * 100), 'fund_id': id_ticker_map[key]['ftTicker']} for key, weight in
# funds.items()]
# data['creat_date'] = portfolio['create_time'].strftime('%Y-%m-%d %H:%M:%S')
# # todo 补全
# data['cp'] = 0.81
# data['rr'] = 0.81
# data['roi'] = 0.81
# data['risk'] = round(sum([id_ticker_map[key]['risk'] * weight for key, weight in funds.items()]), 2)
# note = {}
# sig = get_last_signal()
# note['last_reg_reb'] = sig['date'].strftime('%Y-%m-%d')
# data['note'] = json.dumps(note)
# portfolios['data'] = data
# rec_list.append(portfolios)
# return rec_list
# else:
# return {'msg': '当日投组未产生,待10:00后获取'}
#
#
# def start_robo():
# # 异常情况可以重启跑当天投组
# current_time = dt.datetime.now()
# target_time = dt.time(10, 0)
# if current_time.time() > target_time:
# main.start()
#
# # 开启定时任务,执行实盘
# scheduler = BlockingScheduler()
# scheduler.add_job(main.start, 'cron', day_of_week='0-4', hour=10, minute=00)
# scheduler.start()
#
#
# def start_web():
# uvicorn.run("robo_controller:app", reload=True, port=8080)
#
#
# if __name__ == "__main__":
# # 开启一个进程执行start_robo()
# p1 = Process(target=start_robo)
# p1.start()
#
# # 启动进程2
# p2 = Process(target=start_web)
# p2.start()
import datetime as dt
import json
from multiprocessing import Process
import uvicorn
from apscheduler.schedulers.blocking import BlockingScheduler
from fastapi import FastAPI
from py_jftech import prev_workday, filter_weekend, autowired
import main
from api import DatumType, PortfoliosRisk, Datum
app = FastAPI()
REC_GID = 'E3886FBA-123B-7890-123E-123456BEEED'
def get_today_rec():
from portfolios.dao import robo_mpt_portfolios as rmp
from api import PortfoliosType, PortfoliosRisk
day = prev_workday(filter_weekend(dt.date.today()))
portfolio = rmp.get_one(day, PortfoliosType.NORMAL, PortfoliosRisk.FT3)
return portfolio
def get_last_signal():
from rebalance.dao import robo_rebalance_signal as rrs
day = prev_workday(filter_weekend(dt.date.today()))
last_re = rrs.get_last_one(max_date=day, risk=PortfoliosRisk.FT3, effective=True)
return last_re
@autowired
def get_fund_infos(datum: Datum = None):
return datum.get_datums(DatumType.FUND)
@app.get("/recommend")
async def root():
portfolio = get_today_rec()
if portfolio:
fund_infos = get_fund_infos()
id_ticker_map = {str(info['id']): info for info in fund_infos}
funds = json.loads(portfolio['portfolio'])
rec_list = []
portfolios = {'recomm_guid': REC_GID}
data = {'recomm_guid': REC_GID}
data['data_date'] = portfolio['date'].strftime('%Y-%m-%d')
data['funds'] = [{'weight': round(weight * 100), 'fund_id': id_ticker_map[key]['ftTicker']} for key, weight in
funds.items()]
data['creat_date'] = portfolio['create_time'].strftime('%Y-%m-%d %H:%M:%S')
# todo 补全
data['cp'] = 0.81
data['rr'] = 0.81
data['roi'] = 0.81
data['risk'] = round(sum([id_ticker_map[key]['risk'] * weight for key, weight in funds.items()]), 2)
note = {}
sig = get_last_signal()
note['last_reg_reb'] = sig['date'].strftime('%Y-%m-%d')
data['note'] = json.dumps(note)
portfolios['data'] = data
rec_list.append(portfolios)
return rec_list
else:
return {'msg': '当日投组未产生,待10:00后获取'}
def start_robo():
# 异常情况可以重启跑当天投组
current_time = dt.datetime.now()
target_time = dt.time(10, 0)
if current_time.time() > target_time:
main.start()
# 开启定时任务,执行实盘
scheduler = BlockingScheduler()
scheduler.add_job(main.start, 'cron', day_of_week='0-4', hour=10, minute=00)
scheduler.start()
def start_web():
uvicorn.run("robo_controller:app", reload=True, port=8080)
if __name__ == "__main__":
# 开启一个进程执行start_robo()
p1 = Process(target=start_robo)
p1.start()
# 启动进程2
p2 = Process(target=start_web)
p2.start()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment