Ejemplo n.º 1
0
        public async Task <List <BankPortfolioData> > GetPositionData()
        {
            List <BankPortfolioData> output = new List <BankPortfolioData>();
            RobinhoodApi             api    = new RobinhoodApi()
            {
                BearerToken = ApplicationSettings.Default.RobinKey
            };
            OutRobinData <RhPosition> datas = await api.GetPositions();

            foreach (RhPosition data in datas.Data)
            {
                RhInstrument inst = await InstrumentLookup.GetRhInstrument(data.instrument);

                ShowMessage($"{inst.Symbol}- {inst.SimpleName}");
                decimal           shareCount = UtilityHandler.GetDecimalNumber(data.quantity);
                decimal           costBasis  = UtilityHandler.GetDecimalNumber(data.average_buy_price);
                BankPortfolioData d          = new BankPortfolioData()
                {
                    BankAccount_ID = UtilityHandler.GetString(data.account_number),
                    Trade_CODE     = UtilityHandler.GetString(inst.Symbol),
                    Trade_NAME     = UtilityHandler.GetString(inst.SimpleName),
                    Shares_CNT     = shareCount,
                    CostBasis_AMNT = costBasis,
                    Value_AMNT     = shareCount * costBasis,
                    Export_DATE    = DateTime.Today,
                    Instrument_ID  = inst.Id
                };
                output.Add(d);
            }
            return(output);
        }
        public static async Task <RhInstrument> GetRhInstrument(string url, bool OnlineLookup = false)
        {
            string instrumentID = GetInstrumentID(url);

            if (!OnlineLookup && lookup.ContainsKey(instrumentID))
            {
                return(lookup[instrumentID]);
            }
            RhInstrument      output  = new RhInstrument();
            HttpClientHandler handler = new HttpClientHandler
            {
                UseDefaultCredentials = true
            };
            HttpClient client = new HttpClient(handler);

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            Uri requestUri = new Uri(url);
            HttpResponseMessage response = await client.GetAsync(requestUri).ConfigureAwait(false);

            if (!response.IsSuccessStatusCode)
            {
                return(output);
            }
            string json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            output       = JsonConvert.DeserializeObject <RhInstrument>(json);
            instrumentID = output.Id.Trim();
            if (!(UtilityHandler.IsEmpty(instrumentID) ||
                  lookup.ContainsKey(instrumentID))
                )
            {
                lookup.Add(instrumentID, output);
            }
            return(output);
        }
Ejemplo n.º 3
0
        private async Task <List <BankTransactionData> > Convert2BankTransactionData(OutRobinData <RhTransaction> datas)
        {
            List <BankTransactionData> output = new List <BankTransactionData>();

            foreach (RhTransaction data in datas.Data)
            {
                string       accountID = UtilityHandler.GetIdFromUrl(data.account);
                RhInstrument inst      = await InstrumentLookup.GetRhInstrument(data.instrument);

                decimal valueAmt = UtilityHandler.GetDecimalNumber(data?.executed_notional?.amount);
                if (data.state == "cancelled")
                {
                    ShowMessage($"{inst.Symbol} [{data.side.ToUpper()}] - {inst.SimpleName}");
                    BankTransactionData d = new BankTransactionData()
                    {
                        BankAccount_ID   = accountID,
                        TransAction_DATE = UtilityHandler.GetDateValue(data.created_at),
                        TransAction_CODE = UtilityHandler.GetString(data.side).ToUpper(),
                        Settlement_DATE  = UtilityHandler.GetDateValue(data.updated_at),
                        Trade_CODE       = UtilityHandler.GetString(inst.Symbol),
                        Trade_NAME       = UtilityHandler.GetString(inst.SimpleName),
                        Instrument_ID    = UtilityHandler.GetString(inst.Id),
                        Trade_ID         = string.Empty,
                        Shares_CNT       = UtilityHandler.GetDecimalNumber(data.quantity),
                        CostBasis_AMNT   = UtilityHandler.GetDecimalNumber(data.price),
                        Value_AMNT       = valueAmt,
                        Type_CODE        = UtilityHandler.GetString(data.type),
                        GoodUntil_CODE   = UtilityHandler.GetString(data.time_in_force),
                        State_CODE       = UtilityHandler.GetString(data.state),
                        Export_DATE      = DateTime.Today
                    };
                    output.Add(d);
                    continue;
                }
                if (data.executions is null)
                {
                    continue;
                }
                foreach (Execution e in data.executions)
                {
                    ShowMessage($"{inst.Symbol} [{data.side.ToUpper()}] - {inst.SimpleName}");
                    BankTransactionData d = new BankTransactionData()
                    {
                        BankAccount_ID   = accountID,
                        TransAction_DATE = data.executions[0].timestamp,
                        TransAction_CODE = UtilityHandler.GetString(data.side).ToUpper(),
                        Settlement_DATE  = UtilityHandler.GetDateValue(data.executions[0].settlement_date),
                        Trade_CODE       = UtilityHandler.GetString(inst.Symbol),
                        Trade_NAME       = UtilityHandler.GetString(inst.SimpleName),
                        Instrument_ID    = UtilityHandler.GetString(inst.Id),
                        Trade_ID         = UtilityHandler.GetString(e.id),
                        Shares_CNT       = UtilityHandler.GetDecimalNumber(e.quantity),
                        CostBasis_AMNT   = UtilityHandler.GetDecimalNumber(e.price),
                        Value_AMNT       = valueAmt,
                        Type_CODE        = UtilityHandler.GetString(data.type),
                        GoodUntil_CODE   = UtilityHandler.GetString(data.time_in_force),
                        State_CODE       = UtilityHandler.GetString(data.state),
                        Export_DATE      = DateTime.Today
                    };
                    output.Add(d);
                }
            }
            int seqNumb = output.Count;

            foreach (BankTransactionData row in output)
            {
                row.Seq_NUMB = seqNumb; seqNumb--;
            }
            return(output);
        }