etreschenkov 2026-05-12 18:12:12 +03:00
parent f8c8f92401
commit 5660cd67b7

View file

@ -69,16 +69,17 @@ public class OrderCalculationService {
? calculationRubSums(registry, listing.getLotSize().intValue(), s, n) ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n)
: calculationSums(registry, listing.getLotSize().intValue(), s, n); : calculationSums(registry, listing.getLotSize().intValue(), s, n);
SCrossRate rates = imdgQueryService.getSCrossRates(pair.getBaseCurrency(), LocalDate.now()); long nextWorkDayDelta = n.longValue();
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), LocalDate.now().plusDays(nextWorkDayDelta));
BigDecimal quantityLot; BigDecimal quantityLot;
BigDecimal price; BigDecimal price;
if (SettleCode.T0 == settleCode) { if (SettleCode.T0 == settleCode) {
quantityLot = result.sum3().abs(); quantityLot = result.sum3().abs();
price = rates.getUnitRate().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP); price = rates.getValue().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);
} else { } else {
quantityLot = result.sum5().abs(); quantityLot = result.sum5().abs();
BigDecimal delta = swapPriceCalcT1(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue()); BigDecimal delta = swapPriceCalcT1(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue());
price = rates.getUnitRate().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);; price = rates.getValue().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);;
} }
return new FinalCalculationResult(price, s, quantityLot, result); return new FinalCalculationResult(price, s, quantityLot, result);