20
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								main.py
									
									
									
									
									
								
							@@ -368,18 +368,23 @@ class MexcSpotTrade:
 | 
			
		||||
        order_type = order_type.upper()
 | 
			
		||||
        processed_kwargs = kwargs.copy()
 | 
			
		||||
 | 
			
		||||
        # 记录未经过偏移的价格,以供LIMIT订单只有quoteOrderQty没有quantity的情况使用:
 | 
			
		||||
        # 参数有price时直接使用,否则就为实时价格
 | 
			
		||||
        clean_price = processed_kwargs.get("price")
 | 
			
		||||
 | 
			
		||||
        # 处理无price的情况,获取实时价格
 | 
			
		||||
        if order_type in ["LIMIT", "LIMIT_MAKER"] and "price" not in processed_kwargs:
 | 
			
		||||
            current_price = self.market.get_price(symbol)
 | 
			
		||||
            if current_price is None:
 | 
			
		||||
                logger.error("无法获取实时价格,交易取消")
 | 
			
		||||
                return None
 | 
			
		||||
            clean_price = current_price
 | 
			
		||||
            # 防止挂单不成交
 | 
			
		||||
            if side == "BUY":
 | 
			
		||||
                processed_kwargs["price"] = current_price * 1.01  # 买入加价0.5%
 | 
			
		||||
                processed_kwargs["price"] = current_price * 1.01  # 买入加价1%
 | 
			
		||||
            elif side == "SELL":
 | 
			
		||||
                processed_kwargs["price"] = current_price * 0.91  # 卖出减价0.5%
 | 
			
		||||
            logger.info("使用调整0.5%%后价格作为限价: %f", processed_kwargs["price"])
 | 
			
		||||
                processed_kwargs["price"] = current_price * 0.99  # 卖出减价1%
 | 
			
		||||
            logger.info("使用调整1%%后价格作为限价: %f", processed_kwargs["price"])
 | 
			
		||||
 | 
			
		||||
        # 处理LIMIT订单只有quoteOrderQty没有quantity的情况
 | 
			
		||||
        if (
 | 
			
		||||
@@ -390,12 +395,7 @@ class MexcSpotTrade:
 | 
			
		||||
            try:
 | 
			
		||||
                exchange_info = self.market.get_exchange_info(symbol)
 | 
			
		||||
                quote_amount = float(processed_kwargs["quoteOrderQty"])
 | 
			
		||||
                price = (
 | 
			
		||||
                    float(current_price)
 | 
			
		||||
                    if not current_price is None
 | 
			
		||||
                    else float(processed_kwargs["price"])
 | 
			
		||||
                )
 | 
			
		||||
                quantity = quote_amount / price
 | 
			
		||||
                quantity = quote_amount / clean_price
 | 
			
		||||
                base_asset_precision = int(
 | 
			
		||||
                    exchange_info["symbols"][0]["baseAssetPrecision"]
 | 
			
		||||
                )
 | 
			
		||||
@@ -403,7 +403,7 @@ class MexcSpotTrade:
 | 
			
		||||
                    exchange_info["symbols"][0]["quoteAmountPrecision"]
 | 
			
		||||
                )
 | 
			
		||||
                processed_quantity = self._tool_calculate_quantity(
 | 
			
		||||
                    quantity, price, base_asset_precision, quote_amount_precision
 | 
			
		||||
                    quantity, clean_price, base_asset_precision, quote_amount_precision
 | 
			
		||||
                )
 | 
			
		||||
                logger.info("根据quoteOrderQty计算quantity: %f", processed_quantity)
 | 
			
		||||
                processed_kwargs["quantity"] = str(processed_quantity)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user