//private void SetTradeQty(bool firststart = false) //{ // if (firststart && config.TradeQty != null && config.TradeQty != 0) // { // info.TradeQty = (decimal)config.TradeQty; // } // else // { // var info = coinConfigs.FirstOrDefault(a => a.Platform == Platform && a.Symbol == Symbol); // var ticker = GetTicker(); // var account = GetAccount(); // decimal price_now = ticker.last; // decimal net = account.GetNet(this.info.Symbol, price_now); // int packetNum = (this.info.OrderQty + 3) * 2; // decimal newTradeQTY = info.FormatAmount2D(net / price_now / packetNum); // this.info.TradeQty = newTradeQTY; // } //} private void resetAccount(string side, decimal resetAmt) { Stopwatch stopwatch_market = new Stopwatch(); stopwatch_market.Start(); bool result_market = false; for (int i = 0; i < 3 && !result_market; i++) { var ticker = GetTicker(); decimal price = side == "buy" ? ticker.sell : ticker.buy; //Trade trade = robotTrade.Trade(Symbol, side, price, resetAmt); Trade trade = robotTrade.MarketTrade(Symbol, side, price, resetAmt); result_market = trade.result; if (result_market) { stopwatch_market.Stop(); //UpdateMarketFee(trade.order_id); Log4NetUtility.Info("初始资源", $"《市价{side}》,当前Price:{ticker.last.ToString("#0.00")},Deal数量:{resetAmt.ToString("#0.0000")},市价用时:{stopwatch_market.ElapsedMilliseconds}"); Thread.Sleep(3000); break; } else { Thread.Sleep(1000); if (trade.error_code.Contains("1002")) { Thread.Sleep(2000 * i); //i -= 1; } } } }
private Trade TradeOrder(Order order) { if (order == null) { return(null); } Trade trade = robotTrade.Trade(symbol, order.type, order.price, order.amount); for (int i = 0; i < 3; i++) { if (trade.result && !string.IsNullOrEmpty(trade.order_id)) { order.order_id = trade.order_id; order.create_date = Utils.GetUtcTimeDec(); AddUpdateSessionOrder(order); Console.WriteLine($"《{order.type}》 Price:{order.price.ToString("#0.0000")} id:{Utils.ShortID(order.order_id)}"); break; } else { string type = order.type == "buy" ? "-S" : "+B"; Log4NetUtility.Info("RobotHFT", $"《{type}》委托失败,P:《{order.price.ToString("#0.00")}》A:《{order.amount.ToString("#0.0000")}》,第{i + 1}次返回:{trade.error_code} {trade.msg}"); Thread.Sleep(1000); if (trade.error_code.Contains("1002")) { Thread.Sleep(2000 * i); //i -= 1; } if (trade.error_code.Contains("1016")) { var side = order.type == "buy" ? "sell" : "buy"; var ticker = robotMarket.GetTicker(symbol); decimal price = side == "buy" ? ticker.sell : ticker.buy; Trade tradeM = robotTrade.MarketTrade(symbol, side, price, order.amount); if (tradeM.result) { Log4NetUtility.Info("RobotHFT", $"《{side}》市价调整,P:《{price.ToString("#0.00")}》A:《{order.amount.ToString("#0.0000")}》 "); } else { Log4NetUtility.Info("RobotHFT", $"《{side}》市价失败,P:《{price.ToString("#0.00")}》A:《{order.amount.ToString("#0.0000")}》 {tradeM.error_code} {tradeM.msg}"); } Thread.Sleep(2000 * i); } } } return(trade); }