public void PlaceOrder(Order order) { this.trades.Add(new Trade { AccountId = order.AcountId, Instrument = order.Instrument, Id = this.trades.Count + 1, Price = order.Price, //Slippage model Side = order.Side, StopLoss = order.StopLoss, TakeProfit = order.TakeProfit, Time = order.Timestamp, TrailingStop = order.TrailingStop, Units = order.Units }); }
public override void PlaceOrder(Order order) { var price = order.Side == OrderSideBuy ? this.CurrentRate.Ask : this.CurrentRate.Bid; var trailingSize = order.TrailingStop * 0.0001m; var trailingAmount = order.Side == OrderSideBuy ? price - trailingSize : price + trailingSize; this.currentTrade = new Trade { Side = order.Side, TrailingAmount = trailingAmount, Price = price, TrailingStop = order.TrailingStop, StopLoss = order.StopLoss, Time = order.Timestamp, Units = order.Units }; Console.WriteLine("Order placed ..."); }
private void PlaceOrder(string side, Rate rate) { var stopLossDistance = this.CalculateStopLossDistanceInPips(side, rate.QuoteCurrency, rate); var positionSizeInUnits = this.CalculatePositionSize(stopLossDistance, side, rate); //TODO: Decide if to user lower-upper bounds or just market order and assume the slippage var newOrder = new Order { Instrument = this.Instrument, Units = positionSizeInUnits, Side = side, OrderType = OrderTypeMarket, TrailingStop = stopLossDistance, AcountId = this.AccountId, Timestamp = rate.Time }; this.tradingAdapter.PlaceOrder(newOrder); Trace.TraceInformation("Order placed :{0}", JsonConvert.SerializeObject(newOrder)); }
public virtual void PlaceOrder(Order order) { var result = this.proxy.PostOrderAsync(order.AcountId, new Dictionary<string, string> { { "instrument", order.Instrument }, { "units", order.Units.ToString(CultureInfo.InvariantCulture) }, { "side", order.Side }, { "type", order.OrderType }, { "stopLoss", order.StopLoss.ToString(CultureInfo.InvariantCulture) }, { "trailingStop", $"{order.TrailingStop:0.0}" } }).Result; }