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); }
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); }