* Adds Validate class in util with accompanying regular expressions
* Provides tests for NotificationEmail and Validate.EmailAddress
* Provides default values for NotificationEmail Subject and Message
These default values resolve the underlying issue of #3021 w/out
needing to modify external sources (such as impl of IMessagingHandler)
- `Futures` and `CFDs` sales value will use `ContractMultiplier` as the
rest of the securities.
- `FitnessScore` values will be truncated, not rounded, to 3 decimal places.
- Reducing code duplication for calculating the
`CompoundingAnnualPerformance`
Energy futures (CL, HO, RB, NG) expire in the month before the contract month.
To handle these properly, the following changes have been implemented:
- the AlgoSeekFuturesReader has been updated to create the future symbol with the correct expiry date
- the zip entry names in futures data files now contain the full expiry date (in addition to the contract month)
- the sample data files have been updated to use the new zip entry names
- new unit tests have been added and existing ones updated
- This commit is related to PR 19 in QC/pythonnet
- C# decimal will be cast to C# double and converted into python
float
- Adding new `decimal.py` into the python algorithm project. This is
required for backwards compatibility with users performing operations
over expected decimal types (like `Price`)
- Updating two python regression test algorithms using custom python
execution models to be aware and ignore floating point precision errors
when handling order sizing.
- `Composer` will scan the specified directory for binaries only once.
This gives a performance improvement:
- Regression tests execution times:
- `master`: 11:11
- `PR`: 9:56, 9:46
- Reverting the assert logic of a unit test
> We now have regression tests < 1 second as low as 0.5s!
This implements a finalizer to perform disposal.
Also adds ability to mark other objects for disposal when this instance
is disposed. This is useful for disposing, for example, a ZipFile that
was used to create the StreamReader instance.
Adds reference price to dividend/split
Adds GetSplitsAndDividends to FactorFile
Adds Apply methods to FactorFile/FactorFileRow
Updates factor files to include reference prices
Some algorithms had dependencies outside of the file that needed
to be copied into each project. The alternative here is to move
the Bitcoin and QuandlFuture type into Common\Data or similar
Instead of letting `PyObject.AsManagedObject` throw an exception because the types do not match, we check whether the target type is assignable from the python object type.
This PR fixes PR #2102 that caused a bug in Symbol[] convertion.
Unit tests were added to test all changes.
For now these tests are excluded from the Travis build because of occasional Yahoo server errors. In future they should be updated to read the Yahoo data from a local test file.
No point in reporting this error since that is the objective of this function.
Add test for swallowing ObjectDiposedException that verifies that DisposeSafely
returns true and doesn't invoke the error handler when the object being disposed
throws an ObjectDisposedException
The Crypto security can be modeled with both trades and quotes easily, therefore it is necessary to make sure that the LeanData, LeanDataWriter and associated BaseData.Reader() methods can read/write both Trades and Quotes.
Because cryptocurrencies can be either Trades or Quotes, the Crypto security type needs it's own switch statement in LeanData.GenerateLine. This produces non-scaled TradeBars or QuoteBarrs.
* Implements YahooDataDownloader and its unit tests
* Replaces Datetime.Parse() with new Datetime() in YahooDataDownloaderTests
* Updates GetMethod_WithReveseDate_ShouldThrowException to have reverse dates and Daily resolution.
* Adds braces where they were avoided
* Uses var keyword in files Historical.cs and Token.cs
This method takes a path and will return a Security and DateTime. This is useful in the ApiDataProvider that uses the api to retrieve files that are not present on disc. The IDataProvider only ha a path to the file. Using this method, the ApiDataProvider can extract the useful information from the path to communicate with the api.