623 lines
36 KiB
HTML
623 lines
36 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" data-bs-theme="light">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="Command-line tool for MetaTrader 5">
|
|
<meta name="author" content="dceoy">
|
|
<link rel="canonical" href="https://github.com/dceoy/mt5cli/">
|
|
<link rel="shortcut icon" href="img/favicon.ico">
|
|
<title>mt5cli API Documentation</title>
|
|
<link href="css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="css/fontawesome.min.css" rel="stylesheet">
|
|
<link href="css/brands.min.css" rel="stylesheet">
|
|
<link href="css/solid.min.css" rel="stylesheet">
|
|
<link href="css/v4-font-face.min.css" rel="stylesheet">
|
|
<link href="css/base.css" rel="stylesheet">
|
|
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
|
|
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
|
|
<link href="assets/_mkdocstrings.css" rel="stylesheet">
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
|
<script>hljs.highlightAll();</script>
|
|
</head>
|
|
|
|
<body class="homepage">
|
|
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
|
|
<div class="container">
|
|
<a class="navbar-brand" href=".">mt5cli API Documentation</a>
|
|
<!-- Expander button -->
|
|
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
|
|
<!-- Expanded navigation -->
|
|
<div id="navbar-collapse" class="navbar-collapse collapse">
|
|
<!-- Main navigation -->
|
|
<ul class="nav navbar-nav">
|
|
<li class="nav-item">
|
|
<a href="." class="nav-link active" aria-current="page">Home</a>
|
|
</li>
|
|
<li class="nav-item dropdown">
|
|
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">API Reference</a>
|
|
<ul class="dropdown-menu">
|
|
|
|
<li>
|
|
<a href="api/" class="dropdown-item">Overview</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="api/cli/" class="dropdown-item">CLI</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="api/sdk/" class="dropdown-item">SDK</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="api/trading/" class="dropdown-item">Trading</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="api/history/" class="dropdown-item">History Collection (SQLite)</a>
|
|
</li>
|
|
|
|
<li>
|
|
<a href="api/utils/" class="dropdown-item">Utils</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<ul class="nav navbar-nav ms-md-auto">
|
|
<li class="nav-item">
|
|
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
|
|
<i class="fa fa-search"></i> Search
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a rel="prev" class="nav-link disabled">
|
|
<i class="fa fa-arrow-left"></i> Previous
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a rel="next" href="api/" class="nav-link">
|
|
Next <i class="fa fa-arrow-right"></i>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a href="https://github.com/dceoy/mt5cli/edit/master/docs/index.md" class="nav-link">Edit on dceoy/mt5cli
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-3"><div class="navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggler collapsed" data-bs-toggle="collapse" data-bs-target="#toc-collapse" title="Table of Contents">
|
|
<span class="fa fa-angle-down"></span>
|
|
</button>
|
|
</div>
|
|
|
|
|
|
<div id="toc-collapse" class="navbar-collapse collapse card bg-body-tertiary">
|
|
<ul class="nav flex-column">
|
|
|
|
<li class="nav-item" data-bs-level="1"><a href="#mt5cli" class="nav-link">mt5cli</a>
|
|
<ul class="nav flex-column">
|
|
<li class="nav-item" data-bs-level="2"><a href="#overview" class="nav-link">Overview</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#features" class="nav-link">Features</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#installation" class="nav-link">Installation</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#programmatic-usage-sdk-usage" class="nav-link">Programmatic usage / SDK usage</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#quick-start" class="nav-link">Quick Start</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#commands" class="nav-link">Commands</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#global-options" class="nav-link">Global Options</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#requirements" class="nav-link">Requirements</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#api-reference" class="nav-link">API Reference</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#development" class="nav-link">Development</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
<li class="nav-item" data-bs-level="2"><a href="#license" class="nav-link">License</a>
|
|
<ul class="nav flex-column">
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div></div>
|
|
<div class="col-md-9" role="main">
|
|
|
|
<h1 id="mt5cli">mt5cli<a class="headerlink" href="#mt5cli" title="Permanent link">¶</a></h1>
|
|
<p>Command-line tool for MetaTrader 5 data export.</p>
|
|
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">¶</a></h2>
|
|
<p>mt5cli is a CLI application that exports MetaTrader 5 trading data to multiple file formats. It is built on top of <a href="https://github.com/dceoy/pdmt5">pdmt5</a>, a pandas-based data handler for MetaTrader 5.</p>
|
|
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li><strong>Multi-format export</strong>: CSV, JSON, Parquet, and SQLite3 output formats</li>
|
|
<li><strong>Auto-detection</strong>: Format detection from file extensions</li>
|
|
<li><strong>Comprehensive data access</strong>: Rates, ticks, account info, symbols, orders, positions, and trading history</li>
|
|
<li><strong>Flexible timeframes</strong>: Named timeframes (M1, H1, D1, etc.) and numeric values</li>
|
|
<li><strong>Connection management</strong>: Optional credentials, server, and timeout configuration</li>
|
|
<li><strong>SQLite rate loading</strong>: Load mt5cli-managed rate tables/views for offline workflows</li>
|
|
</ul>
|
|
<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">¶</a></h2>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>pip<span class="w"> </span>install<span class="w"> </span>mt5cli
|
|
</code></pre></div>
|
|
<h2 id="programmatic-usage-sdk-usage">Programmatic usage / SDK usage<a class="headerlink" href="#programmatic-usage-sdk-usage" title="Permanent link">¶</a></h2>
|
|
<p>mt5cli can be used as a small Python SDK for read-only MetaTrader 5 data collection. SDK functions return pandas DataFrames without writing files. Use <code>export_dataframe</code> or <code>export_dataframe_to_sqlite</code> when you need to persist results.</p>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">UTC</span><span class="p">,</span> <span class="n">datetime</span>
|
|
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
|
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
|
|
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="kn">from</span><span class="w"> </span><span class="nn">mt5cli</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
|
|
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="n">Mt5CliClient</span><span class="p">,</span>
|
|
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> <span class="n">collect_history</span><span class="p">,</span>
|
|
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="n">copy_rates_range</span><span class="p">,</span>
|
|
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="n">export_dataframe</span><span class="p">,</span>
|
|
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a> <span class="n">export_dataframe_to_sqlite</span><span class="p">,</span>
|
|
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a> <span class="n">load_rate_data</span><span class="p">,</span>
|
|
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> <span class="n">minimum_margins</span><span class="p">,</span>
|
|
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a> <span class="n">recent_ticks</span><span class="p">,</span>
|
|
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="p">)</span>
|
|
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="kn">from</span><span class="w"> </span><span class="nn">mt5cli.history</span><span class="w"> </span><span class="kn">import</span> <span class="n">resolve_rate_view_name</span>
|
|
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a>
|
|
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="c1"># One-off fetch with module-level helpers</span>
|
|
<a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="n">rates</span> <span class="o">=</span> <span class="n">copy_rates_range</span><span class="p">(</span>
|
|
<a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a> <span class="s2">"EURUSD"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a> <span class="n">timeframe</span><span class="o">=</span><span class="s2">"H1"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a> <span class="n">date_from</span><span class="o">=</span><span class="s2">"2024-01-01"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a> <span class="n">date_to</span><span class="o">=</span><span class="s2">"2024-02-01"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="p">)</span>
|
|
<a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="n">export_dataframe</span><span class="p">(</span><span class="n">rates</span><span class="p">,</span> <span class="n">Path</span><span class="p">(</span><span class="s2">"rates.csv"</span><span class="p">),</span> <span class="s2">"csv"</span><span class="p">)</span>
|
|
<a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a>
|
|
<a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="c1"># Resolve SQLite rate compatibility views for downstream tools</span>
|
|
<a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="n">view</span> <span class="o">=</span> <span class="n">resolve_rate_view_name</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="s2">"history.db"</span><span class="p">),</span> <span class="s2">"EURUSD"</span><span class="p">,</span> <span class="s2">"M1"</span><span class="p">,</span> <span class="n">require_existing</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<a id="__codelineno-1-27" name="__codelineno-1-27" href="#__codelineno-1-27"></a><span class="n">offline_rates</span> <span class="o">=</span> <span class="n">load_rate_data</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="s2">"history.db"</span><span class="p">),</span> <span class="n">view</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span>
|
|
<a id="__codelineno-1-28" name="__codelineno-1-28" href="#__codelineno-1-28"></a>
|
|
<a id="__codelineno-1-29" name="__codelineno-1-29" href="#__codelineno-1-29"></a><span class="c1"># Recent tick window and minimum margin summary</span>
|
|
<a id="__codelineno-1-30" name="__codelineno-1-30" href="#__codelineno-1-30"></a><span class="n">ticks</span> <span class="o">=</span> <span class="n">recent_ticks</span><span class="p">(</span><span class="s2">"EURUSD"</span><span class="p">,</span> <span class="n">seconds</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span>
|
|
<a id="__codelineno-1-31" name="__codelineno-1-31" href="#__codelineno-1-31"></a><span class="n">margins</span> <span class="o">=</span> <span class="n">minimum_margins</span><span class="p">(</span><span class="s2">"EURUSD"</span><span class="p">)</span>
|
|
<a id="__codelineno-1-32" name="__codelineno-1-32" href="#__codelineno-1-32"></a>
|
|
<a id="__codelineno-1-33" name="__codelineno-1-33" href="#__codelineno-1-33"></a><span class="c1"># Reuse one MT5 connection for multiple calls</span>
|
|
<a id="__codelineno-1-34" name="__codelineno-1-34" href="#__codelineno-1-34"></a><span class="k">with</span> <span class="n">Mt5CliClient</span><span class="p">(</span><span class="n">login</span><span class="o">=</span><span class="mi">12345</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="s2">"secret"</span><span class="p">,</span> <span class="n">server</span><span class="o">=</span><span class="s2">"Broker-Demo"</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
|
|
<a id="__codelineno-1-35" name="__codelineno-1-35" href="#__codelineno-1-35"></a> <span class="n">account</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">account_info</span><span class="p">()</span>
|
|
<a id="__codelineno-1-36" name="__codelineno-1-36" href="#__codelineno-1-36"></a> <span class="n">positions</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">positions</span><span class="p">()</span>
|
|
<a id="__codelineno-1-37" name="__codelineno-1-37" href="#__codelineno-1-37"></a> <span class="n">latest</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">latest_rates</span><span class="p">(</span><span class="s2">"EURUSD"</span><span class="p">,</span> <span class="s2">"M1"</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span>
|
|
<a id="__codelineno-1-38" name="__codelineno-1-38" href="#__codelineno-1-38"></a> <span class="n">summary</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">mt5_summary</span><span class="p">()</span>
|
|
<a id="__codelineno-1-39" name="__codelineno-1-39" href="#__codelineno-1-39"></a> <span class="n">summary_table</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">mt5_summary_as_df</span><span class="p">()</span>
|
|
<a id="__codelineno-1-40" name="__codelineno-1-40" href="#__codelineno-1-40"></a>
|
|
<a id="__codelineno-1-41" name="__codelineno-1-41" href="#__codelineno-1-41"></a><span class="c1"># Bulk SQLite collection (same behavior as the collect-history CLI command)</span>
|
|
<a id="__codelineno-1-42" name="__codelineno-1-42" href="#__codelineno-1-42"></a><span class="n">collect_history</span><span class="p">(</span>
|
|
<a id="__codelineno-1-43" name="__codelineno-1-43" href="#__codelineno-1-43"></a> <span class="n">Path</span><span class="p">(</span><span class="s2">"history.db"</span><span class="p">),</span>
|
|
<a id="__codelineno-1-44" name="__codelineno-1-44" href="#__codelineno-1-44"></a> <span class="n">symbols</span><span class="o">=</span><span class="p">[</span><span class="s2">"EURUSD"</span><span class="p">,</span> <span class="s2">"GBPUSD"</span><span class="p">],</span>
|
|
<a id="__codelineno-1-45" name="__codelineno-1-45" href="#__codelineno-1-45"></a> <span class="n">date_from</span><span class="o">=</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2024</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">tzinfo</span><span class="o">=</span><span class="n">UTC</span><span class="p">),</span>
|
|
<a id="__codelineno-1-46" name="__codelineno-1-46" href="#__codelineno-1-46"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2024</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">tzinfo</span><span class="o">=</span><span class="n">UTC</span><span class="p">),</span>
|
|
<a id="__codelineno-1-47" name="__codelineno-1-47" href="#__codelineno-1-47"></a> <span class="n">timeframe</span><span class="o">=</span><span class="s2">"M1"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-48" name="__codelineno-1-48" href="#__codelineno-1-48"></a> <span class="n">flags</span><span class="o">=</span><span class="s2">"ALL"</span><span class="p">,</span>
|
|
<a id="__codelineno-1-49" name="__codelineno-1-49" href="#__codelineno-1-49"></a> <span class="n">with_views</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<a id="__codelineno-1-50" name="__codelineno-1-50" href="#__codelineno-1-50"></a><span class="p">)</span>
|
|
</code></pre></div>
|
|
<p>Timeframes, tick flags, and ISO 8601 date strings are accepted wherever noted in the SDK API.</p>
|
|
<p><code>Mt5CliClient.mt5_summary()</code> returns the SDK structured form as plain nested Python values. Use <code>Mt5CliClient.mt5_summary_as_df()</code> when you need a one-row DataFrame for export. The <code>mt5-summary</code> CLI command uses this tabular form, so nested terminal/account fields are JSON-encoded strings that are safe for CSV, JSON, Parquet, and SQLite output.</p>
|
|
<h2 id="quick-start">Quick Start<a class="headerlink" href="#quick-start" title="Permanent link">¶</a></h2>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="c1"># Export account information to CSV</span>
|
|
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>mt5cli<span class="w"> </span>-o<span class="w"> </span>account.csv<span class="w"> </span>account-info
|
|
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>
|
|
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="c1"># Export EURUSD M1 rates to Parquet</span>
|
|
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>mt5cli<span class="w"> </span>-o<span class="w"> </span>rates.parquet<span class="w"> </span>rates-from<span class="w"> </span>--symbol<span class="w"> </span>EURUSD<span class="w"> </span>--timeframe<span class="w"> </span>M1<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="w"> </span>--date-from<span class="w"> </span><span class="m">2024</span>-01-01<span class="w"> </span>--count<span class="w"> </span><span class="m">1000</span>
|
|
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a>
|
|
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a><span class="c1"># Export ticks to JSON</span>
|
|
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a>mt5cli<span class="w"> </span>-o<span class="w"> </span>ticks.json<span class="w"> </span>ticks-from<span class="w"> </span>--symbol<span class="w"> </span>EURUSD<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="w"> </span>--date-from<span class="w"> </span><span class="m">2024</span>-01-01<span class="w"> </span>--count<span class="w"> </span><span class="m">500</span><span class="w"> </span>--flags<span class="w"> </span>ALL
|
|
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a>
|
|
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a><span class="c1"># Export symbols to SQLite3 with custom table name</span>
|
|
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a>mt5cli<span class="w"> </span>-o<span class="w"> </span>data.db<span class="w"> </span>--table<span class="w"> </span>symbols<span class="w"> </span>symbols<span class="w"> </span>--group<span class="w"> </span><span class="s2">"*USD*"</span>
|
|
<a id="__codelineno-2-14" name="__codelineno-2-14" href="#__codelineno-2-14"></a>
|
|
<a id="__codelineno-2-15" name="__codelineno-2-15" href="#__codelineno-2-15"></a><span class="c1"># Export with connection credentials</span>
|
|
<a id="__codelineno-2-16" name="__codelineno-2-16" href="#__codelineno-2-16"></a>mt5cli<span class="w"> </span>--login<span class="w"> </span><span class="m">12345</span><span class="w"> </span>--password<span class="w"> </span>mypass<span class="w"> </span>--server<span class="w"> </span>MyBroker-Demo<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-2-17" name="__codelineno-2-17" href="#__codelineno-2-17"></a><span class="w"> </span>-o<span class="w"> </span>positions.csv<span class="w"> </span>positions
|
|
</code></pre></div>
|
|
<h2 id="commands">Commands<a class="headerlink" href="#commands" title="Permanent link">¶</a></h2>
|
|
<h3 id="rates">Rates<a class="headerlink" href="#rates" title="Permanent link">¶</a></h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Command</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>rates-from</code></td>
|
|
<td>Export rates from a start date</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rates-from-pos</code></td>
|
|
<td>Export rates from a start position</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>latest-rates</code></td>
|
|
<td>Export latest rates</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rates-range</code></td>
|
|
<td>Export rates for a date range</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3 id="ticks">Ticks<a class="headerlink" href="#ticks" title="Permanent link">¶</a></h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Command</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>ticks-from</code></td>
|
|
<td>Export ticks from a start date</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>ticks-range</code></td>
|
|
<td>Export ticks for a date range</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>ticks-recent</code></td>
|
|
<td>Export ticks from a trailing window</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3 id="information">Information<a class="headerlink" href="#information" title="Permanent link">¶</a></h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Command</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>account-info</code></td>
|
|
<td>Export account information</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>terminal-info</code></td>
|
|
<td>Export terminal information</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>version</code></td>
|
|
<td>Export MetaTrader 5 version information</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>last-error</code></td>
|
|
<td>Export the last error information</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>symbols</code></td>
|
|
<td>Export symbol list</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>symbol-info</code></td>
|
|
<td>Export symbol details</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>symbol-info-tick</code></td>
|
|
<td>Export the last tick for a symbol</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>minimum-margins</code></td>
|
|
<td>Export minimum-volume margin summary</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>market-book</code></td>
|
|
<td>Export market depth (order book)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h3 id="trading">Trading<a class="headerlink" href="#trading" title="Permanent link">¶</a></h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Command</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>orders</code></td>
|
|
<td>Export active orders</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>positions</code></td>
|
|
<td>Export open positions</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>history-orders</code></td>
|
|
<td>Export historical orders</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>history-deals</code></td>
|
|
<td>Export historical deals</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>recent-history-deals</code></td>
|
|
<td>Export historical deals from a trailing window</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>mt5-summary</code></td>
|
|
<td>Export terminal/account status summary</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>order-check</code></td>
|
|
<td>Check funds sufficiency for a trade request</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>order-send</code></td>
|
|
<td>Send a trade request to the trade server (<code>--yes</code> required)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>Use <code>order-check</code> to validate a request payload before running <code>order-send --yes</code>.</p>
|
|
<h3 id="bulk-collection">Bulk Collection<a class="headerlink" href="#bulk-collection" title="Permanent link">¶</a></h3>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Command</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>collect-history</code></td>
|
|
<td>Collect rates, ticks, history-orders, and history-deals for one or more symbols into a single SQLite database (optional cash-event/position views)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>mt5cli<span class="w"> </span>-o<span class="w"> </span>history.db<span class="w"> </span>collect-history<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="w"> </span>--symbol<span class="w"> </span>EURUSD<span class="w"> </span>--symbol<span class="w"> </span>GBPUSD<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span>--date-from<span class="w"> </span><span class="m">2024</span>-01-01<span class="w"> </span>--date-to<span class="w"> </span><span class="m">2024</span>-02-01<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span>--dataset<span class="w"> </span>rates<span class="w"> </span>--dataset<span class="w"> </span>history-deals<span class="w"> </span><span class="se">\</span>
|
|
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span>--timeframe<span class="w"> </span>M1<span class="w"> </span>--flags<span class="w"> </span>ALL<span class="w"> </span>--if-exists<span class="w"> </span>append<span class="w"> </span>--with-views
|
|
</code></pre></div>
|
|
<p><code>collect-history</code> options:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th>Default</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>--symbol/-s</code></td>
|
|
<td><em>required</em></td>
|
|
<td>Symbol to collect (repeat for multiple).</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--date-from</code></td>
|
|
<td><em>required</em></td>
|
|
<td>Start date in ISO 8601.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--date-to</code></td>
|
|
<td><em>required</em></td>
|
|
<td>End date in ISO 8601.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--dataset</code></td>
|
|
<td>all four</td>
|
|
<td>Repeatable: <code>rates</code>, <code>ticks</code>, <code>history-orders</code>, <code>history-deals</code>.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--timeframe</code></td>
|
|
<td><code>M1</code></td>
|
|
<td>Rates timeframe; recorded in a <code>timeframe</code> column on the <code>rates</code> table.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--flags</code></td>
|
|
<td><code>ALL</code></td>
|
|
<td>Tick copy flags forwarded to <code>copy_ticks_range</code>.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--if-exists</code></td>
|
|
<td><code>fail</code></td>
|
|
<td><code>append</code>, <code>replace</code>, or <code>fail</code> when a target table already exists.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--with-views</code></td>
|
|
<td>off</td>
|
|
<td>Add <code>cash_events</code> and <code>positions_reconstructed</code> views (requires the <code>history-deals</code> dataset).</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>History orders and deals are fetched per symbol and concatenated, so the symbol filter is applied consistently across all datasets. The <code>cash_events</code> view is derived from symbol-filtered <code>history_deals</code>, so account-level cash events with empty or non-matching symbols may be excluded. The <code>positions_reconstructed</code> view excludes positions with no closing deal, uses volume-weighted open/close prices, and reports reversal deals (<code>DEAL_ENTRY_INOUT</code>) via <code>volume_reversal</code> / <code>reversal_count</code>.</p>
|
|
<p>See the <a href="api/history/#entity-relationship-diagram">History schema diagram</a> for a sample ER layout of the resulting database.</p>
|
|
<h2 id="global-options">Global Options<a class="headerlink" href="#global-options" title="Permanent link">¶</a></h2>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Option</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>-o, --output</code></td>
|
|
<td>Output file path (required)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>-f, --format</code></td>
|
|
<td>Output format (auto-detected from extension if omitted)</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--table</code></td>
|
|
<td>Table name for SQLite3 output (default: "data")</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--login</code></td>
|
|
<td>Trading account login</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--password</code></td>
|
|
<td>Trading account password</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--server</code></td>
|
|
<td>Trading server name</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--path</code></td>
|
|
<td>Path to MetaTrader5 terminal EXE file</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--timeout</code></td>
|
|
<td>Connection timeout in milliseconds</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>--log-level</code></td>
|
|
<td>Logging level (DEBUG, INFO, WARNING, ERROR)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">¶</a></h2>
|
|
<ul>
|
|
<li>Python 3.11+</li>
|
|
<li>Windows OS (MetaTrader 5 requirement)</li>
|
|
<li>MetaTrader 5 platform</li>
|
|
</ul>
|
|
<h2 id="api-reference">API Reference<a class="headerlink" href="#api-reference" title="Permanent link">¶</a></h2>
|
|
<p>Browse the API documentation for detailed module information:</p>
|
|
<ul>
|
|
<li><a href="api/cli/">CLI Module</a> - CLI application with export commands</li>
|
|
<li><a href="api/sdk/">SDK Module</a> - Programmatic read-only data collection API</li>
|
|
<li><a href="api/utils/">Utils Module</a> - Constants, parameter types, parsers, and export utilities</li>
|
|
</ul>
|
|
<h2 id="development">Development<a class="headerlink" href="#development" title="Permanent link">¶</a></h2>
|
|
<p>This project follows strict code quality standards:</p>
|
|
<ul>
|
|
<li>Type hints required (strict mode)</li>
|
|
<li>Comprehensive linting with Ruff</li>
|
|
<li>Test coverage tracking</li>
|
|
<li>Google-style docstrings</li>
|
|
</ul>
|
|
<h2 id="license">License<a class="headerlink" href="#license" title="Permanent link">¶</a></h2>
|
|
<p>MIT License - see <a href="https://github.com/dceoy/mt5cli/blob/main/LICENSE">LICENSE</a> file for details.</p></div>
|
|
</div>
|
|
</div>
|
|
|
|
<footer class="col-md-12">
|
|
<hr>
|
|
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
|
|
</footer>
|
|
<script src="js/bootstrap.bundle.min.js"></script>
|
|
<script>
|
|
var base_url = ".",
|
|
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
|
|
</script>
|
|
<script src="js/base.js"></script>
|
|
<script src="search/main.js"></script>
|
|
|
|
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title" id="searchModalLabel">Search</h4>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>From here you can search these documents. Enter your search terms below.</p>
|
|
<form>
|
|
<div class="form-group">
|
|
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
|
|
</div>
|
|
</form>
|
|
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 20%;">Keys</th>
|
|
<th>Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="help shortcut"><kbd>?</kbd></td>
|
|
<td>Open this help</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="next shortcut"><kbd>n</kbd></td>
|
|
<td>Next page</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="prev shortcut"><kbd>p</kbd></td>
|
|
<td>Previous page</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="search shortcut"><kbd>s</kbd></td>
|
|
<td>Search</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="modal-footer">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
|
|
<!--
|
|
MkDocs version : 1.6.1
|
|
Build Date UTC : 2026-06-11 10:38:36.809440+00:00
|
|
-->
|