Ejemplo n.º 1
0
        static async Task <long?> PlaceMarketOrder(string side = "buy")
        {
            WriteNewLine("Creating a EUR_USD market BUY order ...");

            var  oandaInstrument = (await Rest20.GetAccountInstrumentsAsync(AccountID, INSTRUMENT)).First();
            long orderUnits      = side == "buy" ? 10 : -10;

            var request = new MarketOrderRequest(oandaInstrument)
            {
                units = orderUnits
            };

            OrderPostResponse response = null;

            try
            {
                response = await Rest20.PostOrderAsync(AccountID, request);

                WriteNewLine("Congrats! You've put on a trade! Let it run! :)");
            }
            catch
            {
                WriteNewLine("Oops. Order creation failed.");
            }

            return(response?.orderFillTransaction?.tradeOpened?.tradeID);
        }
Ejemplo n.º 2
0
// instruments
// инструменты


        public async void GetSecurities(List <Portfolio> portfolios)
        {
            if (portfolios == null || portfolios.Count == 0)
            {
                return;
            }

            _allInstruments = new List <Instrument>();

            // Get an instrument list (basic)

            for (int i = 0; i < portfolios.Count; i++)
            {
                List <Instrument> result = await Rest20.GetAccountInstrumentsAsync(portfolios[i].Number);

                _allInstruments.AddRange(result);
            }

            List <Security> _securities = new List <Security>();

            for (int i = 0; i < _allInstruments.Count; i++)
            {
                Security newSecurity = new Security();

                newSecurity.Name         = _allInstruments[i].name;
                newSecurity.NameFull     = _allInstruments[i].displayName;
                newSecurity.NameClass    = _allInstruments[i].type;
                newSecurity.SecurityType = SecurityType.CurrencyPair;
                newSecurity.NameId       = "none";

                newSecurity.Lot = 1;

                decimal step = 1;

                for (int i2 = 0; i2 < _allInstruments[i].displayPrecision; i2++)
                {
                    step *= 0.1m;
                }

                newSecurity.PriceStep     = step;
                newSecurity.PriceStepCost = step;
                _securities.Add(newSecurity);
            }

            if (NewSecurityEvent != null)
            {
                NewSecurityEvent(_securities);
            }
        }
Ejemplo n.º 3
0
// инструменты

        public async void GetSecurities(List <Portfolio> portfolios)
        {
            if (portfolios == null || portfolios.Count == 0)
            {
                SendLogMessage("Прервана попытка получить инструменты раньше авторизации аккаунта",
                               LogMessageType.System);
                return;
            }

            _allInstruments = new List <Instrument>();

            // Get an instrument list (basic)

            for (int i = 0; i < portfolios.Count; i++)
            {
                List <Instrument> result = await Rest20.GetAccountInstrumentsAsync(portfolios[i].Number);

                _allInstruments.AddRange(result);
            }

            List <Security> _securities = new List <Security>();

            for (int i = 0; i < _allInstruments.Count; i++)
            {
                Security newSecurity = new Security();

                newSecurity.Name      = _allInstruments[i].name;
                newSecurity.NameFull  = _allInstruments[i].displayName;
                newSecurity.NameClass = _allInstruments[i].type;
                newSecurity.Lot       = 1;

                decimal step = 1;

                for (int i2 = 0; i2 < _allInstruments[i].displayPrecision; i2++)
                {
                    step *= 0.1m;
                }

                newSecurity.PriceStep     = step;
                newSecurity.PriceStepCost = step;
                _securities.Add(newSecurity);
            }

            if (NewSecurityEvent != null)
            {
                NewSecurityEvent(_securities);
            }
        }
Ejemplo n.º 4
0
        static async Task <long?> PlaceMarketOrder(string side = "buy")
        {
            WriteNewLine("Creating a EUR_USD market BUY order ...");

            var parameters = new AccountInstrumentsParameters()
            {
                instruments = new List <string>()
                {
                    INSTRUMENT
                }
            };
            var     oandaInstrument = (await Rest20.GetAccountInstrumentsAsync(AccountID, parameters)).First();
            decimal orderUnits      = side == "buy" ? 10 : -10;

            var request = new MarketOrderRequest(oandaInstrument)
            {
                units = orderUnits
            };

            PostOrderResponse response = null;

            try
            {
                response = await Rest20.PostOrderAsync(AccountID, request);

                WriteNewLine("Congrats! You've put on a trade! Let it run! :)");
            }
            catch (Exception ex)
            {
                var errorResponse = ErrorResponseFactory.Create(ex.Message);

                WriteNewLine("Oops. Order creation failed.");
                WriteNewLine($"The failure message is: {errorResponse.errorMessage}.");
                WriteNewLine("Try again later.");
            }

            return(response?.orderFillTransaction?.tradeOpened?.tradeID);
        }
Ejemplo n.º 5
0
        public async Task <List <Instrument> > GetInstrumentEx(string accountId)
        {
            List <Instrument> result = await Rest20.GetAccountInstrumentsAsync(accountId);

            return(result);
        }