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