rationalPipValue method

Rational rationalPipValue(
  1. MatexBaseCoreState state
)

Implementation

Rational rationalPipValue(MatexBaseCoreState state) {
  final counterAccountCurrencyPairExchangeRate =
      state.counterAccountCurrencyPairExchangeRate;
  final baseListedSecond = state.baseListedSecond!;
  final pipPrecision = state.pipPrecision!;
  final positionSize = state.positionSize;
  final tradingPairExchangeRate = state.tradingPairExchangeRate;
  final decimalMultiplicator = pow(10, pipPrecision);
  final decimalPip = Decimal.one / toDecimal(decimalMultiplicator);
  final pipValue = toDecimal(positionSize).toRational() * decimalPip;

  if (baseListedSecond) {
    return pipValue;
  } else if (counterAccountCurrencyPairExchangeRate == 0) {
    return (pipValue / toDecimal(tradingPairExchangeRate).toRational());
  }

  return pipValue *
      toDecimal(counterAccountCurrencyPairExchangeRate!).toRational();
}