Пример #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);
      }
    }
  }
Пример #2
0
 @Override
 public synchronized void cancelOrder(OpenOrder openOrder) {
   checkConnected();
   socket.cancelOrder(openOrder.getOrderId());
 }