Update: 更新自定义进度条
This commit is contained in:
parent
62254c583f
commit
8f92e999aa
|
@ -1,21 +1,22 @@
|
||||||
# -*- coding: UTF-8 -*-
|
# -*- coding: UTF-8 -*-
|
||||||
import os
|
import sys,os
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import time
|
||||||
from trader import Trader
|
from trader import Trader
|
||||||
from rich.progress import track
|
|
||||||
from rich import print as rprint
|
from rich import print as rprint
|
||||||
from rich import pretty, text
|
from rich.table import Table
|
||||||
from rich.table import Column, Table
|
|
||||||
from rich.style import Style
|
|
||||||
|
|
||||||
|
|
||||||
class Spread_Backtest():
|
class Spread_Backtest():
|
||||||
def __init__(self,
|
def __init__(
|
||||||
trader: Trader):
|
self,
|
||||||
|
trader: Trader
|
||||||
|
):
|
||||||
self.trader = trader
|
self.trader = trader
|
||||||
|
|
||||||
def run(self,
|
def run(
|
||||||
|
self,
|
||||||
start: str,
|
start: str,
|
||||||
end: str
|
end: str
|
||||||
):
|
):
|
||||||
|
@ -35,14 +36,33 @@ class Spread_Backtest():
|
||||||
else:
|
else:
|
||||||
bkt_end = rec_end
|
bkt_end = rec_end
|
||||||
print(f'回测区间: {bkt_start} - {bkt_end}')
|
print(f'回测区间: {bkt_start} - {bkt_end}')
|
||||||
for d in track(self.trader.signal[list(self.trader.signal.keys())[0]].loc[bkt_start:bkt_end].index,
|
# for d in track(self.trader.signal[list(self.trader.signal.keys())[0]].loc[bkt_start:bkt_end].index,
|
||||||
description='Backtesting...',
|
# description='Backtesting...',
|
||||||
update_period=0.5):
|
# update_period=0.5):
|
||||||
|
# # avaliable_date最后一天的数据只能用于记录持仓
|
||||||
|
# if (d <= rec_end) and (d < self.trader.avaliable_date.index.max()):
|
||||||
|
# self.trader.update_signal(d)
|
||||||
|
# else:
|
||||||
|
# self.trader.update_signal(d, update_type='position')
|
||||||
|
start_time = time.time()
|
||||||
|
target_list = self.trader.signal[list(self.trader.signal.keys())[0]].loc[bkt_start:bkt_end].index
|
||||||
|
for idx,date in enumerate(sorted(target_list), start=1):
|
||||||
|
sys.stdout.flush()
|
||||||
|
if idx > 1:
|
||||||
|
used_time = time.time()-start_time
|
||||||
|
need_time = int((used_time / idx) * (len(target_list) - idx))
|
||||||
|
used_time = int(used_time)
|
||||||
|
print("\r", end="")
|
||||||
|
print("回测进度: {:>3d}% [{} -> {}] 用时: {:0>2d}: {:0>2d} / 需要: {:0>2d}: {:0>2d}".format(
|
||||||
|
idx*100//len(target_list), date, bkt_end,
|
||||||
|
used_time//60, used_time%60,
|
||||||
|
need_time//60, need_time%60
|
||||||
|
), end="")
|
||||||
# avaliable_date最后一天的数据只能用于记录持仓
|
# avaliable_date最后一天的数据只能用于记录持仓
|
||||||
if (d <= rec_end) and (d < self.trader.avaliable_date.index.max()):
|
if (date <= rec_end) and (date < self.trader.avaliable_date.index.max()):
|
||||||
self.trader.update_signal(d)
|
self.trader.update_signal(date)
|
||||||
else:
|
else:
|
||||||
self.trader.update_signal(d, update_type='position')
|
self.trader.update_signal(date, update_type='position')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def account_history(self):
|
def account_history(self):
|
||||||
|
|
Loading…
Reference in New Issue