This commit is contained in:
parent
fd01d2ce3b
commit
8f4f1a1a9a
1 changed files with 10 additions and 1 deletions
|
|
@ -4,6 +4,8 @@ import java.math.BigDecimal;
|
|||
import java.math.MathContext;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
|
|
@ -17,6 +19,7 @@ import ru.spcex.platform.enumeration.SettleCode;
|
|||
|
||||
@Service
|
||||
public class OrderCalculationService {
|
||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private static final MathContext MC = new MathContext(20, RoundingMode.HALF_UP);
|
||||
|
||||
private final ImdgQueryService imdgQueryService;
|
||||
|
|
@ -106,6 +109,9 @@ public class OrderCalculationService {
|
|||
private CalculationResult calculationRubSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n) {
|
||||
BigDecimal planPosition = registry.getBalance();
|
||||
Rates cnyRate = imdgQueryService.getRate(registry.getSecuritySymbol(), LocalDate.now());
|
||||
if (cnyRate == null) {
|
||||
throw new IllegalStateException(String.format("Not fond rate by security symbol: %s", registry.getSecuritySymbol()));
|
||||
}
|
||||
BigDecimal rateValue = cnyRate.getValue();
|
||||
|
||||
BigDecimal sum1 = planPosition.divide(rateValue, MC);
|
||||
|
|
@ -130,10 +136,13 @@ public class OrderCalculationService {
|
|||
|
||||
private BigDecimal swapPriceCalc(String baseCurrency, BigDecimal s, BigDecimal n) {
|
||||
Rates rate = imdgQueryService.getRate(baseCurrency, LocalDate.now());
|
||||
BigDecimal p = BigDecimal.ONE.divide(n, MC);
|
||||
log.info("Calculation swap price: {}*{}*{}", s, n, p);
|
||||
return rate.getValue()
|
||||
.multiply(s, MC)
|
||||
.multiply(n, MC)
|
||||
.divide(BigDecimal.valueOf(365), MC);
|
||||
.multiply(p, MC)
|
||||
.setScale(8, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
||||
private boolean isRub(Registry registry) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue