value method
Implementation
@override
MatexPositionSizeResult value() {
if (result != null) {
return result!;
}
if (isValid) {
final accountSize = state.accountSize;
final stopLossPips = computeStopLossPip(state.pipPrecision!);
final amountAtRisk = computeAmountAtRisk();
final riskRatio = computeRiskRatio(amountAtRisk, accountSize);
final pipValue = computePipValue();
final size = pipValue > Decimal.zero && stopLossPips > 0
? computePositionSize(amountAtRisk, pipValue.toDouble(), stopLossPips)
: 0.0;
return (result = MatexPositionSizeResult(
amountAtRisk: amountAtRisk,
pipValue: (pipValue * toDecimal(size)).toDouble(),
positionSize: size,
riskRatio: riskRatio,
stopLossPips: stopLossPips,
));
}
return (result = kDefaultPositionSizeResult.clone());
}