async def follow_strategy(pilot_name: str, passenger: AutoPilotTask, etrade: AsyncEtrade, quote: dict): last = get_last(quote) bid = get_bid(quote) ask = get_ask(quote) if bid < passenger.loss_price or ask > passenger.profit_price or last < passenger.pullback_price: if bid < passenger.loss_price: logger.info( "%s %s bid reached the loss price, placing sell order at %s", PREFIX, pilot_name, ask) elif ask > passenger.profit_price: logger.info( "%s %s ask reached the profit price, placing sell order at %s", PREFIX, pilot_name, ask) else: logger.info( "%s %s last price reached the pullback price, placing sell order at %s", PREFIX, pilot_name, ask) order_id = await place_sell_order(passenger, ask, etrade) passenger.state = AutoPilotTask.SELLING passenger.tracking_order_id = order_id
async def commit_sell(passenger: AutoPilotTask, sell_price: Decimal, etrade: AsyncEtrade): order_id = await place_sell_order(passenger, sell_price, etrade) passenger.state = AutoPilotTask.SELLING passenger.tracking_order_id = order_id