private void ScheduleEventCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add) { ScheduledEventParams scheduledEventParams = (ScheduledEventParams)e.NewItems[0]; PlaceSheduledEvent(scheduledEventParams); } if (e.Action == NotifyCollectionChangedAction.Remove) { ScheduledEventParams scheduledEventParams = (ScheduledEventParams)e.OldItems[0]; ScheduledEvent scheduledEvent = GetScheduledEventByName(scheduledEventParams.Tag); if (scheduledEvent != null) { Algorithm.Schedule.Remove(scheduledEvent); } } if (Algorithm.LiveMode) { using (var stream = File.Open(json_path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite)) { JsonWriter writer = new JsonTextWriter(new StreamWriter(stream)); serializedIEnumerableScheduledEventJsonConverter.WriteJson(writer, _scheduledEventParams, serializer); writer.Flush(); writer.DisposeSafely(); } } }
/// <summary> /// Creates a new SerializedScheduledEventParams instance based on the provided ScheduledEventParams /// </summary> /// <param name="scheduledEventParams"></param> public SerializedScheduledEventParams(ScheduledEventParams scheduledEventParams) { Name = scheduledEventParams.Name; ExpiryTime = Time.DateTimeToUnixTimeStamp(scheduledEventParams.ExpiryTime); Tag = scheduledEventParams.Tag; Quantity = scheduledEventParams.Quantity; OrderReason = scheduledEventParams.OrderReason; Symbol = scheduledEventParams.Symbol.ID.ToString(); }
/// <summary> /// Remove scheduledEventParams which is converted to ScheduledEvent and removed from SheduleManager /// </summary> /// <param name="scheduledEventTag"></param> public void Remove(string scheduledEventTag) { ScheduledEventParams scheduledEventParams = GetScheduledEventParams(scheduledEventTag); if (scheduledEventParams != null) { _scheduledEventParams.Remove(scheduledEventParams); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, scheduledEventParams)); } }
private void PlaceSheduledEvent(ScheduledEventParams scheduledEventParams) { Algorithm.Schedule.On(scheduledEventParams.Tag, Algorithm.Schedule.DateRules.On(scheduledEventParams.ExpiryTime.Date), Algorithm.Schedule.TimeRules.At(scheduledEventParams.ExpiryTime.TimeOfDay, TimeZones.Utc), () => { Algorithm.MarketOrderWrapper(scheduledEventParams.Symbol, scheduledEventParams.Quantity, orderReason: scheduledEventParams.OrderReason, tag: scheduledEventParams.Tag); }); }
/// <summary> /// Add scheduledEventParams which is converted to ScheduledEvent and placed in SheduleManager /// </summary> /// <param name="scheduledEventParams"></param> public void Add(ScheduledEventParams scheduledEventParams) { _scheduledEventParams.Add(scheduledEventParams); OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, scheduledEventParams)); }