Example #1
0
        public void Issue42()
        {
            var rpcClient = BuildRpcClient();

            var param = new NewStopLimitOrderRequestDTO
            {
                OrderId           = 0,
                MarketId          = 99498,
                Currency          = null,
                AutoRollover      = false,
                Direction         = "buy",
                Quantity          = 10m,
                BidPrice          = 12094m,
                OfferPrice        = 12098m,
                AuditId           = "20110629-G2PREPROD3-0102794",
                TradingAccountId  = 400002249,
                IfDone            = null,
                OcoOrder          = null,
                Applicability     = null,
                ExpiryDateTimeUTC = null,
                Guaranteed        = false,
                TriggerPrice      = 0m
            };
            var response = rpcClient.TradesAndOrders.Order(param);


            rpcClient.LogOut();
        }
Example #2
0
        private void OnMessageReceived(object sender, MessageEventArgs <PriceDTO> e)
        {
            if (!_listening || _ordered || Market == null)
            {
                return;
            }
            _ordered = true;

            var order = new NewStopLimitOrderRequestDTO
            {
                MarketId          = e.Data.MarketId,
                AuditId           = e.Data.AuditId,
                BidPrice          = e.Data.Bid,
                OfferPrice        = e.Data.Offer,
                Quantity          = Market.WebMinSize.GetValueOrDefault() + 1,
                TradingAccountId  = Account.TradingAccounts[0].TradingAccountId,
                Direction         = "buy",
                Applicability     = "GFD",
                ExpiryDateTimeUTC = DateTime.UtcNow + TimeSpan.FromDays(1)
            };

            Dispatcher.BeginInvoke(() => listBox1.Items.Add("price update arrived, making a new trade"));

            RpcClient.TradesAndOrders.BeginOrder(order, ar =>
            {
                try
                {
                    var result = RpcClient.TradesAndOrders.EndTrade(ar);

                    Dispatcher.BeginInvoke(() =>
                    {
                        RpcClient.MagicNumberResolver.ResolveMagicNumbers(result);
                        listBox1.Items.Add(String.Format("trading complete\n\tstatus = {0} {2}\n\tstatus reason = {1} {3}", result.Status, result.StatusReason, result.Status_Resolved, result.StatusReason_Resolved));
                        if (result.OrderId > 0)
                        {
                            listBox1.Items.Add(String.Format("created order {0}", result.OrderId));
                        }
                    });
                }
                catch (Exception ex)
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("trading failed!"));
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("exception caught: " + ex));
                }
                finally
                {
                    Dispatcher.BeginInvoke(() =>
                    {
                        Button1.IsEnabled = true;
                        _listening        = false;
                    });
                }
            }, null);
        }
Example #3
0
        public void NewStopLimitOrderCallsTheCorrectMethodFromTheUnderlyingCore()
        {
            //Arrange
            var newStopLimitOrderRequestDTO = new NewStopLimitOrderRequestDTO();

            _mockNewStopLimitOrderPlacer.Expect(x => x.NewStopLimitOrder(newStopLimitOrderRequestDTO))
            .Return(new ApiTradeOrderResponseDTO());

            //Act
            var response = _orderService.NewStopLimitOrder(newStopLimitOrderRequestDTO);

            //Assert
            Assert.IsInstanceOfType(typeof(ApiTradeOrderResponseDTO), response);
            _mockNewStopLimitOrderPlacer.VerifyAllExpectations();
        }
        public void CanOrder()
        {
            var      gate                   = new AutoResetEvent(false);
            PriceDTO currentPrice           = null;
            OrderDTO newOrder               = null;
            var      orderHasBeenPlacedFlag = false;

            var marketInformation = _rpcClient.Market.GetMarketInformation(_CFDmarketId.ToString());
            var pricesListener    = _streamingClient.BuildPricesListener(_CFDmarketId);
            var ordersListener    = _streamingClient.BuildOrdersListener();

            try
            {
                ordersListener.MessageReceived += (s, e) =>
                {
                    newOrder = e.Data;
                    Console.WriteLine(
                        string.Format(
                            "New order has been recieved on Orders stream\r\n {0}",
                            e.Data.ToStringWithValues()));
                    gate.Set();
                };

                pricesListener.MessageReceived += (o, s) =>
                {
                    if (orderHasBeenPlacedFlag)
                    {
                        return;
                    }

                    currentPrice = s.Data;
                    var order = new NewStopLimitOrderRequestDTO
                    {
                        MarketId          = currentPrice.MarketId,
                        BidPrice          = currentPrice.Bid + 1,
                        OfferPrice        = currentPrice.Offer + 1,
                        AuditId           = currentPrice.AuditId,
                        Quantity          = marketInformation.MarketInformation.WebMinSize.GetValueOrDefault() + 1,
                        TradingAccountId  = _accounts.TradingAccounts[0].TradingAccountId,
                        Direction         = "buy",
                        Applicability     = "GTD",
                        ExpiryDateTimeUTC = DateTime.UtcNow + TimeSpan.FromDays(1)
                    };

                    var response = _rpcClient.TradesAndOrders.Order(order);
                    orderHasBeenPlacedFlag = true;
                    _rpcClient.MagicNumberResolver.ResolveMagicNumbers(response);
                    Assert.AreEqual("Accepted", response.Status_Resolved, string.Format("Error placing order: \r\n{0}", response.ToStringWithValues()));
                };

                if (!gate.WaitOne(TimeSpan.FromSeconds(15)))
                {
                    throw new Exception("timed out waiting for order notification");
                }

                Assert.IsNotNull(newOrder);
            }
            finally
            {
                _streamingClient.TearDownListener(pricesListener);
                _streamingClient.TearDownListener(ordersListener);
            }
        }
Example #5
0
 public ApiTradeOrderResponseDTO NewStopLimitOrder(NewStopLimitOrderRequestDTO newStopLimitOrderRequestDTO)
 {
     return(_newStopLimitOrderPlacer.NewStopLimitOrder(newStopLimitOrderRequestDTO));
 }
        public void NewStopLimitOrderCallsTheCorrectMethodFromTheUnderlyingCore()
        {
            //Arrange
            var newStopLimitOrderRequestDTO = new NewStopLimitOrderRequestDTO();
            
            _mockNewStopLimitOrderPlacer.Expect(x => x.NewStopLimitOrder(newStopLimitOrderRequestDTO))
                .Return(new ApiTradeOrderResponseDTO());

            //Act
            var response = _orderService.NewStopLimitOrder(newStopLimitOrderRequestDTO);

            //Assert
            Assert.IsInstanceOfType(typeof(ApiTradeOrderResponseDTO), response);
            _mockNewStopLimitOrderPlacer.VerifyAllExpectations();
        }
 public ApiTradeOrderResponseDTO NewStopLimitOrder(NewStopLimitOrderRequestDTO newStopLimitOrderRequestDTO)
 {
     return _newStopLimitOrderPlacer.NewStopLimitOrder(newStopLimitOrderRequestDTO);
 }