예제 #1
0
        private void ProcessMyOrder(Order MyOrder, Order[] AllOrders, double TotalSpeed)
        {
            // Change limit if requested by user.
            if (MyOrder.SpeedLimit != StartLimit)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Changing limit order #" + MyOrder.ID + " to " + StartLimit.ToString("F2"));
                MyOrder.SetLimit(StartLimit);
            }

            // Check if refill is needed.
            if (MyOrder.BTCAvailable <= 0.003)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Refilling order #" + MyOrder.ID);
                if (MyOrder.Refill(0.01))
                {
                    MyOrder.BTCAvailable += 0.01;
                }
            }

            // Do not adjust price, if order is dead.
            if (!MyOrder.Alive)
            {
                return;
            }

            // Adjust price.
            double MinimalPrice = GetMinimalNeededPrice(AllOrders, TotalSpeed);

            if (!IncreasePrice(MyOrder, AllOrders, MinimalPrice))
            {
                DecreasePrice(MyOrder, AllOrders, MinimalPrice);
            }
        }
예제 #2
0
        private void ProcessMyOrder(Order MyOrder, Order[] AllOrders, double TotalSpeed)
        {
            double MinimalPrice = GetMinimalNeededPrice(AllOrders, TotalSpeed);

            // Change limit if requested by user.
            double __targetSpeed = StartLimit;

            if (MinimalPrice - MyOrder.Price < APIWrapper.PRICE_DECREASE_STEP[MyOrder.Algorithm] * 5.0)
            {
                __targetSpeed = APIWrapper.MINIMAL_LIMIT[MyOrder.Algorithm];
            }
            if (MyOrder.SpeedLimit != __targetSpeed && SpeedTime + APIWrapper.SPEED_CHANGE_INTERVAL < DateTime.Now)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Changing limit order #" + MyOrder.ID + " to " + __targetSpeed.ToString("F2"));
                MyOrder.SetLimit(__targetSpeed);
                if (__targetSpeed == APIWrapper.MINIMAL_LIMIT[MyOrder.Algorithm])
                {
                    SpeedTime = DateTime.Now;
                }
            }

            // Check if refill is needed.
            if (MyOrder.BTCAvailable <= 0.001)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Refilling order #" + MyOrder.ID);
                if (MyOrder.Refill(0.01))
                {
                    MyOrder.BTCAvailable += 0.01;
                }
            }

            // Do not adjust price, if order is dead.
            if (!MyOrder.Alive)
            {
                return;
            }

            // Adjust price.
            if (!IncreasePrice(MyOrder, AllOrders, MinimalPrice))
            {
                DecreasePrice(MyOrder, AllOrders, MinimalPrice);
            }
        }
예제 #3
0
        private void ProcessMyOrder(Order MyOrder, Order[] AllOrders, double TotalSpeed)
        {
            // Change limit if requested by user.
            if (MyOrder.SpeedLimit != StartLimit)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Changing limit order #" + MyOrder.ID + " to " + StartLimit.ToString("F2"));
                MyOrder.SetLimit(StartLimit);
            }

            // Check if refill is needed.
            if (MyOrder.BTCAvailable <= 0.003)
            {
                LibConsole.WriteLine(LibConsole.TEXT_TYPE.INFO, "Refilling order #" + MyOrder.ID);
                if (MyOrder.Refill(0.01))
                    MyOrder.BTCAvailable += 0.01;
            }

            // Do not adjust price, if order is dead.
            if (!MyOrder.Alive) return;

            // Adjust price.
            double MinimalPrice = GetMinimalNeededPrice(AllOrders, TotalSpeed);
            if (!IncreasePrice(MyOrder, AllOrders, MinimalPrice))
                DecreasePrice(MyOrder, AllOrders, MinimalPrice);
        }