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
98988331
Commit
98988331
authored
Nov 28, 2022
by
jichao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
实盘完成待测试
parent
7e202633
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
9 deletions
+25
-9
robo_executor.py
robo_executor.py
+25
-9
No files found.
robo_executor.py
View file @
98988331
import
sys
import
time
from
datetime
import
datetime
as
dt
from
enum
import
Enum
,
unique
import
pandas
as
pd
from
framework
import
component
,
autowired
,
block_execute
,
get_config
,
get_logger
,
filter_weekend
,
workday_range
,
format_date
,
prev_workday
from
api
import
RoboExecutor
,
AssetRisk
,
Datum
,
AssetPool
,
PortfoliosBuilder
,
PortfoliosRisk
,
PortfoliosHolder
,
PortfoliosType
from
datetime
import
datetime
as
dt
import
time
from
enum
import
Enum
,
unique
from
framework
import
(
component
,
autowired
,
block_execute
,
get_config
,
get_logger
,
filter_weekend
,
workday_range
,
format_date
,
prev_workday
,
parse_date
)
logger
=
get_logger
(
__name__
)
...
...
@@ -64,7 +69,8 @@ class BacktestExector(RoboExecutor):
if
self
.
start_step
.
within
(
BacktestStep
.
EWMA_VALUE
):
logger
.
info
(
"start to build fund ewma value."
.
center
(
50
,
'-'
))
now
=
dt
.
now
()
block_execute
(
self
.
_risk
.
build_risk_date
,
{
x
[
'id'
]:
(
x
[
'id'
],
self
.
end_date
)
for
x
in
self
.
_datum
.
get_fund_datums
(
risk
=
(
3
,
4
,
5
))},
isolate
=
True
,
result
=
False
)
block_execute
(
self
.
_risk
.
build_risk_date
,
{
x
[
'id'
]:
(
x
[
'id'
],
self
.
end_date
)
for
x
in
self
.
_datum
.
get_fund_datums
(
risk
=
(
3
,
4
,
5
))},
isolate
=
True
,
result
=
False
)
logger
.
info
(
f
"build fund ewma value success, use[{(dt.now() - now).seconds}s]"
)
if
self
.
start_step
.
within
(
BacktestStep
.
ASSET_POOL
):
logger
.
info
(
"start to build asset pool"
.
center
(
50
,
'-'
))
...
...
@@ -79,7 +85,9 @@ class BacktestExector(RoboExecutor):
if
self
.
start_step
.
within
(
BacktestStep
.
NORMAL_PORTFOLIO
):
logger
.
info
(
"start to build normal portfolios"
.
center
(
50
,
'-'
))
now
=
dt
.
now
()
block_execute
(
self
.
_builder
.
get_portfolios
,
{
f
'{x.name}_{format_date(j)}'
:
(
j
,
x
)
for
x
in
PortfoliosRisk
for
j
in
workday_range
(
self
.
start_date
,
self
.
end_date
)},
isolate
=
True
,
result
=
False
)
block_execute
(
self
.
_builder
.
get_portfolios
,
{
f
'{x.name}_{format_date(j)}'
:
(
j
,
x
)
for
x
in
PortfoliosRisk
for
j
in
workday_range
(
self
.
start_date
,
self
.
end_date
)},
isolate
=
True
,
result
=
False
)
logger
.
info
(
f
"build normal portfolios success, use[{(dt.now() - now).seconds}s]"
)
if
self
.
start_step
.
within
(
BacktestStep
.
HOLD_PORTFOLIO
):
logger
.
info
(
"start to build hold portfolios"
.
center
(
50
,
'-'
))
...
...
@@ -101,8 +109,17 @@ class RealExecutor(RoboExecutor):
def
start_date
(
self
):
return
pd
.
to_datetime
(
filter_weekend
(
self
.
_config
[
'start-date'
]))
@
property
def
curt_date
(
self
):
if
len
(
sys
.
argv
)
>
1
:
try
:
return
parse_date
(
sys
.
argv
[
1
])
except
Exception
as
e
:
logger
.
warning
(
f
'get curt date from argv failure.'
,
e
)
return
dt
.
combine
(
dt
.
today
()
.
date
(),
dt
.
min
.
time
())
def
start_exec
(
self
):
date
=
dt
.
combine
(
dt
.
today
()
.
date
(),
dt
.
min
.
time
())
date
=
self
.
curt_date
for
risk
in
PortfoliosRisk
:
logger
.
info
(
f
"start to build risk[{risk.name}] real for date[{format_date(date)}]"
.
center
(
50
,
'-'
))
now
=
dt
.
now
()
...
...
@@ -112,4 +129,3 @@ class RealExecutor(RoboExecutor):
if
p_type
is
not
PortfoliosType
.
NORMAL
:
self
.
_builder
.
get_portfolios
(
prev_workday
(
date
),
p_type
)
logger
.
info
(
f
"build risk[{risk.name}] real for date[{format_date(date)}] success, use[{(dt.now() - now).seconds}s]"
)
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