예제 #1
0
 private JsonResponse ProcessRequestPositionsClosing(RequestPositionsClosing req)
 {
     var resp = new JsonResponsePositionsClosing
     {
         RequestId = req.RequestId
     };
     int countOk, countFailed;
     string errors;
     ModifyOrders(req.positions, true, out countOk, out countFailed, out errors);
     resp.CountClosed = countOk;
     resp.CountFail = countFailed;
     resp.ErrorString = errors;
     resp.Success = countOk > countFailed;
     return resp;
 }
예제 #2
0
        private JsonResponse ProcessRequestPositionsClosing(RequestPositionsClosing req)
        {
            var resp = new JsonResponsePositionsClosing
            {
                RequestId = req.RequestId
            };
            var errorStrings = new Dictionary<string, string>();
            int countOk = 0, countFail = 0;
            try
            {
                foreach (var pos in req.positions)
                {
                    string errorString;
                    var order = new MarketOrder
                    {
                        AccountID = pos.AccountId,
                        ID = pos.Id,
                        Side = pos.Side,
                        Symbol = pos.Symbol,
                        StopLoss = (float)pos.Sl,
                        TakeProfit = (float)pos.Tp,
                        TimeEnter = pos.TimeEnter,
                        TimeExit = pos.TimeExit,
                        Volume = pos.Volume,
                        PriceEnter = (float)pos.PriceEnter,
                        PriceExit = pos.PriceExit == 0 ? (float?)null : (float)pos.PriceExit,
                        ResultDepo = (float)pos.Profit,
                        MasterOrder = pos.Mt4Order
                    };
                    if (PlatformManager.Instance.proxy.ModifyOrder(order, out errorString))
                        countOk++;
                    else countFail++;
                    if (!string.IsNullOrEmpty(errorString) && !errorStrings.ContainsKey(errorString))
                        errorStrings.Add(errorString, string.Empty);
                }
                resp.CountClosed = countOk;
                resp.CountFail = countFail;
                resp.Success = countFail == 0;
                resp.ErrorString = string.Join(". ", errorStrings.Keys);
            }
            catch (Exception ex)
            {
                resp.ErrorString = ex.GetType().Name + ": " + ex.Message;
                resp.Success = false;
            }

            return resp;
        }