diff --git a/.gitignore b/.gitignore index f2b32336d..0f29486b9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ build.properties logs/ +# Doxygen's and Sphinx's output. +docs/api/build + # Ignores compiled binary files. *.ex? diff --git a/Indicator.mqh b/Indicator.mqh index b31d0f058..98d453a4b 100644 --- a/Indicator.mqh +++ b/Indicator.mqh @@ -479,7 +479,9 @@ class Indicator : public Chart { /** * Returns currently selected data source without any validation. */ - Indicator* GetDataSourceRaw() { return iparams.GetDataSource(); } + Indicator* GetDataSourceRaw() { + return iparams.GetDataSource(); + } /** * Returns currently selected data source doing validation. diff --git a/Indicators/Indi_AppliedPrice.mqh b/Indicators/Indi_AppliedPrice.mqh index 08ce0ac2a..6552f5c92 100644 --- a/Indicators/Indi_AppliedPrice.mqh +++ b/Indicators/Indi_AppliedPrice.mqh @@ -50,8 +50,8 @@ class Indi_AppliedPrice : public Indicator { /** * Class constructor. */ - Indi_AppliedPrice(AppliedPriceParams &_params) : params(_params), Indicator((IndicatorParams)_params){}; - Indi_AppliedPrice() : Indicator(INDI_APPLIED_PRICE){}; + Indi_AppliedPrice(AppliedPriceParams &_params) : params(_params), Indicator((IndicatorParams)_params) {}; + Indi_AppliedPrice() : Indicator(INDI_APPLIED_PRICE) {}; static double iAppliedPriceOnIndicator(Indicator *_indi, ENUM_APPLIED_PRICE _applied_price, int _shift = 0) { double _ohlc[4]; @@ -68,14 +68,11 @@ class Indi_AppliedPrice : public Indicator { switch (params.idstype) { case IDATA_INDICATOR: if (HasDataSource()) { - // Future validation of GetDataSource() will check if we set mode for source indicator (e.g. for applied price - // of Indi_Price). + // Future validation of GetDataSource() will check if we set mode for source indicator (e.g. for applied price of Indi_Price). iparams.SetDataSourceMode(GetAppliedPrice()); } if (GetDataSource().GetParams().GetMaxModes() != 4) { - Print( - "Indi_AppliedPrice indicator may be used only with indicator that has at least 4 modes/buffers (O, H, L, " - "C)!"); + Print("Indi_AppliedPrice indicator may be used only with indicator that has at least 4 modes/buffers (O, H, L, C)!"); DebugBreak(); } _value = Indi_AppliedPrice::iAppliedPriceOnIndicator(GetDataSource(), GetAppliedPrice(), _shift); diff --git a/.Doxyfile b/docs/api/Doxyfile similarity index 66% rename from .Doxyfile rename to docs/api/Doxyfile index c14a606d0..8c6d16015 100644 --- a/.Doxyfile +++ b/docs/api/Doxyfile @@ -1,9 +1,10 @@ # Doxyfile 1.9.1 ALPHABETICAL_INDEX = YES -EXCLUDE = tests/ +EXCLUDE = ../../tests/ FILE_PATTERNS = *.h *.mq? GENERATE_HTML = YES GENERATE_XML = YES -OUTPUT_DIRECTORY = docs +INPUT = "../../" +OUTPUT_DIRECTORY = "build" PROJECT_NAME = EA31337 Framework RECURSIVE = YES diff --git a/docs/api/Doxyfile.in b/docs/api/Doxyfile.in new file mode 100644 index 000000000..30775f59f --- /dev/null +++ b/docs/api/Doxyfile.in @@ -0,0 +1,10 @@ +# Doxyfile 1.9.1 +ALPHABETICAL_INDEX = YES +EXCLUDE = ../../tests/ +FILE_PATTERNS = *.h *.mq? +GENERATE_HTML = YES +GENERATE_XML = YES +INPUT = "@DOXYGEN_INPUT_DIR@" +OUTPUT_DIRECTORY = "@DOXYGEN_OUTPUT_DIR@" +PROJECT_NAME = EA31337 Framework +RECURSIVE = YES diff --git a/docs/api/conf.py b/docs/api/conf.py new file mode 100644 index 000000000..ca0be1d5d --- /dev/null +++ b/docs/api/conf.py @@ -0,0 +1,87 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) +import sphinx_rtd_theme + +# -- Project information ----------------------------------------------------- + +project = 'EA31337 Framework' +copyright = '2021, EA31337 Ltd' +author = 'EA31337 Ltd' + +# The full version, including alpha/beta/rc tags +release = '1.0' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "breathe", + "sphinx.ext.autodoc" +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +import subprocess, os, sys +sys.path.insert(0, os.path.abspath('../')) + +def configureDoxyfile(input_dir, output_dir): + with open('Doxyfile.in', 'r') as file : + filedata = file.read() + + filedata = filedata.replace('@DOXYGEN_INPUT_DIR@', input_dir) + filedata = filedata.replace('@DOXYGEN_OUTPUT_DIR@', output_dir) + + with open('Doxyfile', 'w') as file: + file.write(filedata) + +# Check if we're running on Read the Docs' servers +read_the_docs_build = os.environ.get('READTHEDOCS', 'True') == 'True' + +breathe_projects = {} + +if read_the_docs_build: + input_dir = '../' + output_dir = 'build' + configureDoxyfile(input_dir, output_dir) + subprocess.call('doxygen', shell=True) + breathe_projects['EA31337 Framework'] = output_dir + '/xml' + +print(breathe_projects) +# ... + +breathe_default_project = "EA31337 Framework" diff --git a/docs/api/index.rst b/docs/api/index.rst new file mode 100644 index 000000000..b6b69c604 --- /dev/null +++ b/docs/api/index.rst @@ -0,0 +1,17 @@ +Docs +==== + +.. toctree:: + :maxdepth: 2 + +Indices and tables +================== +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +Classes +======= +.. autoclass:: AccountEntry + :members: + :undoc-members: diff --git a/tests/IndicatorsTest.mq5 b/tests/IndicatorsTest.mq5 index 19538fa8e..a48ce1b91 100644 --- a/tests/IndicatorsTest.mq5 +++ b/tests/IndicatorsTest.mq5 @@ -41,9 +41,9 @@ struct DataParamEntry; #include "../Indicators/Indi_ADXW.mqh" #include "../Indicators/Indi_AMA.mqh" #include "../Indicators/Indi_AO.mqh" +#include "../Indicators/Indi_AppliedPrice.mqh" #include "../Indicators/Indi_ATR.mqh" #include "../Indicators/Indi_Alligator.mqh" -#include "../Indicators/Indi_AppliedPrice.mqh" #include "../Indicators/Indi_BWMFI.mqh" #include "../Indicators/Indi_BWZT.mqh" #include "../Indicators/Indi_Bands.mqh"