Update: 更新自定义进度条
This commit is contained in:
parent
62254c583f
commit
8f92e999aa
|
@ -1,21 +1,22 @@
|
|||
# -*- coding: UTF-8 -*-
|
||||
import os
|
||||
import sys,os
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import time
|
||||
from trader import Trader
|
||||
from rich.progress import track
|
||||
from rich import print as rprint
|
||||
from rich import pretty, text
|
||||
from rich.table import Column, Table
|
||||
from rich.style import Style
|
||||
from rich.table import Table
|
||||
|
||||
|
||||
class Spread_Backtest():
|
||||
def __init__(self,
|
||||
trader: Trader):
|
||||
def __init__(
|
||||
self,
|
||||
trader: Trader
|
||||
):
|
||||
self.trader = trader
|
||||
|
||||
def run(self,
|
||||
def run(
|
||||
self,
|
||||
start: str,
|
||||
end: str
|
||||
):
|
||||
|
@ -35,14 +36,33 @@ class Spread_Backtest():
|
|||
else:
|
||||
bkt_end = rec_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,
|
||||
description='Backtesting...',
|
||||
update_period=0.5):
|
||||
# for d in track(self.trader.signal[list(self.trader.signal.keys())[0]].loc[bkt_start:bkt_end].index,
|
||||
# description='Backtesting...',
|
||||
# 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最后一天的数据只能用于记录持仓
|
||||
if (d <= rec_end) and (d < self.trader.avaliable_date.index.max()):
|
||||
self.trader.update_signal(d)
|
||||
if (date <= rec_end) and (date < self.trader.avaliable_date.index.max()):
|
||||
self.trader.update_signal(date)
|
||||
else:
|
||||
self.trader.update_signal(d, update_type='position')
|
||||
self.trader.update_signal(date, update_type='position')
|
||||
|
||||
@property
|
||||
def account_history(self):
|
||||
|
|
Loading…
Reference in New Issue