diff --git a/leopard-core/src/main/java/com/lanyuanxiaoyao/leopard/core/strategy/TradeEngine.java b/leopard-core/src/main/java/com/lanyuanxiaoyao/leopard/core/strategy/TradeEngine.java new file mode 100644 index 0000000..b3531af --- /dev/null +++ b/leopard-core/src/main/java/com/lanyuanxiaoyao/leopard/core/strategy/TradeEngine.java @@ -0,0 +1,49 @@ +package com.lanyuanxiaoyao.leopard.core.strategy; + +import com.lanyuanxiaoyao.leopard.core.entity.Daily; +import com.lanyuanxiaoyao.leopard.core.repository.DailyRepository; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * 交易策略 + * + * @author lanyuanxiaoyao + * @version 20251016 + */ +@Slf4j +@Service +public class TradeEngine { + private final DailyRepository dailyRepository; + + public TradeEngine(DailyRepository dailyRepository) { + this.dailyRepository = dailyRepository; + } + + public void backtest(List stocks, TradeStrategy strategy) { + } + + public interface TradeStrategy { + List trade(LocalDate now, Asset asset, Map> dailies); + } + + public record Asset( + Double cash, + Map stocks + ) { + public Asset() { + this(0.0, new HashMap<>()); + } + } + + public record Trade( + Long stockId, + // 用正负数表达买卖 + Integer volume + ) { + } +}