Пример #1
0
        public static Stop AddStop(this Strategy s, Position position, PositionSide side, double qty = 0,
                                   double level = 0.05, StopType type = StopType.Trailing, StopMode mode = StopMode.Percent)
        {
            var stop = new QBStop(s, position, side, qty, level, type, mode);

            AddStop2(s, stop);
            return(stop);
        }
Пример #2
0
        public static Stop AddStop(this Strategy s,
                                   Position position, PositionSide side, double qty, DateTime dateTime)
        {
            var stop = new QBStop(s, position, side, qty, dateTime);

            AddStop2(s, stop);
            return(stop);
        }
        public Stop ToStop(BsonValue v)
        {
            var doc    = (BsonDocument)v;
            var symbol = doc["instrument"].AsString;
            var inst   = Strategy.GetFramework().InstrumentManager.GetBySymbol(symbol);

            if (inst == null)
            {
                return(null);
            }

            var    type     = (StopType)doc["type"].AsInt32;
            var    side     = (PositionSide)doc["side"].AsInt32;
            var    qty      = doc["qty"].AsDouble;
            var    position = Strategy.Portfolio.GetPosition(inst);
            QBStop stop;

            if (type != StopType.Time)
            {
                stop = new QBStop(
                    Strategy, position, side, qty,
                    doc["level"].AsDouble, type, (StopMode)doc["mode"].AsInt32);
            }
            else
            {
                stop = new QBStop(Strategy, position, side, qty, doc["completionTime"].AsDateTime);
            }
            stop.SetObjectId(doc["_id"].AsObjectId.ToByteArray());
            stop.FillMode       = (StopFillMode)doc["fillMode"].AsInt32;
            stop.FilterBarSize  = doc["filterBarSize"].AsInt64;
            stop.FilterBarType  = (BarType)doc["filterBarType"].AsInt32;
            stop.TraceOnBar     = doc["traceOnBar"].AsBoolean;
            stop.TraceOnBarOpen = doc["traceOnBarOpen"].AsBoolean;
            stop.TraceOnQuote   = doc["traceOnQuote"].AsBoolean;
            stop.TraceOnTrade   = doc["traceOnTrade"].AsBoolean;
            stop.TrailOnHighLow = doc["trailOnHighLow"].AsBoolean;
            stop.TrailOnOpen    = doc["trailOnOpen"].AsBoolean;

            if (doc.TryGetValue("fields", out var f))
            {
                var buffer = f.AsBinary;
                using (var stream = new MemoryStream(buffer))
                    using (var reader = new BinaryReader(stream)) {
                        _fieldsReader(ObjectTableOwner.Stop, stop.Fields, reader);
                    }
            }
            return(stop);
        }