package trading import ( "context" "sig-pub/internal/trading/backtest" "sig-pub/pkg/data" "sig-pub/pkg/data/entity" "sig-pub/pkg/storage/ck" "sig-pub/pkg/storage/persist" ) type TradingDataPersist struct { db *persist.RDB ckDB *ck.ClickhouseDB ckBatchWriter *ck.ClickhouseBatchWriter } func NewTradingDataPersist(db *persist.RDB, ckDB *ck.ClickhouseDB, ckBatchWriter *ck.ClickhouseBatchWriter) *TradingDataPersist { return &TradingDataPersist{ db: db, ckDB: ckDB, ckBatchWriter: ckBatchWriter, } } func (p *TradingDataPersist) Init() (err error) { err = p.ckDB.AutoMigrateTables( &backtest.BacktestTradingPlan{}, &backtest.Trade{}, ) return } func (p *TradingDataPersist) GetTradePlanById(planId int64) (plan *entity.TradePlan, err error) { plan = new(entity.TradePlan) err = p.db.Select(plan, `select * from t_trade_plan where id = ?`, planId) if err != nil { return } if plan.InstId == "" { err = data.ErrorNotExists return } return } // SaveBacktestTradingPlan 保存交易计划回测结果 func (p *TradingDataPersist) SaveBacktestTradingPlan(ctx context.Context, backtestTradingPlan *backtest.BacktestTradingPlan) (err error) { err = ck.InsertBatch(p.ckBatchWriter, ctx, []*backtest.BacktestTradingPlan{backtestTradingPlan}) if err != nil { return } err = ck.InsertBatch(p.ckBatchWriter, ctx, backtestTradingPlan.Trades) return }