コード例 #1
0
        public List <OrderData> CalcGrid(List <StopLimitOrderTest> _orders)
        {
            var result = new List <OrderData>();
            var isLong = true;

            List <StopLimitOrderTest> orders;

            if (_orders.Any(x => !x.IsBuyOperation))
            {
                isLong = false;
                orders = _orders.OrderBy(x => x.StopPrice).ToList();
            }
            else
            {
                orders = _orders.OrderByDescending(x => x.StopPrice).ToList();
            }

            var       config    = tradeConfigRepository.GetLast();
            const int precision = 10;

            if (orders != null)
            {
                double costSum   = 0;
                double amountSum = 0;
                foreach (var order in orders)
                {
                    var amount = order.Amount;
                    amountSum += amount;
                    var cost = order.Amount * order.StopPrice;
                    costSum += cost;
                    var avgPrice = costSum / amountSum;

                    var orderData = new OrderData();
                    orderData.Amount      = Math.Round(amount, precision);
                    orderData.Equivalent  = Math.Round(cost, precision);
                    orderData.PriceInGrid = Math.Round(order.StopPrice, precision);
                    if (order.IsBuyOperation)
                    {
                        orderData.ProfitPrice = Math.Round(avgPrice + avgPrice * config.Profit / 100, precision);
                    }
                    else
                    {
                        isLong = order.IsBuyOperation;
                        orderData.ProfitPrice = Math.Round(avgPrice - avgPrice * config.Profit / 100, precision);
                    }
                    orderData.Rebount = Math.Round(Math.Abs(orderData.PriceInGrid - orderData.ProfitPrice) * 100 / orderData.PriceInGrid, precision);
                    result.Add(orderData);
                }
            }
            if (isLong)
            {
                result = result.OrderByDescending(x => x.PriceInGrid).ToList();
            }
            else
            {
                result = result.OrderBy(x => x.PriceInGrid).ToList();
            }
            CalcStatisticsParametrs(result, isLong);
            return(result);
        }
コード例 #2
0
ファイル: Martingale.cs プロジェクト: zubr404/BinanceClient
        private void SetConfifuration()
        {
            stopLimitOrderRepository  = new StopLimitOrderRepository();
            takeProfitOrderRepository = new TakeProfitOrderRepository();
            positionRepository        = new PositionRepository();

            tradeConfiguration = ToTestConfifuration(tradeConfigRepository.GetLast());
            simbol             = CreateSimbolPair(tradeConfiguration.MainCoin, tradeConfiguration.AltCoin);
        }