package repository import ( "fmt" "sig-pub/pkg/data" "sig-pub/pkg/storage/persist" "sig-pub/pkg/trade" ) type BacktestRepository struct { db *persist.DB } func NewBacktestRepository(db *persist.DB) *BacktestRepository { return &BacktestRepository{ db: db, } } // ListBacktestLogs 用户交易计划回测记录查询 func (p *BacktestRepository) ListBacktestLogs(userId int64, page data.Page) (backtestLogs []*trade.BacktestTradingPlan, err error) { err = p.db.Select(&backtestLogs, ` select * from t_backtest_trading_plan where user_id = ? order by id desc offset ? limit ? `, userId, page.Offset, page.Limit) return } // BacktestLogTrades 交易计划回测交易单详情 func (p *BacktestRepository) BacktestLogTrades(userId, backtestId int64, page data.Page) (total int, tradeOrders []*trade.TradeOrder, err error) { sqlFrom := ` from t_backtest_trading_order where backtest_id = (select id from t_backtest_trading_plan where id = ? and user_id = ?) ` err = p.db.Select(&total, fmt.Sprintf(` select count(*) %s `, sqlFrom), backtestId, userId) if err != nil || total == 0 { return } err = p.db.Select(&tradeOrders, fmt.Sprintf(` select * %s order by trade_id asc offset ? limit ? `, sqlFrom), backtestId, userId, page.Offset, page.Limit) return } // BacktestLogStats 交易计划回测结果统计信息 func (p *BacktestRepository) BacktestLogStats(userId, backtestId int64) (stats *trade.BacktestTradingPlan, err error) { stats = &trade.BacktestTradingPlan{} err = p.db.Select(stats, ` select * from t_backtest_trading_plan_stats where backtest_id = (select id from t_backtest_trading_plan where id = ? and user_id = ?) `, backtestId, userId) return }