private void CloseStopOrder(Tick t, StopOrder s) { _tradeProfits.Add(_portfolio.ClosePosition(t, s.TriggerPrice)); _outStandingStopOrders.Remove(s.Symbol); //remove limit order because stop was closed if(_outStandingLimitOrders.ContainsKey(t.Symbol)) _outStandingLimitOrders.Remove(t.Symbol); //Flags for visualization purposes _flags.Add(new HighstockFlag( "CS", "Closed Stop Order", t.Time )); }
public void PlaceStopOrder(StopOrder stop) { _outStandingStopOrders.Add(stop.Symbol, stop); }
public void PlaceMarketOrder(Symbol sym, int size, Position.PositionSide side, double stopPips = double.NaN, double LimitPips = double.NaN) { if (!currentOffers.ContainsKey(sym)) return; double orderPrice = side.Equals(Position.PositionSide.Long) ? currentOffers[sym].AskClose : currentOffers[sym].BidClose; //------------------------------------ // Take the position. //------------------------------------ _portfolio.TakePosition(sym, orderPrice, side, size, currentOffers[sym].Time); //------------------------------------ // Place Stop/Limits if defined //------------------------------------ if (!stopPips.Equals(double.NaN)) { StopOrder stopOrder = new StopOrder(sym, side, ((side.Equals(Position.PositionSide.Long)) ? orderPrice - stopPips : orderPrice + stopPips)); PlaceStopOrder(stopOrder); } if (!LimitPips.Equals(double.NaN)) { LimitOrder limitOrder = new LimitOrder(sym, side, ((side.Equals(Position.PositionSide.Long)) ? orderPrice + LimitPips : orderPrice - LimitPips)); PlaceLimitOrder(limitOrder); } //------------------------------------ // Flags for visualization purposes //------------------------------------ _flags.Add(new HighstockFlag( (side == Position.PositionSide.Long) ? "B" : "S", ((side == Position.PositionSide.Long) ? "Bought " : "Sold ") + size + " on " + side + " at " + orderPrice + " on " + currentOffers[sym].Time.ToString(), currentOffers[sym].Time )); //Console.WriteLine(order.OrderDate.ToString() + "ORDER--------"); }