Example #1
0
  private void closeOpenOrder(OpenOrder openOrder, double commissionAmount) {
    openOrdersById.remove(openOrder.getOrderId());
    if (Double.isNaN(commissionAmount) || commissionAmount <= 0.0) {
      commissionAmount =
          commission.calculate(openOrder.getQuantityFilled(), openOrder.getAvgFillPrice());
    }
    openOrder.setCommission(commissionAmount);
    logger.info("{} {}", openOrder.isFilled() ? "Filled" : "Partially filled", openOrder);

    Position position = portfolio.getPosition(openOrder.getSymbol());
    double[] values =
        position.update(
            openOrder.getFillDate(),
            openOrder.getQuantityFilled(),
            openOrder.getAvgFillPrice(),
            openOrder.getCommission());

    logTrade(openOrder, position.getQuantity(), values[0], values[1], values[2]);

    for (OrderListener listener : orderListeners) {
      try {
        listener.onOrderFilled(openOrder, position);
      } catch (Throwable t) {
        logger.error(t.getMessage(), t);
      }
    }
  }
Example #2
0
 protected void logTrade(
     OpenOrder openOrder, int position, double costBasis, double realized, double unrealized) {
   Object[] params =
       new Object[] {
         openOrder.getFillDate(),
         "TRADE",
         openOrder.getAction(),
         openOrder.getType(),
         openOrder.getQuantityFilled(),
         openOrder.getSymbol(),
         openOrder.getSymbol().getCurrency(),
         openOrder.getAvgFillPrice(),
         position,
         Util.round(costBasis, 4),
         Util.round(realized, 4),
         Util.round(unrealized, 4),
         Util.round(openOrder.getCommission(), 4),
         openOrder.getReference() != null ? openOrder.getReference() : "",
         accountCode
       };
   blotter.info(
       MarkerFactory.getMarker("TRADE"), "{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}", params);
 }