Skip to content

Commit

Permalink
Version 1.04
Browse files Browse the repository at this point in the history
  • Loading branch information
altmany committed Jan 1, 2020
1 parent 8de8d17 commit eeea684
Show file tree
Hide file tree
Showing 7 changed files with 221 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/.ignore
*.txt
*.asv
*~
*.mex*
*.zip
29 changes: 29 additions & 0 deletions DISCLAIMER
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
THIS SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR
IMPLIED, INCLUDING BUT NOT LIMITED TO, THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT.

THIS SOFTWARE IS NOT OFFICIALLY APPROVED OR ENDORSED BY ANY REGULATORY,
GOVERNING OR COMMERCIAL BODY, INCLUDING SEC, FINRA, MATHWORKS AND/OR DTN.

MUCH EFFORT WAS INVESTED TO ENSURE THE CORRECTNESS, ACCURACY AND USEFULNESS OF
THE INFORMATION PRESENTED IN THIS DOCUMENT AND THE SOFTWARE. HOWEVER, THERE IS
NEITHER A GUARANTEE THAT THE INFORMATION IS COMPLETE OR ERROR-FREE, NOR THAT
IT MEETS THE USER’S NEEDS. THE AUTHOR AND COPYRIGHT HOLDERS TAKE ABSOLUTELY NO
RESPONSIBILITY FOR POSSIBLE CONSEQUENCES DUE TO THIS DOCUMENT OR USE OF THE SOFTWARE.

THE FUNCTIONALITY OF THE SOFTWARE DEPENDS, IN PART, ON THE FUNCTIONALITY OF OTHER
SOFTWARE, HARDWARE, SYSTEMS AND SERVICES BEYOND OUR CONTROL. SUCH EXTERNAL
COMPONENTS MAY CHANGE OR STOP TO FUNCTION AT ANY TIME, WITHOUT PRIOR NOTICE AND
WITHOUT OUR CONTROL. THEREFORE, THERE CAN BE NO ASSURANCE THAT THE SOFTWARE WOULD
WORK, AS EXPECTED OR AT ALL, AT ANY GIVEN TIME. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, LOSS, OR OTHER LIABILITY,
WHETHER IN ACTION OF CONTRACT OR OTHERWISE, ARISING FROM, OUT OF, OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE,
REGARDLESS OF FORM OF CLAIM OR WHETHER THE AUTHORS WERE ADVISED OF SUCH LIABILITIES.

WHEN USING THIS DOCUMENT AND SOFTWARE, USERS MUST VERIFY THE BEHAVIOR CAREFULLY ON
THEIR SYSTEM BEFORE USING THE SAME FUNCTIONALITY FOR LIVE TRADES. USERS SHOULD
EITHER USE THIS DOCUMENT AND SOFTWARE AT THEIR OWN RISK, OR NOT AT ALL.

ALL TRADING SYMBOLS AND TRADING ORDERS DISPLAYED IN THE DOCUMENTATION ARE FOR
ILLUSTRATIVE PURPOSES ONLY AND ARE NOT INTENDED TO PORTRAY A TRADING RECOMMENDATION.
68 changes: 68 additions & 0 deletions EODML.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
function [data, errMsg] = EODML(action, parameters, varargin) %#ok
%EODML - Get historic or real-time market data from eodhistoricaldata.com
%
% Syntax: [data, errMsg] = EODML(action, paramName1,paramValue1, paramName2,paramValue2, ...)
%
% Inputs:
%
% action (String) - one of: license,limits,version,update,revert,doc,prices,fundamentals,technicals,options,dividends,splits,earnings,shorts,ipo,lookup
%
% parameters - Matlab struct or XLS filename or parameter name/value pairs with the following optional parameters:
%
% General:
% API_Token (String) default=''; provided to you by eodhistoricaldata.com
% Timeout (Number) default=5; max # of seconds to wait for a query response (0=infinite)
% UseParallel (Logical) default=0 or false; if true or 1, the query will be parallelized (Analyst/Pro license only)
% Debug (Logical) default=0 or false; if true or 1, extra data will be displayed in Matlab console
% RaiseErrorMsgs (Logical) default=1 or true; if false or 0, errors set the errMsg output arg, rather than raise an error
%
% Prices:
% DataType (String) default='day'; one of 'day','week','month','live'
% Symbols (String :-delimited or cell-array) default=''; e.g., 'IBM' or 'IBM:GOOG' or {'IBM','GOOG'}
% SecType (String) default='equity'; one of 'equity','index','bond'
% Order (String) default='asc'; either 'asc' or 'desc'
% FromDate (Integer or String) default=[]; earliest data date
% ToDate (Integer or String) default=[]; latest data date
%
% Fundamentals:
% Symbols (String :-delimited or cell-array) default=''; e.g., 'IBM' or 'IBM:GOOG' or {'IBM','GOOG'}
% SecType (String) default='equity'; one of 'equity','index','bond'
%
% Splits,Dividends,Earnings,Shorts:
% Symbols (String :-delimited or cell-array) default=''; e.g., 'IBM' or 'IBM:GOOG' or {'IBM','GOOG'}
% FromDate (Integer or String) default=[]; earliest data date
% ToDate (Integer or String) default=[]; latest data date
%
% Technicals:
% Symbols (String :-delimited or cell-array) default=''; e.g., 'IBM' or 'IBM:GOOG' or {'IBM','GOOG'}
% FromDate (Integer or String) default=[]; earliest data date
% ToDate (Integer or String) default=[]; latest data date
% Function (String) default='SMA'; one of 'SMA','EMA','WMA','RSI','AvgVol','SplitAdjusted'
% Period (Number) default=50; number of data points used to calculate the function (2-100k)
%
% Options:
% Symbols (String :-delimited or cell-array) default=''; e.g., 'IBM' or 'IBM:GOOG' or {'IBM','GOOG'}
% FromExpiryDate (Integer or String) default=[]; earliest data date
% ToExpiryDate (Integer or String) default=[]; latest data date
% FromTradeDate (Integer or String) default=[]; earliest data date
% ToTradeDate (Integer or String) default=[]; latest data date
%
% IPO:
% FromDate (Integer or String) default=[]; earliest data date
% ToDate (Integer or String) default=[]; latest data date
%
% Lookup:
% Symbol (String) default=''; e.g., 'IBM'
% DataType (String) default='symbol'; either 'symbol' or 'exchange'
%
% Refer to the User Guide for detailed documentation and usage examples.
%
% THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
% TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT
% OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
%
% Copyright (c) Yair Altman, Octahedron Ltd. (info @ undocumentedmatlab.com)
%
% EODML webpage: https://UndocumentedMatlab.com/EODML
% EOD webpage: https://eodhistoricaldata.com/r/?ref=OX6LJ2BE
Binary file added EODML.p
Binary file not shown.
Binary file added EODML_License_Agreement.pdf
Binary file not shown.
45 changes: 45 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
EODML Software License Agreement

This Software License Agreement (“Agreement”) is entered into by and between Octahedron Ltd., 25 Ein Shemesh Street, Ganey Tikva 55900 Israel, (“Licensor”) and you (“Licensee).

WHEREAS Licensor is the owner of the Licensed Software known as “EODML”;
WHEREAS Licensee desires that Licensor grant to Licensee a license in respect of the Licensed Software and Licensor is willing to grant such a license.

NOW, THEREFORE, the Parties mutually agree as follows:

1. Definitions
1.1 “Intellectual Property Rights” means all intellectual property rights worldwide including, without limitation, all (i) patents, patent applications and patent rights; (ii) rights associated with works of authorship including copyrights, copyright applications, copyright registrations, mask work rights applications and registrations; (iii) rights relating to the protection of trade secrets and confidential information;
1.2 “Affiliate” means any entity to any degree owned or controlled by either Party.
1.3 “Licensee Parties” means Licensee, his Affiliates and their respective shareholders, directors, officers, employees and agents.
1.4 “Licensed Software” means software and related material developed by Licensor for the purpose of delivery of information on financial securities from EODHistoricalData, including without limitation, all source code, object code, techniques, documentation, or similar material related thereto, all updates, upgrades, derivations and modifications to any of the foregoing, and all Intellectual Property Rights related thereto.
1.5 “Licensor Parties” means Licensor, his Affiliates and their respective shareholders, directors, officers, employees and agents.

2. License
2.1 Grant of License. Subject to the terms and conditions of this Agreement, Licensor hereby grants to Licensee and his Affiliates a worldwide, irrevocable, non-exclusive, non-transferable right and license to install, store, use, and copy, the Licensed Software for a single year, on any single computer of the Licensee’s choice, without restriction as to purpose(s), or method(s) by which Licensee exercises any rights granted hereunder.
2.2 All Other Rights are Reserved. All rights not granted to Licensee hereunder are reserved to Licensor and, except as expressly provided in this Agreement, no other right or license is to be implied by or inferred from any provision of this Agreement or by the conduct of the Parties. Subject only to the Licensor’s explicit commitments contained herein, nothing shall limit or restrict the Licensor’s right to use, sell, lease, license, transfer or otherwise grant or dispose of Licensed Software, in whole or in part, itself or to or through any other person, company, or entity and whether or not the exercise of such right might compete with any Licensee product or service.
2.3 Limitations of License. Notwithstanding the above, Licensee may not (a) modify, translate, decompile, disassemble, or reverse engineer the Licensed Software; (b) publish or provide the Licensed Software to any third party without prior written consent from Licensor; (c) rent, lease, grant a security interest in, or otherwise transfer rights to the Licensed Software.

3. License Fee.
3.1 In consideration for the license granted in Section 2.1, Licensee shall pay Licensor the fee specified on the Licensed Software’s product page (http://UndocumentedMatlab.com/EODML) at the time of License purchase, such fee being subject to change from time to time without prior notice.
3.2 Notwithstanding the above, Licensor waives the license fee for Licensee usage of the license during a single period of up to 30 calendar days ("Trial Period").

4. Ownership
4.1 Acknowledgement of Ownership. Licensee, on behalf of himself, his Affiliates and their respective successors and assigns, agrees and acknowledges that the Licensed Software, including any copyright, patent, trade secret, trademark, trade name or other intellectual property right, is the sole and exclusive property of Licensor.
4.2 Confidentiality. Licensee, on behalf of himself, his Affiliates and their respective successors and assigns, agrees and acknowledges that the Licensed Software shall not be publically distributed or made available to any external party by any means, either electronically or otherwise. Licensee agrees to keep adequate reasonable means to keep the Licensed Software confidential.

5. Assignment
5.1 Assignment by Licensee. Licensee, his Affiliates and each of their permitted assigns may assign any or all of their rights or delegate any or all of their duties under this Agreement to an Affiliate or to an employer of Licensee.
5.2 Assignment by Licensors. Licensor may sell, assign, or otherwise transfer this Agreement, the Licensed Software, or any rights hereunder to its Affiliate or any third party, provided that: (a) Licensor provides such Affiliate or third party with prior notice of the existence of this Agreement; and (b) such Affiliate or third party agrees to be bound by the terms and conditions, including all licenses and covenants set forth in this Agreement.

6. Relationship between Licensor and Licensee. Licensor’s relationship with Licensee will be that of an independent contractor, and nothing in this Agreement should be construed to create a partnership, joint venture, or employer-employee relationship. Neither Licensor nor Licensee (a) is an agent of the other party; (b) is not authorized to make any representation, contract, or commitment on behalf of the other party; (c) will not be entitled to any of the benefits that other party makes available to its employees, and waives the right to receive any such benefits.

7. LIMITATION OF LIABILITY. THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND/OR NONINFRINGEMENT.
THERE IS NEITHER GUARANTEE THAT THE SOFTWARE IS COMPLETE OR ERROR-FREE, NOR THAT IT MEETS THE USER’S NEEDS, NOR THAT IT WILL WORK AS EXPECTED, OR AT ALL, AT ANY GIVEN TIME OR SETUP.
LICENSEE MUST VERIFY THE BEHAVIOR CAREFULLY BEFORE USING THIS SOFTWARE FOR LIVE TRADES, AND MUST EITHER USE THIS SOFTWARE AT THEIR OWN RISK, OR NOT AT ALL.
LICENSOR TAKES ABSOLUTELY NO RESPONSIBILITY FOR POSSIBLE CONSEQUENCES DUE TO USE OF THE SOFTWARE. IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY CLAIM, DAMAGES, LOSS, OR OTHER LIABILITY, WHETHER IN ACTION OF CONTRACT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE LICENSED SOFTWARE, OR THE USE OR OTHER DEALINGS IN THE LICENSED SOFTWARE, REGARDLESS OF FORM OF CLAIM OR WHETHER LICENSOR WAS ADVISED OF SUCH LIABILITIES.
ALL TRADING SYMBOLS AND TRADING ORDERS DISPLAYED IN THE DOCUMENTATION ARE FOR ILLUSTRATIVE PURPOSES ONLY AND DO NOT PORTRAY A TRADING RECOMMENDATION.

8. Governing Law. This Agreement shall be governed by and construed in accordance with the laws of the State of Israel. Licensee consents to venue and jurisdiction in courts in the Tel Aviv District, Israel.

9. Entire Agreement. This Agreement constitutes the entire agreement between Licensee and Licensor and supersedes any prior agreement, whether oral or written, relating to the subject matter of this Agreement.
WHEREFORE, the Parties hereto acknowledge that they have read and understand this Agreement, voluntarily accept the duties and obligations set forth herein and each has executed or caused this Agreement to be executed by its duly authorized representative.
75 changes: 73 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,73 @@
# EODML
Matlab connector to EODHistoricalData
EODML
=====

A toolbox for connecting MATLAB to EODHistoricalData, to retrieve financial market data.

![EODML](https://undocumentedmatlab.com/images/EODML.png)

### Table of contents
* [Overview](#overview)
* [Main functionalities](#main-functionalities)
* [Additional program features](#additional-program-features)
* [Requirements](#requirements)
* [Compatibility](#compatibility)
* [Installation](#installation)
* [Disclaimer](#disclaimer)
* [Contact us](#contact-us)

### Overview
EODML is a Matlab connector to EODHistoricalData, enabling users to leverage Matlab’s superior analysis and visualization capabilities, with EODHistoricalData’s financial data-feed. EODML can be used for both automated algo-trading and selective manual trading, as well as continuous market data feed. EODML provides a reliable, easy-to-use Matlab interface to EODHistoricalData that works right out of the box, and was optimized for reliability, stability and compatibility.

This downloaded version is fully-functional and free for a full year. The free license has some restrictions on the query rate and does not include support. A paid license that enables increased query rate and includes support can be purchased on [EODML's webpage](https://undocumentedmatlab.com/EODML#Pricing).

### Main functionalities
Simple Matlab commands fetch market data from EODHistoricalData:
* Historic, intra-day and live (delayed) market data – OHLC bars, adjusted close and volume data
* Historic and upcoming splits, dividends, IPO, and earning events
* Historic basic technicals – SMA, EMA, WMA, RSI, AvgVol
* Historic short interests
* Symbols lookup – all listed symbols in a certain exchange, or all exchanges that list a certain symbol
* Option chains lookup – contract info, in/out of money, trade info, Greeks, implied volatility; grouped by expiration date
* Fundamental info – corporate info, shares stats or bond data, technicals, split/dividend events, ESG scores, earnings, financials
* Combine all of the above for a full-fledged end-to-end automated trading system using plain Matlab

### Additional program features
* **Full solution** – EODML provides easy-to-use access to EODHistoricalData’s entire data-set within Matlab. Only the core Matlab is required – no additional toolbox or component is required.
* **Stability** – EODML has been extensively tested. It is rock solid.
* **Easy to use** – Users can access EODHistoricalData’s data by simple Matlab commands, without need for any Matlab programming. EODML simplifies the EODHistoricalData API in a very easy-to-use yet powerful interface that can be used by any Matlab user, novice or advanced.
* **Novice and advanced users** – Users can use easy-to-use Matlab commands, to access EODHistoricalData’s data. Minimal or no programming is required to access this data.
* **Compatibility** – EODML works on all platforms where Matlab runs (Windows, Mac OS, Linux), using practically any recent Matlab release.
* **Security** – EODML does not transmit any information externally except to EODHistoricalData, so your trading information are as safe as your own computer.
* **Development** – EODML was developed by an acknowledged Matlab expert, who wrote the reference textbooks on Matlab-Java connectivity and Matlab performance, as well as the acclaimed [IB-Matlab connector](https://undocumentedmatlab.com/IB-Matlab) (Matlab connector to Interactive Brokers) and [IQML - Matlab connector to IQFeed](https://undocumentedmatlab.com/IQML). EODML is continuously improved and maintained.
* **Support** – Custom development and ongoing support is available directly from the developer, with extremely fast response times.
* **Backtesting** – EODML does not include backtesting functionality. EODML’s author (Yair Altman) has extensive experience in developing complete backtesting and real-time trading applications. Yair will be happy to either develop a new application based on your specifications, or to integrate EODML into an existing application, under a consulting contract.

### Requirements
EODML is a Matlab connector to EODHistoricalData, so it naturally needs the user to have both
* a locally-installed Matlab
* an EODHistoricalData token - you can get a free token [here](https://eodhistoricaldata.com/r/?ref=OX6LJ2BE&utm_source=referral&utm_medium=link&utm_campaign=EODML)

### Compatibility
* Platforms: EODML works on all platforms on which EODHistoricalData runs: Windows, Mac OS, Linux.
* Matlab: EODML works on all Matlab releases since 2008, including the latest release (R2020a).

### Installation
1. Download or clone EODML into a local folder on your computer (preferably a separate EODML folder)
2. Add the local folder to your Matlab path using the path tool (in the Matlab Desktop’s toolstrip, click HOME / ENVIRONMENT / Set path… and save). The folder needs to be in your Matlab path whenever you run EODML.
3. You can now run EODML within Matlab. To verify that EODML is properly installed, run the following command in your Matlab console:
```Matlab
>> limits = EODML('limits')
```
4. Read the usage examples on https://undocumentedmatlab.com/EODML/usage-examples

### Disclaimer
THIS SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, LOSS OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(A detailed disclaimer is available in [EODML’s License Agreement](https://undocumentedmatlab.com/files/EODML/EODML_License_Agreement.pdf), as well as in the separate [DISCLAIMER](https://github.com/altmany/EODML/blob/master/DISCLAIMER) file)

### Contact us
For additional information about EODML, please visit the product's webpage (https://undocumentedmatlab.com/EODML).

If you have any question or feedback, or need professional assistance in integrating EODML into your trading system, please email us (info@UndocumentedMatlab.com) and we will be happy to help.

![](https://undocumentedmatlab.com/images/choose_any_5_animated.gif)

0 comments on commit eeea684

Please sign in to comment.