Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
R
robo-dividend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenwen.tang
robo-dividend
Commits
10dcaa4c
Commit
10dcaa4c
authored
Aug 10, 2023
by
wenwen.tang
😕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
定时任务
parent
9d4c3c33
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
68 additions
and
13 deletions
+68
-13
main.py
main.py
+1
-0
robo_mpt_portfolios.py
portfolios/dao/robo_mpt_portfolios.py
+1
-0
requirements.txt
requirements.txt
+1
-0
robo_executor.py
robo_executor.py
+3
-1
robo_controller.py
web/robo_controller.py
+62
-12
No files found.
main.py
View file @
10dcaa4c
...
@@ -5,6 +5,7 @@ from api import RoboExecutor
...
@@ -5,6 +5,7 @@ from api import RoboExecutor
@
autowired
(
names
=
{
'executor'
:
RoboExecutor
.
use_name
()})
@
autowired
(
names
=
{
'executor'
:
RoboExecutor
.
use_name
()})
def
start
(
executor
:
RoboExecutor
=
None
):
def
start
(
executor
:
RoboExecutor
=
None
):
print
(
'开始'
)
executor
.
start_exec
()
executor
.
start_exec
()
...
...
portfolios/dao/robo_mpt_portfolios.py
View file @
10dcaa4c
...
@@ -10,6 +10,7 @@ __COLUMNS__ = {
...
@@ -10,6 +10,7 @@ __COLUMNS__ = {
'rmp_rolve'
:
'solve'
,
'rmp_rolve'
:
'solve'
,
'rmp_portfolio'
:
'portfolio'
,
'rmp_portfolio'
:
'portfolio'
,
'rmp_cvar'
:
'cvar'
,
'rmp_cvar'
:
'cvar'
,
'rmp_create_time'
:
'create_time'
}
}
...
...
requirements.txt
View file @
10dcaa4c
...
@@ -22,3 +22,4 @@ six==1.16.0
...
@@ -22,3 +22,4 @@ six==1.16.0
urllib3
==1.26.12
urllib3
==1.26.12
fastapi
==0.100.0
fastapi
==0.100.0
uvicorn
==0.23.1
uvicorn
==0.23.1
apscheduler
==3.10.1
robo_executor.py
View file @
10dcaa4c
...
@@ -134,7 +134,9 @@ class BacktestExecutor(RoboExecutor):
...
@@ -134,7 +134,9 @@ class BacktestExecutor(RoboExecutor):
class
RealExecutor
(
RoboExecutor
):
class
RealExecutor
(
RoboExecutor
):
@
autowired
(
names
=
{
'daily_export'
:
'daily-real-export'
,
'monitor_export'
:
'daily-monitor-export'
,
@
autowired
(
names
=
{
'daily_export'
:
'daily-real-export'
,
'monitor_export'
:
'daily-monitor-export'
,
'syncs'
:
'tw-navs-sync'
})
# todo 上线用tw api
# 'syncs': 'tw-navs-sync'})
'syncs'
:
'navs-sync'
})
def
__init__
(
self
,
builder
:
PortfoliosBuilder
=
None
,
hold
:
PortfoliosHolder
=
None
,
syncs
:
List
[
DataSync
]
=
None
,
def
__init__
(
self
,
builder
:
PortfoliosBuilder
=
None
,
hold
:
PortfoliosHolder
=
None
,
syncs
:
List
[
DataSync
]
=
None
,
daily_export
:
RoboExportor
=
None
,
monitor_export
:
RoboExportor
=
None
,
pool
:
AssetPool
=
None
,
daily_export
:
RoboExportor
=
None
,
monitor_export
:
RoboExportor
=
None
,
pool
:
AssetPool
=
None
,
signal
:
RebalanceSignal
=
None
):
signal
:
RebalanceSignal
=
None
):
...
...
web/robo_controller.py
View file @
10dcaa4c
import
json
from
datetime
import
date
as
dt
,
datetime
from
multiprocessing
import
Process
import
uvicorn
import
uvicorn
from
apscheduler.schedulers.blocking
import
BlockingScheduler
from
fastapi
import
FastAPI
from
fastapi
import
FastAPI
from
py_jftech
import
prev_workday
,
filter_weekend
import
main
from
api
import
DatumType
from
basic.datum
import
DefaultDatum
app
=
FastAPI
()
app
=
FastAPI
()
REC_GID
=
'E3886FBA-123B-7890-123E-123456BEEED'
REC_GID
=
'E3886FBA-123B-7890-123E-123456BEEED'
def
getTodayRec
():
from
portfolios.dao
import
robo_mpt_portfolios
as
rmp
from
api
import
PortfoliosType
,
PortfoliosRisk
day
=
prev_workday
(
filter_weekend
(
dt
.
today
()))
portfolio
=
rmp
.
get_one
(
day
,
PortfoliosType
.
NORMAL
,
PortfoliosRisk
.
FT3
)
return
portfolio
@
app
.
get
(
"/recommend"
)
@
app
.
get
(
"/recommend"
)
async
def
root
():
async
def
root
():
rec_list
=
[]
portfolio
=
getTodayRec
()
portfolios
=
{
'recomm_guid'
:
REC_GID
}
if
portfolio
:
data
=
{
'recomm_guid'
:
REC_GID
}
fund_infos
=
DefaultDatum
()
.
get_datums
(
DatumType
.
FUND
)
data
[
'data_date'
]
=
'2019-09-20'
id_ticker_map
=
{
str
(
info
[
'id'
]):
info
for
info
in
fund_infos
}
data
[
'funds'
]
=
[
funds
=
json
.
loads
(
portfolio
[
'portfolio'
])
{
'weight'
:
'5'
,
'fund_id'
:
'0152'
}
rec_list
=
[]
]
portfolios
=
{
'recomm_guid'
:
REC_GID
}
portfolios
[
'data'
]
=
data
data
=
{
'recomm_guid'
:
REC_GID
}
rec_list
.
append
(
portfolios
)
data
[
'data_date'
]
=
portfolio
[
'date'
]
.
strftime
(
'
%
Y-
%
m-
%
d'
)
return
rec_list
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
)
data
[
'note'
]
=
'{}'
portfolios
[
'data'
]
=
data
rec_list
.
append
(
portfolios
)
return
rec_list
else
:
return
{
'msg'
:
'当日投组未产生,待10:30后获取'
}
if
__name__
==
"__main__"
:
def
start_robo
():
# 异常情况可以重启跑当天投组
current_time
=
datetime
.
datetime
.
now
()
target_time
=
datetime
.
time
(
10
,
15
)
if
current_time
.
time
()
>
target_time
:
main
.
start
()
# 开启定时任务,执行实盘
# 开启定时任务,执行实盘
uvicorn
.
run
(
"robo_controller:app"
,
reload
=
True
,
port
=
8080
)
scheduler
=
BlockingScheduler
()
scheduler
.
add_job
(
main
.
start
,
'cron'
,
day_of_week
=
'0-4'
,
hour
=
10
,
minute
=
15
)
scheduler
.
start
()
if
__name__
==
"__main__"
:
# 开启一个进程执行start_robo()
p1
=
Process
(
target
=
start_robo
)
p1
.
start
()
# 启动进程2
p2
=
Process
(
target
=
uvicorn
.
run
,
args
=
(
"robo_controller:app"
,),
kwargs
=
{
'port'
:
8080
})
p2
.
start
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment