execute = async (logger, rawData) => {
  const data = rawData;
  const { symbol, action, baseAssetBalance, order } = data;

  if (action !== 'manual-trade') {
    logger.info(
      `Do not process a manual order because action is not 'manual-trade'.`
    );
    return data;
  }

  // Assume order is provided with correct value
  const orderParams = await formatOrder(logger, symbol, order);
  slackMessageOrderParams(logger, symbol, order.side, order, {
    orderParams,
    baseAssetBalance
  });

  const orderResult = await binance.client.order(orderParams);

  logger.info({ orderResult }, 'Manual order result');

  await recordOrder(logger, orderResult);

  // FIXME: If you change this comment, please refactor to use common.js:refreshOpenOrdersAndAccountInfo
  // Get open orders and update cache
  data.openOrders = await getAndCacheOpenOrdersForSymbol(logger, symbol);
  data.buy.openOrders = data.openOrders.filter(
    o => o.side.toLowerCase() === 'buy'
  );
  data.sell.openOrders = data.openOrders.filter(
    o => o.side.toLowerCase() === 'sell'
  );
  // Refresh account info
  data.accountInfo = await getAccountInfoFromAPI(logger);

  slackMessageOrderResult(logger, symbol, order.side, order, orderResult);

  return setMessage(logger, data, `Placed new manual order.`);
}
Place a manual order

@param {*} logger
@param {*} rawData