예제 #1
0
        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
                            ));
        }
예제 #2
0
 public void PlaceStopOrder(StopOrder stop)
 {
     _outStandingStopOrders.Add(stop.Symbol, stop);
 }
예제 #3
0
        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--------");
        }