Rewrite trader service for V4 P0

This commit is contained in:
Codex
2026-06-26 21:53:22 +08:00
parent 2fe4077164
commit 5d210053d0
184 changed files with 2780 additions and 6945 deletions
@@ -0,0 +1,44 @@
package com.quantai.trader.domain;
import com.quantai.trader.enums.PositionSide;
import com.quantai.trader.enums.TraderActionType;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class TraderActionFactory {
public TraderAction create(TraderPositionManagerDecision pmDecision, TraderRiskDecision riskDecision, String symbol) {
TraderActionType finalAction = riskDecision.finalAction();
PositionSide side = sideFor(finalAction, pmDecision.side());
return new TraderAction(
"action_" + pmDecision.cycleId(),
pmDecision.runId(),
pmDecision.cycleId(),
pmDecision.modelOutputId(),
pmDecision.pmDecisionId(),
riskDecision.riskDecisionId(),
finalAction,
symbol,
side,
finalAction.increasesExposure() ? pmDecision.pricePlanId() : null,
finalAction.increasesExposure() ? pmDecision.pricePlanConfigHash() : null,
finalAction == TraderActionType.OPEN_LONG || finalAction == TraderActionType.OPEN_SHORT ? pmDecision.targetPositionRatio() : pmDecision.addRatio(),
null,
pmDecision.stopPrice(),
pmDecision.targetPrice(),
finalAction.reducesExposure(),
"idem_" + pmDecision.runId() + "_" + pmDecision.cycleId() + "_" + finalAction,
riskDecision.allowAction() ? pmDecision.reason() : riskDecision.blocker(),
Map.of("riskAllowed", riskDecision.allowAction()));
}
private PositionSide sideFor(TraderActionType action, PositionSide pmSide) {
return switch (action) {
case OPEN_LONG, ADD_LONG, REDUCE_LONG, CLOSE_LONG -> PositionSide.LONG;
case OPEN_SHORT, ADD_SHORT, REDUCE_SHORT, CLOSE_SHORT -> PositionSide.SHORT;
case WAIT, CANCEL -> PositionSide.NONE;
case HOLD, MOVE_STOP -> pmSide;
};
}
}