예제 #1
0
        //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;
                    }
                }
            }
        }
예제 #2
0
        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);
        }