Exemplo n.º 1
0
        public void ClosePosition(Authorization authorization)//Закрытие позиции
        {
            //Makejson makejson = new Makejson();
            //Обнуляем переменные
            orderflagHigh         = false;
            LAST_MAC_HIGH_AVERAGE = 0;
            LAST_MAC_HIGH         = 100;
            MAC_HIGH_COUNT_ORDER  = 0;
            MAC_LOW_COUNT_ORDER   = 0;
            //отменяем все ордера
            CancelAllActiveOrder cancelorder = new CancelAllActiveOrder();

            url = cancelorder.CreateRequest(authorization, TimeValue);//задаем путь запроса

            string response = HTTP.Post(Makejson.Convert(cancelorder), url);
            //Получаем значение позиции
            GetMyPosition getPosition = new GetMyPosition {
                symbol = symbol
            };
            string            getPositionRequest  = getPosition.CreateRequest(authorization, TimeValue);
            string            getPositionResponse = HTTP.Get(getPositionRequest);
            GetMyPositionRoot ResultGetPosition   = Makeclass <GetMyPositionRoot> .Get(getPositionResponse);

            if (ResultGetPosition.ret_code != 0)
            {
                throw new Exception("Ошибка в закрытии позиции. RetCode = " + ResultGetPosition.ret_code + "Отправленный запрос - " + getPositionRequest + "; полученный запрос - " + getPositionResponse);
            }
            int    _qty  = ResultGetPosition.result.size; //Количество контрактов
            string _side = ResultGetPosition.result.side; //Long or Short

            //Выставляем рыночный ордер, чтобы закрыть позицию
            placeorder = new PlaceOrder
            {
                api_key       = api,
                qty           = _qty.ToString(),
                side          = _side == "Sell" ? "Buy" : "Sell",
                symbol        = symbol,
                order_type    = "Market",
                time_in_force = "GoodTillCancel",
                sign          = sign
            };

            url = placeorder.CreateRequest(authorization, TimeValue);//задаем путь запроса

            var            responseOrder = HTTP.Post(Makejson.Convert(placeorder), url);
            PlaceOrderRoot OrderTemp1    = Makeclass <PlaceOrderRoot> .Get(responseOrder);

            if (OrderTemp1.ret_code == 0)
            {
                Console.WriteLine("закрыли позицию без ошибок");
            }
            else
            {
                Console.WriteLine("что-то пошло не так при закрытии ошибки");
            };
        }
Exemplo n.º 2
0
        public void TestResponse(Authorization authorization)
        {
            Console.WriteLine();
            GetMyPosition getPosition = new GetMyPosition {
                symbol = symbol
            };
            string            getPositionRequest  = getPosition.CreateRequest(authorization, TimeValue);
            string            getPositionResponse = HTTP.Get(getPositionRequest);
            GetMyPositionRoot ResultGetPosition   = Makeclass <GetMyPositionRoot> .Get(getPositionResponse);

            Console.ReadLine();
            bool againplaceorder = true;
            int  Count           = 0;
            var  OrderStatus     = "";

            //Выставляем контракт по рынку
            placeorder = new PlaceOrder
            {
                api_key       = api,
                qty           = ContractQty.ToString(),
                side          = TempSide,
                symbol        = symbol,
                order_type    = "Market",
                time_in_force = "GoodTillCancel",
                sign          = sign
            };

            url = placeorder.CreateRequest(authorization, TimeValue);//задаем путь запроса
            //получаем ответ от выставленных контрактов
            var response = HTTP.Post(Makejson.Convert(placeorder), url);

            PlaceOrderRoot OrderRoot = Makeclass <PlaceOrderRoot> .Get(response);

            //Получаем цену ,по которой вошли в позицию
            //   double Price = OrderRoot.result.price;



            GetActiveOrderRealTime getOrder = new GetActiveOrderRealTime
            {
                api_key = api,
                //         order_id = temp_order_id,
                symbol = symbol,
                sign   = sign
            };

            var p = HTTP.Get(getOrder.CreateRequest(authorization, TimeValue));
            GetActiveOrderRealTimeRoot ResultGetOrder = Makeclass <GetActiveOrderRealTimeRoot> .Get(p);

            OrderStatus = ResultGetOrder.result.order_status;

            if (OrderStatus == "Cancelled")
            {
                Console.WriteLine("STOP");
            }
        }
Exemplo n.º 3
0
        public void SetTimeValue(Authorization authorization)
        {
            for (int i = 0; i < 10; i++)
            {
                GetMyPosition getPosition = new GetMyPosition {
                    symbol = symbol
                };
                string            getPositionRequest  = getPosition.CreateRequest(authorization, i);
                string            getPositionResponse = HTTP.Get(getPositionRequest);
                GetMyPositionRoot ResultGetPosition   = Makeclass <GetMyPositionRoot> .Get(getPositionResponse);

                if (ResultGetPosition.ret_code == 0)
                {
                    TimeValue = i;
                    Console.WriteLine("Шаг времени = " + i);
                    return;
                }
            }
            throw new Exception("Ошибка синхонизации времени с сервером");
        }