/** Composes and submits the appropriate order for the given timeslot. */ private void submitOrder(double neededKWh, int timeslot) { double neededMWh = neededKWh / 1000.0; MarketPosition posn = broker.getBroker().findMarketPositionByTimeslot(timeslot); if (posn != null) neededMWh -= posn.getOverallBalance(); if (Math.abs(neededMWh) <= minMWh) { log.info("no power required in timeslot " + timeslot); return; } Double limitPrice = computeLimitPrice(timeslot, neededMWh); log.info("new order for " + neededMWh + " at " + limitPrice + " in timeslot " + timeslot); Order order = new Order(broker.getBroker(), timeslot, neededMWh, limitPrice); lastOrder.put(timeslot, order); broker.sendMessage(order); }
/** Receives a MarketPosition message, representing our commitments on the wholesale market */ public synchronized void handleMessage(MarketPosition posn) { broker.getBroker().addMarketPosition(posn, posn.getTimeslotIndex()); }