deploy: 897f7f0a0d
This commit is contained in:
@@ -46,6 +46,10 @@
|
||||
<a href="/dceoy/mt5cli/api/" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/dceoy/mt5cli/api/public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="/dceoy/mt5cli/api/client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./" class="dropdown-item active" aria-current="page">Client</a>
|
||||
</li>
|
||||
@@ -96,7 +100,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a rel="prev" href="../" class="nav-link">
|
||||
<a rel="prev" href="../public-contract/" class="nav-link">
|
||||
<i class="fa fa-arrow-left"></i> Previous
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
+16
-2
@@ -46,6 +46,10 @@
|
||||
<a href="./" class="dropdown-item active" aria-current="page">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
@@ -101,7 +105,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a rel="next" href="client/" class="nav-link">
|
||||
<a rel="next" href="public-contract/" class="nav-link">
|
||||
Next <i class="fa fa-arrow-right"></i>
|
||||
</a>
|
||||
</li>
|
||||
@@ -150,6 +154,9 @@
|
||||
|
||||
<h1 id="api-reference">API Reference<a class="headerlink" href="#api-reference" title="Permanent link">¶</a></h1>
|
||||
<p>This section documents the mt5cli public Python API and CLI modules.</p>
|
||||
<p>Start with the <a href="public-contract/">Public API Contract</a> for the stable
|
||||
downstream SDK surface, CLI boundary, internal modules, and out-of-scope strategy
|
||||
responsibilities.</p>
|
||||
<h2 id="public-api-layers">Public API layers<a class="headerlink" href="#public-api-layers" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -160,6 +167,10 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="public-contract/">Public API Contract</a></td>
|
||||
<td>Stable downstream SDK exports, CLI boundary, and out-of-scope items</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="client/">Client</a></td>
|
||||
<td><code>MT5Client</code> session abstraction for data access and order primitives</td>
|
||||
</tr>
|
||||
@@ -211,7 +222,10 @@
|
||||
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> Storage --> Utils["utils export"]
|
||||
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> SDK --> PDMT5["pdmt5.Mt5DataClient"]
|
||||
</code></pre></div>
|
||||
<p>Downstream packages should depend on the package root exports (<code>MT5Client</code>, <code>DataKind</code>, <code>normalize_dataframe</code>, <code>export_dataframe</code>, <code>collect_history</code>, etc.) rather than private modules.</p>
|
||||
<p>Downstream packages should depend on the package root exports documented in the
|
||||
<a href="public-contract/">Public API Contract</a> (<code>MT5Client</code>,
|
||||
<code>DataKind</code>, <code>normalize_dataframe</code>, <code>collect_history</code>, <code>load_rate_data</code>,
|
||||
<code>resolve_rate_view_name</code>, etc.) rather than private modules.</p>
|
||||
<p><code>MT5Client.order_send()</code> is a live execution primitive that can place real trades. mt5cli exposes minimal execution helpers only; strategy logic, signals, backtests, and optimization remain out of scope and must be implemented downstream with explicit execution gating.</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-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></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="n">MT5Client</span><span class="p">,</span> <span class="n">build_config</span><span class="p">,</span> <span class="n">mt5_session</span>
|
||||
|
||||
@@ -0,0 +1,570 @@
|
||||
<!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="author" content="dceoy">
|
||||
<link rel="canonical" href="https://github.com/dceoy/mt5cli/api/public-contract/">
|
||||
<link rel="shortcut icon" href="../../img/favicon.ico">
|
||||
<title>Public API Contract - 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>
|
||||
<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">Home</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a href="#" class="nav-link dropdown-toggle active" aria-current="page" role="button" data-bs-toggle="dropdown" aria-expanded="false">API Reference</a>
|
||||
<ul class="dropdown-menu">
|
||||
|
||||
<li>
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="./" class="dropdown-item active" aria-current="page">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../schemas/" class="dropdown-item">Schemas</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../storage/" class="dropdown-item">Storage</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../converters/" class="dropdown-item">Converters</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../exceptions/" class="dropdown-item">Exceptions</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../cli/" class="dropdown-item">CLI</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../sdk/" class="dropdown-item">SDK</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../trading/" class="dropdown-item">Trading</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../history/" class="dropdown-item">History Collection (SQLite)</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../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" href="../" class="nav-link">
|
||||
<i class="fa fa-arrow-left"></i> Previous
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a rel="next" href="../client/" 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/api/public-contract.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="#public-api-contract" class="nav-link">Public API Contract</a>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item" data-bs-level="2"><a href="#stable-downstream-sdk-api" class="nav-link">Stable downstream SDK API</a>
|
||||
<ul class="nav flex-column">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item" data-bs-level="2"><a href="#cli-commands" class="nav-link">CLI commands</a>
|
||||
<ul class="nav flex-column">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item" data-bs-level="2"><a href="#internal-helpers-not-stable" class="nav-link">Internal helpers (not stable)</a>
|
||||
<ul class="nav flex-column">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item" data-bs-level="2"><a href="#explicitly-out-of-scope" class="nav-link">Explicitly out of scope</a>
|
||||
<ul class="nav flex-column">
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item" data-bs-level="2"><a href="#contract-verification" class="nav-link">Contract verification</a>
|
||||
<ul class="nav flex-column">
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div></div>
|
||||
<div class="col-md-9" role="main">
|
||||
|
||||
<h1 id="public-api-contract">Public API Contract<a class="headerlink" href="#public-api-contract" title="Permanent link">¶</a></h1>
|
||||
<p>mt5cli is the generic MT5 data and execution infrastructure layer for downstream
|
||||
Python applications. The intended dependency direction is:</p>
|
||||
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>downstream app -> mt5cli -> pdmt5 -> MetaTrader 5
|
||||
</code></pre></div>
|
||||
<p>Downstream packages should import from the package root (<code>from mt5cli import
|
||||
...</code>) and treat the symbols listed below as the stable SDK contract. CLI
|
||||
commands mirror the same behavior but are not importable Python APIs.</p>
|
||||
<h2 id="stable-downstream-sdk-api">Stable downstream SDK API<a class="headerlink" href="#stable-downstream-sdk-api" title="Permanent link">¶</a></h2>
|
||||
<p>These names are exported from <code>mt5cli</code> and covered by the contract in
|
||||
<code>mt5cli.STABLE_SDK_EXPORTS</code> (defined in <code>mt5cli.contract</code>). Prefer <code>MT5Client</code> over the legacy <code>Mt5CliClient</code>
|
||||
alias for new code.</p>
|
||||
<h3 id="session-lifecycle-and-configuration">Session lifecycle and configuration<a class="headerlink" href="#session-lifecycle-and-configuration" title="Permanent link">¶</a></h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>MT5Client</code>, <code>Mt5CliClient</code></td>
|
||||
<td>Read-only data client with optional <code>order_check</code> / <code>order_send</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>build_config</code></td>
|
||||
<td>Build <code>pdmt5.Mt5Config</code> from connection fields</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>mt5_session</code></td>
|
||||
<td>Context manager: initialize, login, yield client, shutdown</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>create_trading_client</code>, <code>mt5_trading_session</code></td>
|
||||
<td>Trading-capable <code>pdmt5.Mt5TradingClient</code> lifecycle</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>AccountSpec</code></td>
|
||||
<td>Generic account group: symbols plus optional credentials</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>resolve_account_spec</code>, <code>resolve_account_specs</code></td>
|
||||
<td>Merge overrides and expand <code>${ENV_VAR}</code> placeholders</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>substitute_env_placeholders</code></td>
|
||||
<td>Replace <code>${NAME}</code> substrings from the environment</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Credential resolution is generic: any environment variable name may appear inside
|
||||
<code>${...}</code>. mt5cli does not hard-code application-specific keys such as
|
||||
<code>mt5_login</code> or <code>mt5_exe</code>.</p>
|
||||
<h3 id="read-only-mt5-data-access">Read-only MT5 data access<a class="headerlink" href="#read-only-mt5-data-access" title="Permanent link">¶</a></h3>
|
||||
<p>Module-level helpers open a transient connection per call. Prefer <code>mt5_session</code>
|
||||
or <code>MT5Client</code> when making many requests in one process.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Area</th>
|
||||
<th>Symbols</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Rates</td>
|
||||
<td><code>copy_rates_from</code>, <code>copy_rates_from_pos</code>, <code>copy_rates_range</code>, <code>latest_rates</code>, <code>collect_latest_rates</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ticks</td>
|
||||
<td><code>copy_ticks_from</code>, <code>copy_ticks_range</code>, <code>recent_ticks</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Account / terminal</td>
|
||||
<td><code>account_info</code>, <code>terminal_info</code>, <code>mt5_version</code>, <code>last_error</code>, <code>mt5_summary</code>, <code>mt5_summary_as_df</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Symbols / market</td>
|
||||
<td><code>symbols</code>, <code>symbol_info</code>, <code>symbol_info_tick</code>, <code>market_book</code>, <code>minimum_margins</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Trading state (read)</td>
|
||||
<td><code>orders</code>, <code>positions</code>, <code>history_orders</code>, <code>history_deals</code>, <code>recent_history_deals</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Use <code>mt5_version</code> for MetaTrader 5 terminal version data. The name <code>version</code> at
|
||||
the package root refers to <code>importlib.metadata.version</code> (package metadata), not
|
||||
the MT5 SDK helper.</p>
|
||||
<h3 id="closed-bar-rate-helpers">Closed-bar rate helpers<a class="headerlink" href="#closed-bar-rate-helpers" title="Permanent link">¶</a></h3>
|
||||
<p>MetaTrader 5 returns the still-forming bar as the last row when
|
||||
<code>start_pos=0</code>. Use these helpers instead of reimplementing bar trimming or
|
||||
timestamp normalization in downstream apps.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>drop_forming_rate_bar</code></td>
|
||||
<td>Remove the last row from chronologically ordered rate data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>fetch_latest_closed_rates</code></td>
|
||||
<td>Single connected client: fetch <code>count + 1</code>, drop forming bar</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>collect_latest_closed_rates_for_accounts</code></td>
|
||||
<td>Multi-account closed bars with optional retry wrapper</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>collect_latest_closed_rates_by_granularity</code></td>
|
||||
<td>Same data keyed by <code>(symbol, granularity_name)</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>collect_latest_rates_for_accounts</code></td>
|
||||
<td>Latest bars including the forming bar when <code>start_pos=0</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>collect_latest_rates_for_accounts_with_retries</code></td>
|
||||
<td>Bounded exponential backoff for transient MT5 errors</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="sqlite-history-collection-and-rate-loading">SQLite history collection and rate loading<a class="headerlink" href="#sqlite-history-collection-and-rate-loading" title="Permanent link">¶</a></h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>collect_history</code></td>
|
||||
<td>One-shot date-range export into SQLite</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>update_history</code>, <code>update_history_with_config</code></td>
|
||||
<td>Incremental append from <code>MAX(time)</code> cursors</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>ThrottledHistoryUpdater</code></td>
|
||||
<td>Minimum interval between successful incremental updates</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>resolve_history_datasets</code>, <code>resolve_history_timeframes</code>, <code>resolve_history_tick_flags</code></td>
|
||||
<td>History pipeline configuration</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>build_rate_view_name</code>, <code>resolve_rate_table_name</code>, <code>resolve_rate_view_name</code>, <code>resolve_rate_view_names</code>, <code>resolve_rate_tables</code></td>
|
||||
<td>Map symbols/timeframes to mt5cli-managed table or view names</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>RateTarget</code>, <code>build_rate_targets</code></td>
|
||||
<td>Neutral <code>(symbol, timeframe)</code> series descriptors</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>load_rate_data</code>, <code>load_rate_data_from_connection</code></td>
|
||||
<td>Load one table/view into a time-indexed DataFrame</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>load_rate_series_from_sqlite</code>, <code>load_rate_series_by_granularity</code></td>
|
||||
<td>Load one or many series; fail clearly when managed views are missing</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Pass <code>require_existing=True</code> to rate view resolution helpers when downstream
|
||||
code must fail instead of receiving a best-guess view name. Multi-series loaders
|
||||
require existing managed <code>rate_*__*</code> views unless <code>explicit_tables</code> is supplied.</p>
|
||||
<p>See <a href="../history/">History Collection (SQLite)</a> for schema, view naming, and ER
|
||||
diagrams.</p>
|
||||
<h3 id="trading-and-sizing-primitives-generic">Trading and sizing primitives (generic)<a class="headerlink" href="#trading-and-sizing-primitives-generic" title="Permanent link">¶</a></h3>
|
||||
<p>These helpers implement broker-facing calculations only. They do not encode
|
||||
strategy entries, exits, Kelly sizing, or signal logic.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>get_account_snapshot</code>, <code>get_symbol_snapshot</code>, <code>get_tick_snapshot</code>, <code>get_positions_frame</code></td>
|
||||
<td>Normalized account/symbol/tick/position views</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>detect_position_side</code></td>
|
||||
<td>Net long / short / flat from open positions</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>calculate_spread_ratio</code></td>
|
||||
<td>Relative bid-ask spread</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>calculate_margin_and_volume</code>, <code>calculate_volume_by_margin</code>, <code>calculate_new_position_margin_ratio</code></td>
|
||||
<td>Margin budget and volume sizing</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>determine_order_limits</code></td>
|
||||
<td>SL/TP price levels from ratios</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>ensure_symbol_selected</code></td>
|
||||
<td>Select/verify Market Watch visibility</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>place_market_order</code>, <code>close_open_positions</code>, <code>update_sltp_for_open_positions</code></td>
|
||||
<td>Order execution helpers (<code>dry_run</code> supported)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>MarginVolume</code>, <code>OrderLimits</code>, <code>OrderExecutionResult</code></td>
|
||||
<td>Typed return contracts for order helpers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>OrderSide</code>, <code>OrderFillingMode</code>, <code>OrderTimeMode</code>, <code>PositionSide</code>, <code>ExecutionStatus</code></td>
|
||||
<td>Typed enums for order helpers</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><code>MT5Client.order_send()</code> and CLI <code>order-send --yes</code> are live execution paths.</p>
|
||||
<p>Order helpers validate broker stop-level distance in <code>determine_order_limits()</code> and
|
||||
raise <code>Mt5TradingError</code> when computed SL/TP prices are too close to the entry
|
||||
quote. Validation uses <code>trade_stops_level * point</code> from the current quote and
|
||||
symbol metadata as a pre-check only; it does not guarantee live order acceptance
|
||||
after price movement and does not inspect <code>trade_freeze_level</code>. Live
|
||||
<code>place_market_order()</code> and SL/TP updates call
|
||||
<code>ensure_symbol_selected()</code> so hidden symbols are added to Market Watch before
|
||||
sending requests. Failed, malformed, or unknown broker retcodes are fail-closed
|
||||
and returned as <code>status="failed"</code> with normalized <code>request</code> / <code>response</code> details;
|
||||
<code>dry_run=True</code> never calls <code>ensure_symbol_selected()</code> or <code>order_send()</code>.</p>
|
||||
<h3 id="errors-and-mt5-type-re-exports">Errors and MT5 type re-exports<a class="headerlink" href="#errors-and-mt5-type-re-exports" title="Permanent link">¶</a></h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Symbol</th>
|
||||
<th>Role</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>Mt5CliError</code>, <code>Mt5ConnectionError</code>, <code>Mt5OperationError</code>, <code>Mt5SchemaError</code></td>
|
||||
<td>Stable mt5cli exception types</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>normalize_mt5_exception</code>, <code>call_with_normalized_errors</code>, <code>is_recoverable_mt5_error</code></td>
|
||||
<td>Error normalization and retry classification</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>Mt5Config</code>, <code>Mt5RuntimeError</code>, <code>Mt5TradingClient</code>, <code>Mt5TradingError</code></td>
|
||||
<td>Re-exported pdmt5 types for adapter convenience</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="additional-public-exports-secondary">Additional public exports (secondary)<a class="headerlink" href="#additional-public-exports-secondary" title="Permanent link">¶</a></h3>
|
||||
<p>The package root also exports schema, storage, and parsing helpers (for example
|
||||
<code>DataKind</code>, <code>Dataset</code>, <code>normalize_dataframe</code>, <code>export_dataframe</code>,
|
||||
<code>parse_timeframe</code>, <code>TIMEFRAME_MAP</code>). These are public but oriented toward export
|
||||
pipelines and advanced integration. Prefer the stable symbols above for core
|
||||
infrastructure.</p>
|
||||
<h2 id="cli-commands">CLI commands<a class="headerlink" href="#cli-commands" title="Permanent link">¶</a></h2>
|
||||
<p>The Typer application in <code>mt5cli.cli</code> exposes file-export commands documented in
|
||||
<a href="../cli/">CLI Module</a> and the project README. CLI commands:</p>
|
||||
<ul>
|
||||
<li>Require <code>-o/--output</code> and write CSV, JSON, Parquet, or SQLite.</li>
|
||||
<li>Accept global MT5 connection options (<code>--login</code>, <code>--password</code>, <code>--server</code>,
|
||||
<code>--path</code>, <code>--timeout</code>).</li>
|
||||
<li>Delegate to the same Python APIs described here; they are not duplicated
|
||||
business logic.</li>
|
||||
</ul>
|
||||
<p><code>order-send</code> requires <code>--yes</code> before placing live trades.</p>
|
||||
<h2 id="internal-helpers-not-stable">Internal helpers (not stable)<a class="headerlink" href="#internal-helpers-not-stable" title="Permanent link">¶</a></h2>
|
||||
<p>Do not import these for downstream contracts; they may change without a semver
|
||||
notice:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Module</th>
|
||||
<th>Examples</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>mt5cli.sdk</code></td>
|
||||
<td><code>connected_client</code>, <code>_run_with_client</code>, private coercion helpers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>mt5cli.history</code></td>
|
||||
<td><code>write_*_dataset</code>, <code>deduplicate_history_tables</code>, <code>parse_sqlite_timestamp</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>mt5cli.retry</code></td>
|
||||
<td><code>retry_with_backoff</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>mt5cli.cli</code></td>
|
||||
<td>Typer command handlers and Click parameter types</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Leading-underscore names</td>
|
||||
<td>Any <code>_</code>-prefixed function or method</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Use the package-root stable exports instead of reaching into submodule
|
||||
internals.</p>
|
||||
<h2 id="explicitly-out-of-scope">Explicitly out of scope<a class="headerlink" href="#explicitly-out-of-scope" title="Permanent link">¶</a></h2>
|
||||
<p>mt5cli must <strong>not</strong> implement downstream strategy or research responsibilities.
|
||||
The following belong in consuming applications, not in mt5cli:</p>
|
||||
<ul>
|
||||
<li>Signal detection (for example AR-GARCH or other model-specific triggers)</li>
|
||||
<li>Backtesting, walk-forward analysis, or parameter optimization</li>
|
||||
<li>Strategy-specific risk policy, position sizing systems, or Kelly fractions</li>
|
||||
<li>Entry/exit decision logic or YAML strategy semantics</li>
|
||||
<li>Application-specific credential schema keys wired into mt5cli internals</li>
|
||||
</ul>
|
||||
<p>mt5cli provides connection lifecycle, normalized data access, SQLite history
|
||||
machinery, closed-bar helpers, generic margin/volume/spread/SL/TP utilities, and
|
||||
optional order primitives so downstream apps can focus on strategy code behind
|
||||
their own adapter layer.</p>
|
||||
<h2 id="contract-verification">Contract verification<a class="headerlink" href="#contract-verification" title="Permanent link">¶</a></h2>
|
||||
<p><code>tests/test_contracts.py</code> asserts that every name in <code>STABLE_SDK_EXPORTS</code> is
|
||||
importable from <code>mt5cli</code>, documents key closed-bar, rate-view, SQLite loading,
|
||||
account-resolution, and trading-session behaviors, and keeps the contract set
|
||||
aligned with <code>__all__</code>.</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>
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
+2055
-1184
File diff suppressed because it is too large
Load Diff
@@ -46,6 +46,10 @@
|
||||
<a href="../" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="../client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
|
||||
+5
-1
@@ -46,6 +46,10 @@
|
||||
<a href="api/" class="dropdown-item">Overview</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="api/public-contract/" class="dropdown-item">Public API Contract</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="api/client/" class="dropdown-item">Client</a>
|
||||
</li>
|
||||
@@ -649,5 +653,5 @@
|
||||
|
||||
<!--
|
||||
MkDocs version : 1.6.1
|
||||
Build Date UTC : 2026-06-14 17:47:47.514428+00:00
|
||||
Build Date UTC : 2026-06-18 10:12:46.650064+00:00
|
||||
-->
|
||||
|
||||
BIN
Binary file not shown.
File diff suppressed because one or more lines are too long
+16
-12
@@ -2,50 +2,54 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/cli/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/client/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/converters/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/exceptions/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/history/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/public-contract/</loc>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/schemas/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/sdk/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/storage/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/trading/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://github.com/dceoy/mt5cli/api/utils/</loc>
|
||||
<lastmod>2026-06-14</lastmod>
|
||||
<lastmod>2026-06-18</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
Reference in New Issue
Block a user