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("что-то пошло не так при закрытии ошибки"); }; }
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"); } }
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("Ошибка синхонизации времени с сервером"); }