분석레포트 로직 수정

This commit is contained in:
Macbook
2026-06-08 10:08:39 +09:00
parent e11e1a46fa
commit c20c806c19
22 changed files with 254 additions and 108 deletions
@@ -24,12 +24,20 @@ public class TradingExecutionService {
public void executeSignal(Long userId, String market,
Long strategyId, String side, double price) {
executeSignal(userId, market, strategyId, side, price, null, null, null);
}
public void executeSignal(Long userId, String market,
Long strategyId, String side, double price,
String candleType, String strategyName, String executionType) {
if (!TradingAccess.isRegisteredUser(userId)) return;
GcAppSettings app = appSettingsService.getEntity(userId, null);
TradingMode mode = TradingMode.fromString(app.getTradingMode());
if (mode.usePaper() && Boolean.TRUE.equals(app.getPaperTradingEnabled())) {
paperTradingService.tryExecuteOnSignal(userId, market, strategyId, side, price);
paperTradingService.tryExecuteOnSignal(
userId, market, strategyId, side, price,
candleType, strategyName, executionType);
}
if (mode.useLive()) {
liveTradingService.tryExecuteOnSignal(
@@ -67,9 +67,16 @@ public class OrderExecutionQueue {
public void submitSignal(Long userId, String market,
Long strategyId, String signal, double price) {
submitSignal(userId, market, strategyId, signal, price, null, null, null);
}
public void submitSignal(Long userId, String market,
Long strategyId, String signal, double price,
String candleType, String strategyName, String executionType) {
if (!TradingAccess.isRegisteredUser(userId)) return;
submit(OrderRequest.strategySignal(
TradingAccess.accountDeviceKey(userId), userId, market, strategyId, signal, price));
TradingAccess.accountDeviceKey(userId), userId, market, strategyId, signal, price,
candleType, strategyName, executionType));
}
private void runLoop() {
@@ -97,7 +104,8 @@ public class OrderExecutionQueue {
if (req.kind() == OrderRequest.OrderKind.STRATEGY_SIGNAL) {
tradingExecutionService.executeSignal(
req.userId(), req.market(),
req.strategyId(), req.side(), req.price());
req.strategyId(), req.side(), req.price(),
req.candleType(), req.strategyName(), req.executionType());
} else {
tradingExecutionService.executeRiskExit(req);
}
@@ -11,7 +11,10 @@ public record OrderRequest(
Long strategyId,
String side,
double price,
String reason
String reason,
String candleType,
String strategyName,
String executionType
) {
public enum OrderKind {
STRATEGY_SIGNAL,
@@ -20,20 +23,25 @@ public record OrderRequest(
}
public static OrderRequest strategySignal(String deviceId, Long userId, String market,
Long strategyId, String side, double price) {
Long strategyId, String side, double price,
String candleType, String strategyName,
String executionType) {
return new OrderRequest(OrderKind.STRATEGY_SIGNAL, deviceId, userId, market,
strategyId, side, price, "STRATEGY");
strategyId, side, price, "STRATEGY",
candleType, strategyName, executionType);
}
public static OrderRequest stopLoss(String deviceId, Long userId, String market,
double price, double lossPct) {
return new OrderRequest(OrderKind.STOP_LOSS, deviceId, userId, market,
null, "SELL", price, "STOP_LOSS_" + lossPct + "%");
null, "SELL", price, "STOP_LOSS_" + lossPct + "%",
null, null, null);
}
public static OrderRequest takeProfit(String deviceId, Long userId, String market,
double price, double profitPct) {
return new OrderRequest(OrderKind.TAKE_PROFIT, deviceId, userId, market,
null, "SELL", price, "TAKE_PROFIT_" + profitPct + "%");
null, "SELL", price, "TAKE_PROFIT_" + profitPct + "%",
null, null, null);
}
}