This commit is contained in:
parent
f3ee76531e
commit
ed63f87796
3 changed files with 11 additions and 8 deletions
|
|
@ -4,6 +4,7 @@ import java.math.BigDecimal;
|
|||
|
||||
public record FinalCalculationResult(
|
||||
BigDecimal price,
|
||||
BigDecimal basePrice,
|
||||
BigDecimal rate,
|
||||
BigDecimal quantityLot,
|
||||
CalculationResult calculationResult
|
||||
|
|
|
|||
|
|
@ -53,13 +53,15 @@ public class OrderCalculationService {
|
|||
|
||||
BigDecimal quantityLot = result.sum3().abs();
|
||||
BigDecimal price;
|
||||
long nextWorkDayDelta = n.longValue();
|
||||
LocalDate searchingValueDate = LocalDate.now();
|
||||
if (SettleCode.T1.equals(settleCode)) {
|
||||
price = swapPriceCalcT1(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue());
|
||||
} else {
|
||||
price = swapPriceCalc(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue());
|
||||
searchingValueDate = searchingValueDate.plusDays(nextWorkDayDelta);
|
||||
}
|
||||
|
||||
return new FinalCalculationResult(price, s, quantityLot, result);
|
||||
int precision = listing.getPrecision().intValue();
|
||||
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), searchingValueDate);
|
||||
price = swapPriceCalc(rates, s, n, precision);
|
||||
return new FinalCalculationResult(price, rates.getValue().setScale(precision, RoundingMode.HALF_UP), s, quantityLot, result);
|
||||
}
|
||||
|
||||
public FinalCalculationResult calcAndEnrichSpot(SettleCode settleCode,
|
||||
|
|
@ -88,7 +90,7 @@ public class OrderCalculationService {
|
|||
price = rates.getValue().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);;
|
||||
}
|
||||
|
||||
return new FinalCalculationResult(price, s, quantityLot, result);
|
||||
return new FinalCalculationResult(price, null, s, quantityLot, result);
|
||||
}
|
||||
|
||||
private CalculationResult calculationSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n) {
|
||||
|
|
@ -153,8 +155,7 @@ public class OrderCalculationService {
|
|||
return new CalculationResult(sum1, sum2, sum3, sum4, sum5, sum6);
|
||||
}
|
||||
|
||||
private BigDecimal swapPriceCalc(String baseCurrency, BigDecimal s, BigDecimal n, int precision) {
|
||||
Rates rate = imdgQueryService.getRate(baseCurrency, LocalDate.now());
|
||||
private BigDecimal swapPriceCalc(Rates rate, BigDecimal s, BigDecimal n, int precision) {
|
||||
BigDecimal p = n.divide(BigDecimal.valueOf(365), MC);
|
||||
log.info("Calculation swap price: {}*{}*{}", rate.getValue(), s, p);
|
||||
return rate.getValue()
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@ public class OrderTemplateBuilder {
|
|||
order.setCreated(Instant.now());
|
||||
|
||||
order.setPrice(finalCalculationResult.price());
|
||||
order.setBasePrice(finalCalculationResult.basePrice());
|
||||
order.setQuantityLot(finalCalculationResult.quantityLot());
|
||||
order.setRate(finalCalculationResult.rate());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue