From e2c5729f87186a968cd21c846d67cd66dfcb4547 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Thu, 16 Oct 2025 17:58:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=90=AD=E5=BB=BA=E5=9B=9E=E6=B5=8B?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../leopard/core/strategy/TradeEngine.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 leopard-core/src/main/java/com/lanyuanxiaoyao/leopard/core/strategy/TradeEngine.java 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 + ) { + } +}