Esempio n. 1
0
        private void ApplyValue(object instance, object value)
        {
            if (Type == typeof(decimal))
            {
                if (value is string str)
                {
                    str = str.Replace(',', '.').RemoveSpaces().ReplaceWhiteSpaces().Trim();

                    if (str.IsEmpty())
                    {
                        return;
                    }

                    value = str;
                }
            }
            else if (Type == typeof(DateTimeOffset))
            {
                if (value is string str)
                {
                    if (_dateParser == null)
                    {
                        _dateParser = new FastDateTimeParser(Format);
                    }

                    var dto = _dateParser.ParseDto(str);

                    if (dto.Offset.IsDefault())
                    {
                        var tz = Scope <TimeZoneInfo> .Current?.Value;

                        if (tz != null)
                        {
                            dto = dto.UtcDateTime.ApplyTimeZone(tz);
                        }
                    }

                    value = dto;
                }
            }
            else if (Type == typeof(TimeSpan))
            {
                if (value is string str)
                {
                    if (_timeParser == null)
                    {
                        _timeParser = new FastTimeSpanParser(Format);
                    }

                    value = _timeParser.Parse(str);
                }
            }

            if (value != null)
            {
                OnApply(instance, value.To(Type));
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Reset state.
 /// </summary>
 public void Reset()
 {
     _dateParser = null;
     _timeParser = null;
 }
Esempio n. 3
0
        public static bool ReadOrderCondition(this IFixReader reader, FixTags tag, TimeZoneInfo timeZone, FastDateTimeParser dateTimeParser, Func <QuikOrderCondition> getCondition)
        {
            if (getCondition == null)
            {
                throw new ArgumentNullException(nameof(getCondition));
            }

            switch ((LuaFixTags)tag)
            {
            case LuaFixTags.Type:
                getCondition().Type = (QuikOrderConditionTypes)reader.ReadInt();
                return(true);

            case LuaFixTags.StopPriceCondition:
                getCondition().StopPriceCondition = (QuikStopPriceConditions)reader.ReadInt();
                return(true);

            case LuaFixTags.ConditionOrderSide:
                getCondition().ConditionOrderSide = (Sides)reader.ReadInt();
                return(true);

            case LuaFixTags.LinkedOrderCancel:
                getCondition().LinkedOrderCancel = reader.ReadBool();
                return(true);

            case LuaFixTags.Result:
                getCondition().Result = (QuikOrderConditionResults)reader.ReadInt();
                return(true);

            case LuaFixTags.OtherSecurityCode:
                getCondition().OtherSecurityId = new SecurityId {
                    SecurityCode = reader.ReadString()
                };
                return(true);

            case LuaFixTags.StopPrice:
                getCondition().StopPrice = reader.ReadDecimal();
                return(true);

            case LuaFixTags.StopLimitPrice:
                getCondition().StopLimitPrice = reader.ReadDecimal();
                return(true);

            case LuaFixTags.IsMarketStopLimit:
                getCondition().IsMarketStopLimit = reader.ReadBool();
                return(true);

            case LuaFixTags.ActiveTimeFrom:
                if (getCondition().ActiveTime == null)
                {
                    getCondition().ActiveTime = new Range <DateTimeOffset>();
                }

                getCondition().ActiveTime.Min = reader.ReadDateTime(dateTimeParser).ToDateTimeOffset(timeZone);
                return(true);

            case LuaFixTags.ActiveTimeTo:
                if (getCondition().ActiveTime == null)
                {
                    getCondition().ActiveTime = new Range <DateTimeOffset>();
                }

                getCondition().ActiveTime.Max = reader.ReadDateTime(dateTimeParser).ToDateTimeOffset(timeZone);
                return(true);

            case LuaFixTags.ConditionOrderId:
                getCondition().ConditionOrderId = reader.ReadLong();
                return(true);

            case LuaFixTags.ConditionOrderPartiallyMatched:
                getCondition().ConditionOrderPartiallyMatched = reader.ReadBool();
                return(true);

            case LuaFixTags.ConditionOrderUseMatchedBalance:
                getCondition().ConditionOrderUseMatchedBalance = reader.ReadBool();
                return(true);

            case LuaFixTags.LinkedOrderPrice:
                getCondition().LinkedOrderPrice = reader.ReadDecimal();
                return(true);

            case LuaFixTags.Offset:
                getCondition().Offset = reader.ReadString().ToUnit();
                return(true);

            case LuaFixTags.StopSpread:
                getCondition().Spread = reader.ReadString().ToUnit();
                return(true);

            case LuaFixTags.IsMarketTakeProfit:
                getCondition().IsMarketTakeProfit = reader.ReadBool();
                return(true);

            default:
                return(false);
            }
        }
Esempio n. 4
0
        public static void WriteOrderCondition(this IFixWriter writer, QuikOrderCondition condition, FastDateTimeParser dateTimeParser)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            if (condition == null)
            {
                throw new ArgumentNullException(nameof(condition));
            }

            if (condition.Type != null)
            {
                writer.Write((FixTags)LuaFixTags.Type);
                writer.Write((int)condition.Type.Value);
            }

            if (condition.StopPriceCondition != null)
            {
                writer.Write((FixTags)LuaFixTags.StopPriceCondition);
                writer.Write((int)condition.StopPriceCondition.Value);
            }

            if (condition.ConditionOrderSide != null)
            {
                writer.Write((FixTags)LuaFixTags.ConditionOrderSide);
                writer.Write((int)condition.ConditionOrderSide.Value);
            }

            if (condition.LinkedOrderCancel != null)
            {
                writer.Write((FixTags)LuaFixTags.LinkedOrderCancel);
                writer.Write(condition.LinkedOrderCancel.Value);
            }

            if (condition.Result != null)
            {
                writer.Write((FixTags)LuaFixTags.Result);
                writer.Write((int)condition.Result.Value);
            }

            if (condition.OtherSecurityId != null)
            {
                writer.Write((FixTags)LuaFixTags.OtherSecurityCode);
                writer.Write(condition.OtherSecurityId.Value.SecurityCode);
            }

            if (condition.StopPrice != null)
            {
                writer.Write((FixTags)LuaFixTags.StopPrice);
                writer.Write(condition.StopPrice.Value);
            }

            if (condition.StopLimitPrice != null)
            {
                writer.Write((FixTags)LuaFixTags.StopLimitPrice);
                writer.Write(condition.StopLimitPrice.Value);
            }

            if (condition.IsMarketStopLimit != null)
            {
                writer.Write((FixTags)LuaFixTags.IsMarketStopLimit);
                writer.Write(condition.IsMarketStopLimit.Value);
            }

            if (condition.ActiveTime != null)
            {
                writer.Write((FixTags)LuaFixTags.ActiveTimeFrom);
                writer.Write(condition.ActiveTime.Min.UtcDateTime, dateTimeParser);

                writer.Write((FixTags)LuaFixTags.ActiveTimeTo);
                writer.Write(condition.ActiveTime.Max.UtcDateTime, dateTimeParser);
            }

            if (condition.ConditionOrderId != null)
            {
                writer.Write((FixTags)LuaFixTags.ConditionOrderId);
                writer.Write(condition.ConditionOrderId.Value);
            }

            if (condition.ConditionOrderPartiallyMatched != null)
            {
                writer.Write((FixTags)LuaFixTags.ConditionOrderPartiallyMatched);
                writer.Write(condition.ConditionOrderPartiallyMatched.Value);
            }

            if (condition.ConditionOrderUseMatchedBalance != null)
            {
                writer.Write((FixTags)LuaFixTags.ConditionOrderUseMatchedBalance);
                writer.Write(condition.ConditionOrderUseMatchedBalance.Value);
            }

            if (condition.LinkedOrderPrice != null)
            {
                writer.Write((FixTags)LuaFixTags.LinkedOrderPrice);
                writer.Write(condition.LinkedOrderPrice.Value);
            }

            if (condition.Offset != null)
            {
                writer.Write((FixTags)LuaFixTags.Offset);
                writer.Write(condition.Offset.ToString());
            }

            if (condition.Spread != null)
            {
                writer.Write((FixTags)LuaFixTags.StopSpread);
                writer.Write(condition.Spread.ToString());
            }

            if (condition.IsMarketTakeProfit != null)
            {
                writer.Write((FixTags)LuaFixTags.IsMarketTakeProfit);
                writer.Write(condition.IsMarketTakeProfit.Value);
            }
        }