package jtrade.trader; public class Commission { double commissionPerShare; double commissionRate; double maxCommissionRate; double minCommissionOrder; double maxCommissionOrder; public Commission(double commissionPerShare, double commissionRate, double maxCommissionRate, double minCommissionOrder, double maxCommissionOrder) { this.commissionPerShare = commissionPerShare; this.commissionRate = commissionRate; this.maxCommissionRate = maxCommissionRate; this.minCommissionOrder = minCommissionOrder; this.maxCommissionOrder = maxCommissionOrder; } public double calculate(int quantity, double price) { double sum = 0.0; if (commissionPerShare > 0.0) { sum += commissionPerShare * quantity; } if (commissionRate > 0.0) { sum += commissionRate * quantity * price; } if (maxCommissionRate > 0.0 && sum / (quantity * price) > maxCommissionRate) { sum = maxCommissionRate * quantity * price; } if (maxCommissionOrder > 0.0 && sum > maxCommissionOrder) { sum = maxCommissionOrder; } if (minCommissionOrder > 0.0 && sum < minCommissionOrder) { sum = minCommissionOrder; } return sum; } public double getCommissionPerShare() { return commissionPerShare; } public double getMinCommissionOrder() { return minCommissionOrder; } public double getCommissionRate() { return commissionRate; } public double getMaxCommissionOrder() { return maxCommissionOrder; } public double getMaxCommissionRate() { return maxCommissionRate; } }