static double calculateMaxProfit(double values[]) { double max = Double.MIN_VALUE, maxDiff = Double.MIN_VALUE, diff = 0; double bottom = values[0];
for(int i = 1; i < values.length ; i++) { diff += values[i] - values[i - 1];
if (diff > maxDiff) { maxDiff = diff; max = values[i]; }
if (values[i] < bottom) { bottom = values[i]; diff = 0; } } System.out.println("Maximum Profit: " + maxDiff + " Buy: " + (max - maxDiff) + " Sell: " + max); return maxDiff; }
static double calculateMaxLoss(double values[]) { double min = Double.MAX_VALUE, maxLoss = Double.MAX_VALUE, diff = 0; double peak = values[0];
for(int i = 1; i < values.length ; i++) { diff += values[i] - values[i - 1];
if (diff < maxLoss) { maxLoss = diff; min = values[i]; }
if (values[i] > peak) { peak = values[i]; diff = 0; } } System.out.println("Maximum Loss: " + maxLoss + " Buy: " + (min - maxLoss) + " Sell: " + min); return maxLoss; } |
Algorithms >