Exemple #1
0
        /// <summary>
        /// To shift the expiration of internal instruments <see cref="ContinuousSecurity.ExpirationJumps"/> to a size equas to <paramref name="offset" />.
        /// </summary>
        /// <param name="offset">The size of the expiration shift.</param>
        public void Offset(TimeSpan offset)
        {
            lock (_expirationJumps.SyncRoot)
            {
                var dict = new PairSet <Security, DateTimeOffset>();

                foreach (var security in InnerSecurities)
                {
                    if (security.ExpiryDate == null)
                    {
                        throw new InvalidOperationException(LocalizedStrings.Str698Params.Put(security.Id));
                    }

                    var expiryDate = (DateTimeOffset)security.ExpiryDate + offset;

                    if (expiryDate > security.ExpiryDate)
                    {
                        throw new ArgumentOutOfRangeException(nameof(offset), offset, LocalizedStrings.Str699Params.Put(security.Id, expiryDate, security.ExpiryDate));
                    }

                    dict.Add(security, expiryDate);
                }

                _expirationJumps.Clear();
                _expirationJumps.AddRange(dict);
            }
        }
Exemple #2
0
 /// <inheritdoc />
 protected override void FromSerializedString(string text)
 {
     lock (_expirationJumps.SyncRoot)
     {
         _expirationJumps.Clear();
         _expirationJumps.AddRange(text.Split(",").Select(p =>
         {
             var parts = p.Split("=");
             return(new KeyValuePair <SecurityId, DateTimeOffset>(parts[0].ToSecurityId(), parts[1].ToDateTime(_dateFormat).ChangeKind(DateTimeKind.Utc)));
         }));
     }
 }