whereIn('status', [InsideTradeBuy::status_wait, InsideTradeBuy::status_trading]) ->where('created_at', '<', Carbon::now()->subSeconds($deal_time)->toDateTimeString()) ->cursor(); foreach ($buy_orders as $order) { $deal_robot = InsideTradeDealRobot::query()->where('status', 1)->where('symbol', $order['symbol'])->first(); if (!blank($deal_robot)) { $flag = false; if ($order['type'] == 1 || $order['type'] == 3) { // 获取最新一条成交记录 即实时最新价格 $key = 'market:' . strtolower(str_before($deal_robot['symbol'], '/') . str_after($deal_robot['symbol'], '/')) . '_newPrice'; $realtime_price = Cache::store('redis')->get($key)['price']; $min = $realtime_price - ($deal_robot->bid_minus_unit * $deal_robot->bid_minus_count); $max = $realtime_price + ($deal_robot->bid_plus_unit * $deal_robot->bid_plus_count); if ($min <= $order['entrust_price'] && $order['entrust_price'] <= $max) $flag = true; } else { $flag = true; } try { if ($flag) { (new InsideTradeService())->handleBuyOrder($order); } } catch (\Exception $e) { info($e); continue; } } } $sell_orders = InsideTradeSell::query() ->whereIn('status', [InsideTradeSell::status_wait, InsideTradeSell::status_trading]) ->where('created_at', '<', Carbon::now()->subSeconds($deal_time)->toDateTimeString()) ->cursor(); foreach ($sell_orders as $order) { $deal_robot = InsideTradeDealRobot::query()->where('status', 1)->where('symbol', $order['symbol'])->first(); if (!blank($deal_robot)) { $flag = false; if ($order['type'] == 1 || $order['type'] == 3) { // 获取最新一条成交记录 即实时最新价格 $key = 'market:' . strtolower(str_before($deal_robot['symbol'], '/') . str_after($deal_robot['symbol'], '/')) . '_newPrice'; $realtime_price = Cache::store('redis')->get($key)['price']; $min = $realtime_price - ($deal_robot->ask_minus_unit * $deal_robot->ask_minus_count); $max = $realtime_price + ($deal_robot->ask_plus_unit * $deal_robot->ask_plus_count); if ($min <= $order['entrust_price'] && $order['entrust_price'] <= $max) $flag = true; } else { $flag = true; } try { if ($flag) { (new InsideTradeService())->handleSellOrder($order); } } catch (\Exception $e) { info($e); continue; } } } } }