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(); }
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); }
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); } }
public ApiTradeOrderResponseDTO NewStopLimitOrder(NewStopLimitOrderRequestDTO newStopLimitOrderRequestDTO) { return(_newStopLimitOrderPlacer.NewStopLimitOrder(newStopLimitOrderRequestDTO)); }
public ApiTradeOrderResponseDTO NewStopLimitOrder(NewStopLimitOrderRequestDTO newStopLimitOrderRequestDTO) { return _newStopLimitOrderPlacer.NewStopLimitOrder(newStopLimitOrderRequestDTO); }