Track replay position state across cycles
This commit is contained in:
@@ -4,6 +4,7 @@ import com.quantai.trader.enums.PositionSide;
|
||||
import com.quantai.trader.enums.TraderActionType;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@@ -23,7 +24,7 @@ public class TraderActionFactory {
|
||||
side,
|
||||
finalAction.increasesExposure() ? pmDecision.pricePlanId() : null,
|
||||
finalAction.increasesExposure() ? pmDecision.pricePlanConfigHash() : null,
|
||||
finalAction == TraderActionType.OPEN_LONG || finalAction == TraderActionType.OPEN_SHORT ? pmDecision.targetPositionRatio() : pmDecision.addRatio(),
|
||||
ratioFor(finalAction, pmDecision),
|
||||
null,
|
||||
pmDecision.stopPrice(),
|
||||
pmDecision.targetPrice(),
|
||||
@@ -33,6 +34,15 @@ public class TraderActionFactory {
|
||||
Map.of("riskAllowed", riskDecision.allowAction()));
|
||||
}
|
||||
|
||||
private BigDecimal ratioFor(TraderActionType action, TraderPositionManagerDecision pmDecision) {
|
||||
return switch (action) {
|
||||
case OPEN_LONG, OPEN_SHORT -> pmDecision.targetPositionRatio();
|
||||
case ADD_LONG, ADD_SHORT -> pmDecision.addRatio();
|
||||
case REDUCE_LONG, REDUCE_SHORT -> pmDecision.reduceRatio();
|
||||
case WAIT, HOLD, CLOSE_LONG, CLOSE_SHORT, MOVE_STOP, CANCEL -> null;
|
||||
};
|
||||
}
|
||||
|
||||
private PositionSide sideFor(TraderActionType action, PositionSide pmSide) {
|
||||
return switch (action) {
|
||||
case OPEN_LONG, ADD_LONG, REDUCE_LONG, CLOSE_LONG -> PositionSide.LONG;
|
||||
|
||||
Reference in New Issue
Block a user