Example #1
0
 /// <summary>
 /// Specifies the order in which positions are evaluated. Positions evaluated sooner are more likely to
 /// find matches than ones evaluated later. A good implementation for this is its stand-alone margin required,
 /// which would encourage the algorithm to match higher margin positions before matching lower margin positiosn.
 /// </summary>
 public OptionStrategyMatcherOptions WithPositionEnumerator(IOptionPositionCollectionEnumerator enumerator)
 {
     return(new OptionStrategyMatcherOptions(
                _definitions,
                MaximumCountPerLeg,
                MaximumDuration,
                MaximumSolutionCount,
                _definitionEnumerator,
                ObjectiveFunction,
                enumerator
                ));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="OptionStrategyMatcherOptions"/> class, providing
        /// options that control the behavior of the <see cref="OptionStrategyMatcher"/>
        /// </summary>
        public OptionStrategyMatcherOptions(
            IReadOnlyList <OptionStrategyDefinition> definitions,
            IReadOnlyList <int> maximumCountPerLeg,
            TimeSpan maximumDuration = default(TimeSpan),
            int maximumSolutionCount = 100,
            IOptionStrategyDefinitionEnumerator definitionEnumerator = null,
            IOptionStrategyMatchObjectiveFunction objectiveFunction  = null,
            IOptionPositionCollectionEnumerator positionEnumerator   = null
            )
        {
            if (maximumDuration == default(TimeSpan))
            {
                maximumDuration = Time.OneMinute;
            }

            if (definitionEnumerator == null)
            {
                // by default we want more complex option strategies to have matching priority
                definitionEnumerator = new DescendingByLegCountOptionStrategyDefinitionEnumerator();
            }

            if (objectiveFunction == null)
            {
                objectiveFunction = new UnmatchedPositionCountOptionStrategyMatchObjectiveFunction();
            }

            if (positionEnumerator == null)
            {
                positionEnumerator = new DefaultOptionPositionCollectionEnumerator();
            }

            _definitions          = definitions;
            MaximumDuration       = maximumDuration;
            ObjectiveFunction     = objectiveFunction;
            MaximumCountPerLeg    = maximumCountPerLeg;
            _positionEnumerator   = positionEnumerator;
            _definitionEnumerator = definitionEnumerator;
            MaximumSolutionCount  = maximumSolutionCount;
        }
Example #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OptionStrategyMatcherOptions"/> class, providing
        /// options that control the behavior of the <see cref="OptionStrategyMatcher"/>
        /// </summary>
        public OptionStrategyMatcherOptions(
            IReadOnlyList <OptionStrategyDefinition> definitions,
            IReadOnlyList <int> maximumCountPerLeg,
            TimeSpan maximumDuration = default(TimeSpan),
            int maximumSolutionCount = 100,
            IOptionStrategyDefinitionEnumerator definitionEnumerator = null,
            IOptionStrategyMatchObjectiveFunction objectiveFunction  = null,
            IOptionPositionCollectionEnumerator positionEnumerator   = null
            )
        {
            if (maximumDuration == default(TimeSpan))
            {
                maximumDuration = Time.OneMinute;
            }

            if (definitionEnumerator == null)
            {
                definitionEnumerator = new IdentityOptionStrategyDefinitionEnumerator();
            }

            if (objectiveFunction == null)
            {
                objectiveFunction = new UnmatchedPositionCountOptionStrategyMatchObjectiveFunction();
            }

            if (positionEnumerator == null)
            {
                positionEnumerator = new DefaultOptionPositionCollectionEnumerator();
            }

            _definitions          = definitions;
            MaximumDuration       = maximumDuration;
            ObjectiveFunction     = objectiveFunction;
            MaximumCountPerLeg    = maximumCountPerLeg;
            _positionEnumerator   = positionEnumerator;
            _definitionEnumerator = definitionEnumerator;
            MaximumSolutionCount  = maximumSolutionCount;
        }