You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
1.4 KiB

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
}