This commit is contained in:
dceoy
2026-06-22 13:53:09 +00:00
parent a70021a72e
commit 0d9226d875
10 changed files with 4527 additions and 3778 deletions
+230 -73
View File
@@ -248,28 +248,7 @@ responsibility of downstream applications.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/sdk.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-385">385</a></span>
<span class="normal"><a href="#__codelineno-0-386">386</a></span>
<span class="normal"><a href="#__codelineno-0-387">387</a></span>
<span class="normal"><a href="#__codelineno-0-388">388</a></span>
<span class="normal"><a href="#__codelineno-0-389">389</a></span>
<span class="normal"><a href="#__codelineno-0-390">390</a></span>
<span class="normal"><a href="#__codelineno-0-391">391</a></span>
<span class="normal"><a href="#__codelineno-0-392">392</a></span>
<span class="normal"><a href="#__codelineno-0-393">393</a></span>
<span class="normal"><a href="#__codelineno-0-394">394</a></span>
<span class="normal"><a href="#__codelineno-0-395">395</a></span>
<span class="normal"><a href="#__codelineno-0-396">396</a></span>
<span class="normal"><a href="#__codelineno-0-397">397</a></span>
<span class="normal"><a href="#__codelineno-0-398">398</a></span>
<span class="normal"><a href="#__codelineno-0-399">399</a></span>
<span class="normal"><a href="#__codelineno-0-400">400</a></span>
<span class="normal"><a href="#__codelineno-0-401">401</a></span>
<span class="normal"><a href="#__codelineno-0-402">402</a></span>
<span class="normal"><a href="#__codelineno-0-403">403</a></span>
<span class="normal"><a href="#__codelineno-0-404">404</a></span>
<span class="normal"><a href="#__codelineno-0-405">405</a></span>
<span class="normal"><a href="#__codelineno-0-406">406</a></span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-406">406</a></span>
<span class="normal"><a href="#__codelineno-0-407">407</a></span>
<span class="normal"><a href="#__codelineno-0-408">408</a></span>
<span class="normal"><a href="#__codelineno-0-409">409</a></span>
@@ -283,42 +262,63 @@ responsibility of downstream applications.</p>
<span class="normal"><a href="#__codelineno-0-417">417</a></span>
<span class="normal"><a href="#__codelineno-0-418">418</a></span>
<span class="normal"><a href="#__codelineno-0-419">419</a></span>
<span class="normal"><a href="#__codelineno-0-420">420</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-385" name="__codelineno-0-385"></a><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
<a id="__codelineno-0-386" name="__codelineno-0-386"></a> <span class="bp">self</span><span class="p">,</span>
<a id="__codelineno-0-387" name="__codelineno-0-387"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-388" name="__codelineno-0-388"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-389" name="__codelineno-0-389"></a> <span class="n">login</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-390" name="__codelineno-0-390"></a> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-391" name="__codelineno-0-391"></a> <span class="n">server</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-392" name="__codelineno-0-392"></a> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-393" name="__codelineno-0-393"></a> <span class="n">retry_count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<a id="__codelineno-0-394" name="__codelineno-0-394"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-395" name="__codelineno-0-395"></a> <span class="n">client</span><span class="p">:</span> <span class="n">Mt5DataClient</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-396" name="__codelineno-0-396"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-397" name="__codelineno-0-397"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Initialize the SDK client.</span>
<a id="__codelineno-0-398" name="__codelineno-0-398"></a>
<a id="__codelineno-0-399" name="__codelineno-0-399"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-400" name="__codelineno-0-400"></a><span class="sd"> path: Path to MetaTrader5 terminal EXE file.</span>
<a id="__codelineno-0-401" name="__codelineno-0-401"></a><span class="sd"> login: Trading account login.</span>
<a id="__codelineno-0-402" name="__codelineno-0-402"></a><span class="sd"> password: Trading account password.</span>
<a id="__codelineno-0-403" name="__codelineno-0-403"></a><span class="sd"> server: Trading server name.</span>
<a id="__codelineno-0-404" name="__codelineno-0-404"></a><span class="sd"> timeout: Connection timeout in milliseconds.</span>
<a id="__codelineno-0-405" name="__codelineno-0-405"></a><span class="sd"> retry_count: Number of MT5 initialization retries for sessions</span>
<a id="__codelineno-0-406" name="__codelineno-0-406"></a><span class="sd"> opened by this client.</span>
<a id="__codelineno-0-407" name="__codelineno-0-407"></a><span class="sd"> config: Optional pre-built ``Mt5Config`` (overrides other args).</span>
<a id="__codelineno-0-408" name="__codelineno-0-408"></a><span class="sd"> client: Optional already-connected ``Mt5DataClient``. Injected</span>
<a id="__codelineno-0-409" name="__codelineno-0-409"></a><span class="sd"> clients are reused as-is and are not initialized or shut down.</span>
<a id="__codelineno-0-410" name="__codelineno-0-410"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-411" name="__codelineno-0-411"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">(</span>
<a id="__codelineno-0-412" name="__codelineno-0-412"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
<a id="__codelineno-0-413" name="__codelineno-0-413"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
<a id="__codelineno-0-414" name="__codelineno-0-414"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
<a id="__codelineno-0-415" name="__codelineno-0-415"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
<a id="__codelineno-0-416" name="__codelineno-0-416"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
<a id="__codelineno-0-417" name="__codelineno-0-417"></a> <span class="p">)</span>
<a id="__codelineno-0-418" name="__codelineno-0-418"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retry_count</span> <span class="o">=</span> <span class="n">retry_count</span>
<a id="__codelineno-0-419" name="__codelineno-0-419"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_client</span> <span class="o">=</span> <span class="n">client</span>
<a id="__codelineno-0-420" name="__codelineno-0-420"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_owns_client</span> <span class="o">=</span> <span class="n">client</span> <span class="ow">is</span> <span class="kc">None</span>
<span class="normal"><a href="#__codelineno-0-420">420</a></span>
<span class="normal"><a href="#__codelineno-0-421">421</a></span>
<span class="normal"><a href="#__codelineno-0-422">422</a></span>
<span class="normal"><a href="#__codelineno-0-423">423</a></span>
<span class="normal"><a href="#__codelineno-0-424">424</a></span>
<span class="normal"><a href="#__codelineno-0-425">425</a></span>
<span class="normal"><a href="#__codelineno-0-426">426</a></span>
<span class="normal"><a href="#__codelineno-0-427">427</a></span>
<span class="normal"><a href="#__codelineno-0-428">428</a></span>
<span class="normal"><a href="#__codelineno-0-429">429</a></span>
<span class="normal"><a href="#__codelineno-0-430">430</a></span>
<span class="normal"><a href="#__codelineno-0-431">431</a></span>
<span class="normal"><a href="#__codelineno-0-432">432</a></span>
<span class="normal"><a href="#__codelineno-0-433">433</a></span>
<span class="normal"><a href="#__codelineno-0-434">434</a></span>
<span class="normal"><a href="#__codelineno-0-435">435</a></span>
<span class="normal"><a href="#__codelineno-0-436">436</a></span>
<span class="normal"><a href="#__codelineno-0-437">437</a></span>
<span class="normal"><a href="#__codelineno-0-438">438</a></span>
<span class="normal"><a href="#__codelineno-0-439">439</a></span>
<span class="normal"><a href="#__codelineno-0-440">440</a></span>
<span class="normal"><a href="#__codelineno-0-441">441</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-406" name="__codelineno-0-406"></a><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
<a id="__codelineno-0-407" name="__codelineno-0-407"></a> <span class="bp">self</span><span class="p">,</span>
<a id="__codelineno-0-408" name="__codelineno-0-408"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-409" name="__codelineno-0-409"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-410" name="__codelineno-0-410"></a> <span class="n">login</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-411" name="__codelineno-0-411"></a> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-412" name="__codelineno-0-412"></a> <span class="n">server</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-413" name="__codelineno-0-413"></a> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-414" name="__codelineno-0-414"></a> <span class="n">retry_count</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
<a id="__codelineno-0-415" name="__codelineno-0-415"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-416" name="__codelineno-0-416"></a> <span class="n">client</span><span class="p">:</span> <span class="n">Mt5DataClient</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-417" name="__codelineno-0-417"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-418" name="__codelineno-0-418"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Initialize the SDK client.</span>
<a id="__codelineno-0-419" name="__codelineno-0-419"></a>
<a id="__codelineno-0-420" name="__codelineno-0-420"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-421" name="__codelineno-0-421"></a><span class="sd"> path: Path to MetaTrader5 terminal EXE file.</span>
<a id="__codelineno-0-422" name="__codelineno-0-422"></a><span class="sd"> login: Trading account login.</span>
<a id="__codelineno-0-423" name="__codelineno-0-423"></a><span class="sd"> password: Trading account password.</span>
<a id="__codelineno-0-424" name="__codelineno-0-424"></a><span class="sd"> server: Trading server name.</span>
<a id="__codelineno-0-425" name="__codelineno-0-425"></a><span class="sd"> timeout: Connection timeout in milliseconds.</span>
<a id="__codelineno-0-426" name="__codelineno-0-426"></a><span class="sd"> retry_count: Number of MT5 initialization retries for sessions</span>
<a id="__codelineno-0-427" name="__codelineno-0-427"></a><span class="sd"> opened by this client.</span>
<a id="__codelineno-0-428" name="__codelineno-0-428"></a><span class="sd"> config: Optional pre-built ``Mt5Config`` (overrides other args).</span>
<a id="__codelineno-0-429" name="__codelineno-0-429"></a><span class="sd"> client: Optional already-connected ``Mt5DataClient``. Injected</span>
<a id="__codelineno-0-430" name="__codelineno-0-430"></a><span class="sd"> clients are reused as-is and are not initialized or shut down.</span>
<a id="__codelineno-0-431" name="__codelineno-0-431"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">(</span>
<a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
<a id="__codelineno-0-435" name="__codelineno-0-435"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
<a id="__codelineno-0-436" name="__codelineno-0-436"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
<a id="__codelineno-0-437" name="__codelineno-0-437"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
<a id="__codelineno-0-438" name="__codelineno-0-438"></a> <span class="p">)</span>
<a id="__codelineno-0-439" name="__codelineno-0-439"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retry_count</span> <span class="o">=</span> <span class="n">retry_count</span>
<a id="__codelineno-0-440" name="__codelineno-0-440"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_client</span> <span class="o">=</span> <span class="n">client</span>
<a id="__codelineno-0-441" name="__codelineno-0-441"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_owns_client</span> <span class="o">=</span> <span class="n">client</span> <span class="ow">is</span> <span class="kc">None</span>
</code></pre></div></td></tr></table></div>
</details>
@@ -642,7 +642,8 @@ not implement strategy logic, signal generation, or trade sizing.</p>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">password</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">server</span><span class="p">:</span> <span class="n"><span title="str">str</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">timeout</span><span class="p">:</span> <span class="n"><span title="int">int</span></span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="pdmt5.Mt5Config">Mt5Config</span></span>
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="n">allow_whole_dollar_env</span><span class="p">:</span> <span class="n"><span title="bool">bool</span></span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n"><span title="pdmt5.Mt5Config">Mt5Config</span></span>
</code></pre></div>
<div class="doc doc-contents ">
@@ -650,6 +651,120 @@ not implement strategy logic, signal generation, or trade sizing.</p>
<p>Build an <code>Mt5Config</code> from optional connection parameters.</p>
<p><span class="doc-section-title">Parameters:</span></p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr class="doc-section-item">
<td>
<code>path</code>
</td>
<td>
<code><span title="str">str</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional terminal executable path.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>login</code>
</td>
<td>
<code><span title="int">int</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional trading account login.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>password</code>
</td>
<td>
<code><span title="str">str</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional trading account password.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>server</code>
</td>
<td>
<code><span title="str">str</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional trading server name.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>timeout</code>
</td>
<td>
<code><span title="int">int</span> | None</code>
</td>
<td>
<div class="doc-md-description">
<p>Optional connection timeout in milliseconds.</p>
</div>
</td>
<td>
<code>None</code>
</td>
</tr>
<tr class="doc-section-item">
<td>
<code>allow_whole_dollar_env</code>
</td>
<td>
<code><span title="bool">bool</span></code>
</td>
<td>
<div class="doc-md-description">
<p>When <code>True</code>, string parameters that are
exactly <code>$ENV_NAME</code> are expanded from the environment. Applies
to <code>path</code>, <code>password</code>, and <code>server</code>. Default <code>False</code>
preserves existing behavior.</p>
</div>
</td>
<td>
<code>False</code>
</td>
</tr>
</tbody>
</table>
<p><span class="doc-section-title">Returns:</span></p>
<table>
<thead>
@@ -694,26 +809,68 @@ not implement strategy logic, signal generation, or trade sizing.</p>
<span class="normal"><a href="#__codelineno-0-321">321</a></span>
<span class="normal"><a href="#__codelineno-0-322">322</a></span>
<span class="normal"><a href="#__codelineno-0-323">323</a></span>
<span class="normal"><a href="#__codelineno-0-324">324</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-305" name="__codelineno-0-305"></a><span class="k">def</span><span class="w"> </span><span class="nf">build_config</span><span class="p">(</span>
<span class="normal"><a href="#__codelineno-0-324">324</a></span>
<span class="normal"><a href="#__codelineno-0-325">325</a></span>
<span class="normal"><a href="#__codelineno-0-326">326</a></span>
<span class="normal"><a href="#__codelineno-0-327">327</a></span>
<span class="normal"><a href="#__codelineno-0-328">328</a></span>
<span class="normal"><a href="#__codelineno-0-329">329</a></span>
<span class="normal"><a href="#__codelineno-0-330">330</a></span>
<span class="normal"><a href="#__codelineno-0-331">331</a></span>
<span class="normal"><a href="#__codelineno-0-332">332</a></span>
<span class="normal"><a href="#__codelineno-0-333">333</a></span>
<span class="normal"><a href="#__codelineno-0-334">334</a></span>
<span class="normal"><a href="#__codelineno-0-335">335</a></span>
<span class="normal"><a href="#__codelineno-0-336">336</a></span>
<span class="normal"><a href="#__codelineno-0-337">337</a></span>
<span class="normal"><a href="#__codelineno-0-338">338</a></span>
<span class="normal"><a href="#__codelineno-0-339">339</a></span>
<span class="normal"><a href="#__codelineno-0-340">340</a></span>
<span class="normal"><a href="#__codelineno-0-341">341</a></span>
<span class="normal"><a href="#__codelineno-0-342">342</a></span>
<span class="normal"><a href="#__codelineno-0-343">343</a></span>
<span class="normal"><a href="#__codelineno-0-344">344</a></span>
<span class="normal"><a href="#__codelineno-0-345">345</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-305" name="__codelineno-0-305"></a><span class="k">def</span><span class="w"> </span><span class="nf">build_config</span><span class="p">(</span>
<a id="__codelineno-0-306" name="__codelineno-0-306"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-307" name="__codelineno-0-307"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-308" name="__codelineno-0-308"></a> <span class="n">login</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-309" name="__codelineno-0-309"></a> <span class="n">password</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-310" name="__codelineno-0-310"></a> <span class="n">server</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-311" name="__codelineno-0-311"></a> <span class="n">timeout</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-312" name="__codelineno-0-312"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Mt5Config</span><span class="p">:</span>
<a id="__codelineno-0-313" name="__codelineno-0-313"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Build an ``Mt5Config`` from optional connection parameters.</span>
<a id="__codelineno-0-314" name="__codelineno-0-314"></a>
<a id="__codelineno-0-315" name="__codelineno-0-315"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-316" name="__codelineno-0-316"></a><span class="sd"> Configured ``Mt5Config`` instance.</span>
<a id="__codelineno-0-317" name="__codelineno-0-317"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-318" name="__codelineno-0-318"></a> <span class="k">return</span> <span class="n">Mt5Config</span><span class="p">(</span>
<a id="__codelineno-0-319" name="__codelineno-0-319"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
<a id="__codelineno-0-320" name="__codelineno-0-320"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
<a id="__codelineno-0-321" name="__codelineno-0-321"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
<a id="__codelineno-0-322" name="__codelineno-0-322"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
<a id="__codelineno-0-323" name="__codelineno-0-323"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
<a id="__codelineno-0-324" name="__codelineno-0-324"></a> <span class="p">)</span>
<a id="__codelineno-0-312" name="__codelineno-0-312"></a> <span class="n">allow_whole_dollar_env</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-313" name="__codelineno-0-313"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Mt5Config</span><span class="p">:</span>
<a id="__codelineno-0-314" name="__codelineno-0-314"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Build an ``Mt5Config`` from optional connection parameters.</span>
<a id="__codelineno-0-315" name="__codelineno-0-315"></a>
<a id="__codelineno-0-316" name="__codelineno-0-316"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-317" name="__codelineno-0-317"></a><span class="sd"> path: Optional terminal executable path.</span>
<a id="__codelineno-0-318" name="__codelineno-0-318"></a><span class="sd"> login: Optional trading account login.</span>
<a id="__codelineno-0-319" name="__codelineno-0-319"></a><span class="sd"> password: Optional trading account password.</span>
<a id="__codelineno-0-320" name="__codelineno-0-320"></a><span class="sd"> server: Optional trading server name.</span>
<a id="__codelineno-0-321" name="__codelineno-0-321"></a><span class="sd"> timeout: Optional connection timeout in milliseconds.</span>
<a id="__codelineno-0-322" name="__codelineno-0-322"></a><span class="sd"> allow_whole_dollar_env: When ``True``, string parameters that are</span>
<a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="sd"> exactly ``$ENV_NAME`` are expanded from the environment. Applies</span>
<a id="__codelineno-0-324" name="__codelineno-0-324"></a><span class="sd"> to ``path``, ``password``, and ``server``. Default ``False``</span>
<a id="__codelineno-0-325" name="__codelineno-0-325"></a><span class="sd"> preserves existing behavior.</span>
<a id="__codelineno-0-326" name="__codelineno-0-326"></a>
<a id="__codelineno-0-327" name="__codelineno-0-327"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-328" name="__codelineno-0-328"></a><span class="sd"> Configured ``Mt5Config`` instance.</span>
<a id="__codelineno-0-329" name="__codelineno-0-329"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-330" name="__codelineno-0-330"></a> <span class="k">if</span> <span class="n">allow_whole_dollar_env</span><span class="p">:</span>
<a id="__codelineno-0-331" name="__codelineno-0-331"></a> <span class="k">if</span> <span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-332" name="__codelineno-0-332"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">substitute_env_placeholders</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">allow_whole_dollar_env</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<a id="__codelineno-0-333" name="__codelineno-0-333"></a> <span class="k">if</span> <span class="n">password</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-334" name="__codelineno-0-334"></a> <span class="n">password</span> <span class="o">=</span> <span class="n">substitute_env_placeholders</span><span class="p">(</span>
<a id="__codelineno-0-335" name="__codelineno-0-335"></a> <span class="n">password</span><span class="p">,</span> <span class="n">allow_whole_dollar_env</span><span class="o">=</span><span class="kc">True</span>
<a id="__codelineno-0-336" name="__codelineno-0-336"></a> <span class="p">)</span>
<a id="__codelineno-0-337" name="__codelineno-0-337"></a> <span class="k">if</span> <span class="n">server</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-338" name="__codelineno-0-338"></a> <span class="n">server</span> <span class="o">=</span> <span class="n">substitute_env_placeholders</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">allow_whole_dollar_env</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<a id="__codelineno-0-339" name="__codelineno-0-339"></a> <span class="k">return</span> <span class="n">Mt5Config</span><span class="p">(</span>
<a id="__codelineno-0-340" name="__codelineno-0-340"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
<a id="__codelineno-0-341" name="__codelineno-0-341"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
<a id="__codelineno-0-342" name="__codelineno-0-342"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
<a id="__codelineno-0-343" name="__codelineno-0-343"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
<a id="__codelineno-0-344" name="__codelineno-0-344"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
<a id="__codelineno-0-345" name="__codelineno-0-345"></a> <span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
+13 -3
View File
@@ -203,17 +203,23 @@ alias for new code.</p>
</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>
<td>Merge overrides and expand <code>${ENV_VAR}</code> placeholders; opt-in <code>allow_whole_dollar_env</code> for bare <code>$NAME</code></td>
</tr>
<tr>
<td><code>substitute_env_placeholders</code></td>
<td>Replace <code>${NAME}</code> substrings from the environment</td>
<td>Replace <code>${NAME}</code> substrings from the environment; opt-in <code>allow_whole_dollar_env</code> for whole-value <code>$NAME</code></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>
<p>Pass <code>allow_whole_dollar_env=True</code> to <code>substitute_env_placeholders()</code>,
<code>resolve_account_spec()</code>, <code>resolve_account_specs()</code>, and <code>build_config()</code> to
additionally expand strings whose entire value is a bare <code>$ENV_NAME</code> identifier.
Partial strings such as <code>"plan$pass"</code>, <code>"abc$ENV"</code>, or <code>"$ENV-suffix"</code> are
<strong>never</strong> expanded — only an exact <code>$IDENTIFIER</code> whole-string match qualifies.
Default is <code>False</code> to preserve backward compatibility.</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">&para;</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>
@@ -272,7 +278,11 @@ timestamp normalization in downstream apps.</p>
</tr>
<tr>
<td><code>fetch_latest_closed_rates_for_trading_client</code></td>
<td>Closed bars from an active <code>Mt5TradingClient</code> session</td>
<td>Closed bars from an active <code>Mt5TradingClient</code> session; returns RangeIndex</td>
</tr>
<tr>
<td><code>fetch_latest_closed_rates_indexed</code></td>
<td>Same as above but returns a UTC <code>DatetimeIndex</code> named <code>"time"</code> (no time column)</td>
</tr>
<tr>
<td><code>collect_latest_closed_rates_for_accounts</code></td>
+2785 -2484
View File
File diff suppressed because it is too large Load Diff
+301 -301
View File
@@ -1357,28 +1357,7 @@ a symbol such as <code>EURUSD_M1</code> cannot collide with <code>EURUSD</code>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/sdk.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1191">1191</a></span>
<span class="normal"><a href="#__codelineno-0-1192">1192</a></span>
<span class="normal"><a href="#__codelineno-0-1193">1193</a></span>
<span class="normal"><a href="#__codelineno-0-1194">1194</a></span>
<span class="normal"><a href="#__codelineno-0-1195">1195</a></span>
<span class="normal"><a href="#__codelineno-0-1196">1196</a></span>
<span class="normal"><a href="#__codelineno-0-1197">1197</a></span>
<span class="normal"><a href="#__codelineno-0-1198">1198</a></span>
<span class="normal"><a href="#__codelineno-0-1199">1199</a></span>
<span class="normal"><a href="#__codelineno-0-1200">1200</a></span>
<span class="normal"><a href="#__codelineno-0-1201">1201</a></span>
<span class="normal"><a href="#__codelineno-0-1202">1202</a></span>
<span class="normal"><a href="#__codelineno-0-1203">1203</a></span>
<span class="normal"><a href="#__codelineno-0-1204">1204</a></span>
<span class="normal"><a href="#__codelineno-0-1205">1205</a></span>
<span class="normal"><a href="#__codelineno-0-1206">1206</a></span>
<span class="normal"><a href="#__codelineno-0-1207">1207</a></span>
<span class="normal"><a href="#__codelineno-0-1208">1208</a></span>
<span class="normal"><a href="#__codelineno-0-1209">1209</a></span>
<span class="normal"><a href="#__codelineno-0-1210">1210</a></span>
<span class="normal"><a href="#__codelineno-0-1211">1211</a></span>
<span class="normal"><a href="#__codelineno-0-1212">1212</a></span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1212">1212</a></span>
<span class="normal"><a href="#__codelineno-0-1213">1213</a></span>
<span class="normal"><a href="#__codelineno-0-1214">1214</a></span>
<span class="normal"><a href="#__codelineno-0-1215">1215</a></span>
@@ -1420,70 +1399,91 @@ a symbol such as <code>EURUSD_M1</code> cannot collide with <code>EURUSD</code>
<span class="normal"><a href="#__codelineno-0-1251">1251</a></span>
<span class="normal"><a href="#__codelineno-0-1252">1252</a></span>
<span class="normal"><a href="#__codelineno-0-1253">1253</a></span>
<span class="normal"><a href="#__codelineno-0-1254">1254</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1191" name="__codelineno-0-1191"></a><span class="k">def</span><span class="w"> </span><span class="nf">collect_history</span><span class="p">(</span>
<a id="__codelineno-0-1192" name="__codelineno-0-1192"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
<a id="__codelineno-0-1193" name="__codelineno-0-1193"></a> <span class="n">symbols</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-1194" name="__codelineno-0-1194"></a> <span class="n">date_from</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1195" name="__codelineno-0-1195"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1196" name="__codelineno-0-1196"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-1197" name="__codelineno-0-1197"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1198" name="__codelineno-0-1198"></a> <span class="n">timeframe</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-1199" name="__codelineno-0-1199"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1200" name="__codelineno-0-1200"></a> <span class="n">if_exists</span><span class="p">:</span> <span class="n">IfExists</span> <span class="o">=</span> <span class="n">IfExists</span><span class="o">.</span><span class="n">FAIL</span><span class="p">,</span>
<a id="__codelineno-0-1201" name="__codelineno-0-1201"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-1202" name="__codelineno-0-1202"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1203" name="__codelineno-0-1203"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1204" name="__codelineno-0-1204"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Collect historical datasets into a single SQLite database.</span>
<a id="__codelineno-0-1205" name="__codelineno-0-1205"></a>
<a id="__codelineno-0-1206" name="__codelineno-0-1206"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-1207" name="__codelineno-0-1207"></a><span class="sd"> output: SQLite database path.</span>
<a id="__codelineno-0-1208" name="__codelineno-0-1208"></a><span class="sd"> symbols: Symbols to collect.</span>
<a id="__codelineno-0-1209" name="__codelineno-0-1209"></a><span class="sd"> date_from: Start date.</span>
<a id="__codelineno-0-1210" name="__codelineno-0-1210"></a><span class="sd"> date_to: End date.</span>
<a id="__codelineno-0-1211" name="__codelineno-0-1211"></a><span class="sd"> datasets: Datasets to include (defaults to all).</span>
<a id="__codelineno-0-1212" name="__codelineno-0-1212"></a><span class="sd"> timeframe: Rates timeframe as integer or name (e.g. ``M1``).</span>
<a id="__codelineno-0-1213" name="__codelineno-0-1213"></a><span class="sd"> flags: Tick copy flags as integer or name (e.g. ``ALL``).</span>
<a id="__codelineno-0-1214" name="__codelineno-0-1214"></a><span class="sd"> if_exists: Behavior when a target table already exists.</span>
<a id="__codelineno-0-1215" name="__codelineno-0-1215"></a><span class="sd"> with_views: Create ``cash_events`` and ``positions_reconstructed`` views.</span>
<a id="__codelineno-0-1216" name="__codelineno-0-1216"></a><span class="sd"> config: MT5 connection configuration.</span>
<a id="__codelineno-0-1217" name="__codelineno-0-1217"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-1218" name="__codelineno-0-1218"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">_require_datetime</span><span class="p">(</span><span class="n">date_from</span><span class="p">)</span>
<a id="__codelineno-0-1219" name="__codelineno-0-1219"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">_require_datetime</span><span class="p">(</span><span class="n">date_to</span><span class="p">)</span>
<a id="__codelineno-0-1220" name="__codelineno-0-1220"></a> <span class="n">selected</span> <span class="o">=</span> <span class="n">datasets</span> <span class="k">if</span> <span class="n">datasets</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">set</span><span class="p">(</span><span class="n">Dataset</span><span class="p">)</span>
<a id="__codelineno-0-1221" name="__codelineno-0-1221"></a> <span class="n">tf</span> <span class="o">=</span> <span class="n">_coerce_timeframe</span><span class="p">(</span><span class="n">timeframe</span><span class="p">)</span>
<a id="__codelineno-0-1222" name="__codelineno-0-1222"></a> <span class="n">tick_flags</span> <span class="o">=</span> <span class="n">_coerce_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span>
<a id="__codelineno-0-1223" name="__codelineno-0-1223"></a> <span class="n">mt5_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">()</span>
<a id="__codelineno-0-1224" name="__codelineno-0-1224"></a> <span class="k">with</span> <span class="n">connected_client</span><span class="p">(</span><span class="n">mt5_config</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">,</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
<a id="__codelineno-0-1225" name="__codelineno-0-1225"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA journal_mode=WAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1226" name="__codelineno-0-1226"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA synchronous=NORMAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1227" name="__codelineno-0-1227"></a> <span class="n">written_tables</span><span class="p">,</span> <span class="n">written_columns</span> <span class="o">=</span> <span class="n">write_collected_datasets</span><span class="p">(</span>
<a id="__codelineno-0-1228" name="__codelineno-0-1228"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-1229" name="__codelineno-0-1229"></a> <span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-1230" name="__codelineno-0-1230"></a> <span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1231" name="__codelineno-0-1231"></a> <span class="n">selected</span><span class="p">,</span>
<a id="__codelineno-0-1232" name="__codelineno-0-1232"></a> <span class="n">tf</span><span class="p">,</span>
<a id="__codelineno-0-1233" name="__codelineno-0-1233"></a> <span class="n">tick_flags</span><span class="p">,</span>
<a id="__codelineno-0-1234" name="__codelineno-0-1234"></a> <span class="n">start</span><span class="p">,</span>
<a id="__codelineno-0-1235" name="__codelineno-0-1235"></a> <span class="n">end</span><span class="p">,</span>
<a id="__codelineno-0-1236" name="__codelineno-0-1236"></a> <span class="n">if_exists</span><span class="p">,</span>
<a id="__codelineno-0-1237" name="__codelineno-0-1237"></a> <span class="p">)</span>
<a id="__codelineno-0-1238" name="__codelineno-0-1238"></a> <span class="n">create_history_indexes</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">written_columns</span><span class="p">)</span>
<a id="__codelineno-0-1239" name="__codelineno-0-1239"></a> <span class="k">if</span> <span class="n">with_views</span> <span class="ow">and</span> <span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span> <span class="ow">in</span> <span class="n">written_tables</span><span class="p">:</span>
<a id="__codelineno-0-1240" name="__codelineno-0-1240"></a> <span class="n">create_cash_events_view</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">written_columns</span><span class="p">[</span><span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span><span class="p">])</span>
<a id="__codelineno-0-1241" name="__codelineno-0-1241"></a> <span class="n">create_positions_reconstructed_view</span><span class="p">(</span>
<a id="__codelineno-0-1242" name="__codelineno-0-1242"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-1243" name="__codelineno-0-1243"></a> <span class="n">written_columns</span><span class="p">[</span><span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span><span class="p">],</span>
<a id="__codelineno-0-1244" name="__codelineno-0-1244"></a> <span class="p">)</span>
<a id="__codelineno-0-1245" name="__codelineno-0-1245"></a> <span class="k">elif</span> <span class="n">with_views</span><span class="p">:</span>
<a id="__codelineno-0-1246" name="__codelineno-0-1246"></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
<a id="__codelineno-0-1247" name="__codelineno-0-1247"></a> <span class="s2">&quot;--with-views ignored: history_deals table was not written&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1248" name="__codelineno-0-1248"></a> <span class="p">)</span>
<a id="__codelineno-0-1249" name="__codelineno-0-1249"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
<a id="__codelineno-0-1250" name="__codelineno-0-1250"></a> <span class="s2">&quot;Collected </span><span class="si">%s</span><span class="s2"> for </span><span class="si">%d</span><span class="s2"> symbol(s) into </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1251" name="__codelineno-0-1251"></a> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">ds</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">ds</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">)),</span>
<a id="__codelineno-0-1252" name="__codelineno-0-1252"></a> <span class="nb">len</span><span class="p">(</span><span class="n">symbols</span><span class="p">),</span>
<a id="__codelineno-0-1253" name="__codelineno-0-1253"></a> <span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1254" name="__codelineno-0-1254"></a> <span class="p">)</span>
<span class="normal"><a href="#__codelineno-0-1254">1254</a></span>
<span class="normal"><a href="#__codelineno-0-1255">1255</a></span>
<span class="normal"><a href="#__codelineno-0-1256">1256</a></span>
<span class="normal"><a href="#__codelineno-0-1257">1257</a></span>
<span class="normal"><a href="#__codelineno-0-1258">1258</a></span>
<span class="normal"><a href="#__codelineno-0-1259">1259</a></span>
<span class="normal"><a href="#__codelineno-0-1260">1260</a></span>
<span class="normal"><a href="#__codelineno-0-1261">1261</a></span>
<span class="normal"><a href="#__codelineno-0-1262">1262</a></span>
<span class="normal"><a href="#__codelineno-0-1263">1263</a></span>
<span class="normal"><a href="#__codelineno-0-1264">1264</a></span>
<span class="normal"><a href="#__codelineno-0-1265">1265</a></span>
<span class="normal"><a href="#__codelineno-0-1266">1266</a></span>
<span class="normal"><a href="#__codelineno-0-1267">1267</a></span>
<span class="normal"><a href="#__codelineno-0-1268">1268</a></span>
<span class="normal"><a href="#__codelineno-0-1269">1269</a></span>
<span class="normal"><a href="#__codelineno-0-1270">1270</a></span>
<span class="normal"><a href="#__codelineno-0-1271">1271</a></span>
<span class="normal"><a href="#__codelineno-0-1272">1272</a></span>
<span class="normal"><a href="#__codelineno-0-1273">1273</a></span>
<span class="normal"><a href="#__codelineno-0-1274">1274</a></span>
<span class="normal"><a href="#__codelineno-0-1275">1275</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1212" name="__codelineno-0-1212"></a><span class="k">def</span><span class="w"> </span><span class="nf">collect_history</span><span class="p">(</span>
<a id="__codelineno-0-1213" name="__codelineno-0-1213"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span><span class="p">,</span>
<a id="__codelineno-0-1214" name="__codelineno-0-1214"></a> <span class="n">symbols</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-1215" name="__codelineno-0-1215"></a> <span class="n">date_from</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1216" name="__codelineno-0-1216"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1217" name="__codelineno-0-1217"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-1218" name="__codelineno-0-1218"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1219" name="__codelineno-0-1219"></a> <span class="n">timeframe</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<a id="__codelineno-0-1220" name="__codelineno-0-1220"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1221" name="__codelineno-0-1221"></a> <span class="n">if_exists</span><span class="p">:</span> <span class="n">IfExists</span> <span class="o">=</span> <span class="n">IfExists</span><span class="o">.</span><span class="n">FAIL</span><span class="p">,</span>
<a id="__codelineno-0-1222" name="__codelineno-0-1222"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-1223" name="__codelineno-0-1223"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1224" name="__codelineno-0-1224"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1225" name="__codelineno-0-1225"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Collect historical datasets into a single SQLite database.</span>
<a id="__codelineno-0-1226" name="__codelineno-0-1226"></a>
<a id="__codelineno-0-1227" name="__codelineno-0-1227"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-1228" name="__codelineno-0-1228"></a><span class="sd"> output: SQLite database path.</span>
<a id="__codelineno-0-1229" name="__codelineno-0-1229"></a><span class="sd"> symbols: Symbols to collect.</span>
<a id="__codelineno-0-1230" name="__codelineno-0-1230"></a><span class="sd"> date_from: Start date.</span>
<a id="__codelineno-0-1231" name="__codelineno-0-1231"></a><span class="sd"> date_to: End date.</span>
<a id="__codelineno-0-1232" name="__codelineno-0-1232"></a><span class="sd"> datasets: Datasets to include (defaults to all).</span>
<a id="__codelineno-0-1233" name="__codelineno-0-1233"></a><span class="sd"> timeframe: Rates timeframe as integer or name (e.g. ``M1``).</span>
<a id="__codelineno-0-1234" name="__codelineno-0-1234"></a><span class="sd"> flags: Tick copy flags as integer or name (e.g. ``ALL``).</span>
<a id="__codelineno-0-1235" name="__codelineno-0-1235"></a><span class="sd"> if_exists: Behavior when a target table already exists.</span>
<a id="__codelineno-0-1236" name="__codelineno-0-1236"></a><span class="sd"> with_views: Create ``cash_events`` and ``positions_reconstructed`` views.</span>
<a id="__codelineno-0-1237" name="__codelineno-0-1237"></a><span class="sd"> config: MT5 connection configuration.</span>
<a id="__codelineno-0-1238" name="__codelineno-0-1238"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-1239" name="__codelineno-0-1239"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">_require_datetime</span><span class="p">(</span><span class="n">date_from</span><span class="p">)</span>
<a id="__codelineno-0-1240" name="__codelineno-0-1240"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">_require_datetime</span><span class="p">(</span><span class="n">date_to</span><span class="p">)</span>
<a id="__codelineno-0-1241" name="__codelineno-0-1241"></a> <span class="n">selected</span> <span class="o">=</span> <span class="n">datasets</span> <span class="k">if</span> <span class="n">datasets</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="nb">set</span><span class="p">(</span><span class="n">Dataset</span><span class="p">)</span>
<a id="__codelineno-0-1242" name="__codelineno-0-1242"></a> <span class="n">tf</span> <span class="o">=</span> <span class="n">_coerce_timeframe</span><span class="p">(</span><span class="n">timeframe</span><span class="p">)</span>
<a id="__codelineno-0-1243" name="__codelineno-0-1243"></a> <span class="n">tick_flags</span> <span class="o">=</span> <span class="n">_coerce_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span>
<a id="__codelineno-0-1244" name="__codelineno-0-1244"></a> <span class="n">mt5_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">()</span>
<a id="__codelineno-0-1245" name="__codelineno-0-1245"></a> <span class="k">with</span> <span class="n">connected_client</span><span class="p">(</span><span class="n">mt5_config</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">,</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
<a id="__codelineno-0-1246" name="__codelineno-0-1246"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA journal_mode=WAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1247" name="__codelineno-0-1247"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA synchronous=NORMAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1248" name="__codelineno-0-1248"></a> <span class="n">written_tables</span><span class="p">,</span> <span class="n">written_columns</span> <span class="o">=</span> <span class="n">write_collected_datasets</span><span class="p">(</span>
<a id="__codelineno-0-1249" name="__codelineno-0-1249"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-1250" name="__codelineno-0-1250"></a> <span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-1251" name="__codelineno-0-1251"></a> <span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1252" name="__codelineno-0-1252"></a> <span class="n">selected</span><span class="p">,</span>
<a id="__codelineno-0-1253" name="__codelineno-0-1253"></a> <span class="n">tf</span><span class="p">,</span>
<a id="__codelineno-0-1254" name="__codelineno-0-1254"></a> <span class="n">tick_flags</span><span class="p">,</span>
<a id="__codelineno-0-1255" name="__codelineno-0-1255"></a> <span class="n">start</span><span class="p">,</span>
<a id="__codelineno-0-1256" name="__codelineno-0-1256"></a> <span class="n">end</span><span class="p">,</span>
<a id="__codelineno-0-1257" name="__codelineno-0-1257"></a> <span class="n">if_exists</span><span class="p">,</span>
<a id="__codelineno-0-1258" name="__codelineno-0-1258"></a> <span class="p">)</span>
<a id="__codelineno-0-1259" name="__codelineno-0-1259"></a> <span class="n">create_history_indexes</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">written_columns</span><span class="p">)</span>
<a id="__codelineno-0-1260" name="__codelineno-0-1260"></a> <span class="k">if</span> <span class="n">with_views</span> <span class="ow">and</span> <span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span> <span class="ow">in</span> <span class="n">written_tables</span><span class="p">:</span>
<a id="__codelineno-0-1261" name="__codelineno-0-1261"></a> <span class="n">create_cash_events_view</span><span class="p">(</span><span class="n">conn</span><span class="p">,</span> <span class="n">written_columns</span><span class="p">[</span><span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span><span class="p">])</span>
<a id="__codelineno-0-1262" name="__codelineno-0-1262"></a> <span class="n">create_positions_reconstructed_view</span><span class="p">(</span>
<a id="__codelineno-0-1263" name="__codelineno-0-1263"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-1264" name="__codelineno-0-1264"></a> <span class="n">written_columns</span><span class="p">[</span><span class="n">Dataset</span><span class="o">.</span><span class="n">history_deals</span><span class="p">],</span>
<a id="__codelineno-0-1265" name="__codelineno-0-1265"></a> <span class="p">)</span>
<a id="__codelineno-0-1266" name="__codelineno-0-1266"></a> <span class="k">elif</span> <span class="n">with_views</span><span class="p">:</span>
<a id="__codelineno-0-1267" name="__codelineno-0-1267"></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span>
<a id="__codelineno-0-1268" name="__codelineno-0-1268"></a> <span class="s2">&quot;--with-views ignored: history_deals table was not written&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1269" name="__codelineno-0-1269"></a> <span class="p">)</span>
<a id="__codelineno-0-1270" name="__codelineno-0-1270"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
<a id="__codelineno-0-1271" name="__codelineno-0-1271"></a> <span class="s2">&quot;Collected </span><span class="si">%s</span><span class="s2"> for </span><span class="si">%d</span><span class="s2"> symbol(s) into </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1272" name="__codelineno-0-1272"></a> <span class="s2">&quot;, &quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">ds</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">ds</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">)),</span>
<a id="__codelineno-0-1273" name="__codelineno-0-1273"></a> <span class="nb">len</span><span class="p">(</span><span class="n">symbols</span><span class="p">),</span>
<a id="__codelineno-0-1274" name="__codelineno-0-1274"></a> <span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1275" name="__codelineno-0-1275"></a> <span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -4477,153 +4477,153 @@ timeframes when None).</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/sdk.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-922">922</a></span>
<span class="normal"><a href="#__codelineno-0-923">923</a></span>
<span class="normal"><a href="#__codelineno-0-924">924</a></span>
<span class="normal"><a href="#__codelineno-0-925">925</a></span>
<span class="normal"><a href="#__codelineno-0-926">926</a></span>
<span class="normal"><a href="#__codelineno-0-927">927</a></span>
<span class="normal"><a href="#__codelineno-0-928">928</a></span>
<span class="normal"><a href="#__codelineno-0-929">929</a></span>
<span class="normal"><a href="#__codelineno-0-930">930</a></span>
<span class="normal"><a href="#__codelineno-0-931">931</a></span>
<span class="normal"><a href="#__codelineno-0-932">932</a></span>
<span class="normal"><a href="#__codelineno-0-933">933</a></span>
<span class="normal"><a href="#__codelineno-0-934">934</a></span>
<span class="normal"><a href="#__codelineno-0-935">935</a></span>
<span class="normal"><a href="#__codelineno-0-936">936</a></span>
<span class="normal"><a href="#__codelineno-0-937">937</a></span>
<span class="normal"><a href="#__codelineno-0-938">938</a></span>
<span class="normal"><a href="#__codelineno-0-939">939</a></span>
<span class="normal"><a href="#__codelineno-0-940">940</a></span>
<span class="normal"><a href="#__codelineno-0-941">941</a></span>
<span class="normal"><a href="#__codelineno-0-942">942</a></span>
<span class="normal"><a href="#__codelineno-0-943">943</a></span>
<span class="normal"><a href="#__codelineno-0-944">944</a></span>
<span class="normal"><a href="#__codelineno-0-945">945</a></span>
<span class="normal"><a href="#__codelineno-0-946">946</a></span>
<span class="normal"><a href="#__codelineno-0-947">947</a></span>
<span class="normal"><a href="#__codelineno-0-948">948</a></span>
<span class="normal"><a href="#__codelineno-0-949">949</a></span>
<span class="normal"><a href="#__codelineno-0-950">950</a></span>
<span class="normal"><a href="#__codelineno-0-951">951</a></span>
<span class="normal"><a href="#__codelineno-0-952">952</a></span>
<span class="normal"><a href="#__codelineno-0-953">953</a></span>
<span class="normal"><a href="#__codelineno-0-954">954</a></span>
<span class="normal"><a href="#__codelineno-0-955">955</a></span>
<span class="normal"><a href="#__codelineno-0-956">956</a></span>
<span class="normal"><a href="#__codelineno-0-957">957</a></span>
<span class="normal"><a href="#__codelineno-0-958">958</a></span>
<span class="normal"><a href="#__codelineno-0-959">959</a></span>
<span class="normal"><a href="#__codelineno-0-960">960</a></span>
<span class="normal"><a href="#__codelineno-0-961">961</a></span>
<span class="normal"><a href="#__codelineno-0-962">962</a></span>
<span class="normal"><a href="#__codelineno-0-963">963</a></span>
<span class="normal"><a href="#__codelineno-0-964">964</a></span>
<span class="normal"><a href="#__codelineno-0-965">965</a></span>
<span class="normal"><a href="#__codelineno-0-966">966</a></span>
<span class="normal"><a href="#__codelineno-0-967">967</a></span>
<span class="normal"><a href="#__codelineno-0-968">968</a></span>
<span class="normal"><a href="#__codelineno-0-969">969</a></span>
<span class="normal"><a href="#__codelineno-0-970">970</a></span>
<span class="normal"><a href="#__codelineno-0-971">971</a></span>
<span class="normal"><a href="#__codelineno-0-972">972</a></span>
<span class="normal"><a href="#__codelineno-0-973">973</a></span>
<span class="normal"><a href="#__codelineno-0-974">974</a></span>
<span class="normal"><a href="#__codelineno-0-975">975</a></span>
<span class="normal"><a href="#__codelineno-0-976">976</a></span>
<span class="normal"><a href="#__codelineno-0-977">977</a></span>
<span class="normal"><a href="#__codelineno-0-978">978</a></span>
<span class="normal"><a href="#__codelineno-0-979">979</a></span>
<span class="normal"><a href="#__codelineno-0-980">980</a></span>
<span class="normal"><a href="#__codelineno-0-981">981</a></span>
<span class="normal"><a href="#__codelineno-0-982">982</a></span>
<span class="normal"><a href="#__codelineno-0-983">983</a></span>
<span class="normal"><a href="#__codelineno-0-984">984</a></span>
<span class="normal"><a href="#__codelineno-0-985">985</a></span>
<span class="normal"><a href="#__codelineno-0-986">986</a></span>
<span class="normal"><a href="#__codelineno-0-987">987</a></span>
<span class="normal"><a href="#__codelineno-0-988">988</a></span>
<span class="normal"><a href="#__codelineno-0-989">989</a></span>
<span class="normal"><a href="#__codelineno-0-990">990</a></span>
<span class="normal"><a href="#__codelineno-0-991">991</a></span>
<span class="normal"><a href="#__codelineno-0-992">992</a></span>
<span class="normal"><a href="#__codelineno-0-993">993</a></span>
<span class="normal"><a href="#__codelineno-0-994">994</a></span>
<span class="normal"><a href="#__codelineno-0-995">995</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-922" name="__codelineno-0-922"></a><span class="k">def</span><span class="w"> </span><span class="nf">update_history</span><span class="p">(</span> <span class="c1"># noqa: PLR0913</span>
<a id="__codelineno-0-923" name="__codelineno-0-923"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-924" name="__codelineno-0-924"></a> <span class="n">client</span><span class="p">:</span> <span class="n">Mt5DataClient</span><span class="p">,</span>
<a id="__codelineno-0-925" name="__codelineno-0-925"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-926" name="__codelineno-0-926"></a> <span class="n">symbols</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-927" name="__codelineno-0-927"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-928" name="__codelineno-0-928"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-929" name="__codelineno-0-929"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-930" name="__codelineno-0-930"></a> <span class="n">lookback_hours</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">24.0</span><span class="p">,</span>
<a id="__codelineno-0-931" name="__codelineno-0-931"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-932" name="__codelineno-0-932"></a> <span class="n">deduplicate</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-933" name="__codelineno-0-933"></a> <span class="n">create_rate_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-934" name="__codelineno-0-934"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-935" name="__codelineno-0-935"></a> <span class="n">include_account_events</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-936" name="__codelineno-0-936"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-937" name="__codelineno-0-937"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Incrementally append MT5 history into a SQLite database.</span>
<a id="__codelineno-0-938" name="__codelineno-0-938"></a>
<a id="__codelineno-0-939" name="__codelineno-0-939"></a><span class="sd"> Uses an already-connected ``Mt5DataClient`` and does not create or close</span>
<a id="__codelineno-0-940" name="__codelineno-0-940"></a><span class="sd"> the MT5 connection. For first-time tables, data is fetched from</span>
<a id="__codelineno-0-941" name="__codelineno-0-941"></a><span class="sd"> ``date_to - lookback_hours``. Subsequent runs resume from existing</span>
<a id="__codelineno-0-942" name="__codelineno-0-942"></a><span class="sd"> ``MAX(time)`` per symbol (and timeframe for rates); when</span>
<a id="__codelineno-0-943" name="__codelineno-0-943"></a><span class="sd"> ``include_account_events=True``, account-level deals use a separate cursor</span>
<a id="__codelineno-0-944" name="__codelineno-0-944"></a><span class="sd"> over ``type NOT IN (0, 1)`` / empty-symbol rows.</span>
<a id="__codelineno-0-945" name="__codelineno-0-945"></a>
<a id="__codelineno-0-946" name="__codelineno-0-946"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-947" name="__codelineno-0-947"></a><span class="sd"> client: Connected MT5 data client.</span>
<a id="__codelineno-0-948" name="__codelineno-0-948"></a><span class="sd"> output: SQLite database path.</span>
<a id="__codelineno-0-949" name="__codelineno-0-949"></a><span class="sd"> symbols: Symbols to update.</span>
<a id="__codelineno-0-950" name="__codelineno-0-950"></a><span class="sd"> datasets: Datasets to include (defaults to all).</span>
<a id="__codelineno-0-951" name="__codelineno-0-951"></a><span class="sd"> timeframes: Rate timeframes to update (defaults to all fixed MT5</span>
<a id="__codelineno-0-952" name="__codelineno-0-952"></a><span class="sd"> timeframes when None).</span>
<a id="__codelineno-0-953" name="__codelineno-0-953"></a><span class="sd"> flags: Tick copy flags as integer or name (e.g. ``ALL``).</span>
<a id="__codelineno-0-954" name="__codelineno-0-954"></a><span class="sd"> lookback_hours: First-run lookback when a table has no prior rows.</span>
<a id="__codelineno-0-955" name="__codelineno-0-955"></a><span class="sd"> date_to: Optional update end datetime. Defaults to now (UTC).</span>
<a id="__codelineno-0-956" name="__codelineno-0-956"></a><span class="sd"> deduplicate: Remove duplicate rows after append, keeping latest ROWID.</span>
<a id="__codelineno-0-957" name="__codelineno-0-957"></a><span class="sd"> create_rate_views: Create ``rate_&lt;symbol&gt;__&lt;timeframe&gt;`` views.</span>
<a id="__codelineno-0-958" name="__codelineno-0-958"></a><span class="sd"> with_views: Create ``cash_events`` and ``positions_reconstructed`` views.</span>
<a id="__codelineno-0-959" name="__codelineno-0-959"></a><span class="sd"> include_account_events: Include account-level cash events in</span>
<a id="__codelineno-0-960" name="__codelineno-0-960"></a><span class="sd"> ``history_deals`` when True.</span>
<a id="__codelineno-0-961" name="__codelineno-0-961"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-962" name="__codelineno-0-962"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">_resolve_update_history_request</span><span class="p">(</span>
<a id="__codelineno-0-963" name="__codelineno-0-963"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-964" name="__codelineno-0-964"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-965" name="__codelineno-0-965"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-966" name="__codelineno-0-966"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-967" name="__codelineno-0-967"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-968" name="__codelineno-0-968"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-969" name="__codelineno-0-969"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-970" name="__codelineno-0-970"></a> <span class="p">)</span>
<a id="__codelineno-0-971" name="__codelineno-0-971"></a> <span class="k">if</span> <span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-972" name="__codelineno-0-972"></a> <span class="k">return</span>
<a id="__codelineno-0-973" name="__codelineno-0-973"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
<a id="__codelineno-0-974" name="__codelineno-0-974"></a> <span class="s2">&quot;Updating history in SQLite: symbols=</span><span class="si">%s</span><span class="s2">, datasets=</span><span class="si">%s</span><span class="s2">, path=</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-975" name="__codelineno-0-975"></a> <span class="nb">list</span><span class="p">(</span><span class="n">symbols</span><span class="p">),</span>
<a id="__codelineno-0-976" name="__codelineno-0-976"></a> <span class="nb">sorted</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">dataset</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">selected</span><span class="p">),</span>
<a id="__codelineno-0-977" name="__codelineno-0-977"></a> <span class="n">request</span><span class="o">.</span><span class="n">output_path</span><span class="p">,</span>
<a id="__codelineno-0-978" name="__codelineno-0-978"></a> <span class="p">)</span>
<a id="__codelineno-0-979" name="__codelineno-0-979"></a> <span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">output_path</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
<a id="__codelineno-0-980" name="__codelineno-0-980"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA journal_mode=WAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-981" name="__codelineno-0-981"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA synchronous=NORMAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-982" name="__codelineno-0-982"></a> <span class="n">write_incremental_datasets</span><span class="p">(</span>
<a id="__codelineno-0-983" name="__codelineno-0-983"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-984" name="__codelineno-0-984"></a> <span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-985" name="__codelineno-0-985"></a> <span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-986" name="__codelineno-0-986"></a> <span class="n">request</span><span class="o">.</span><span class="n">selected</span><span class="p">,</span>
<a id="__codelineno-0-987" name="__codelineno-0-987"></a> <span class="n">request</span><span class="o">.</span><span class="n">resolved_timeframes</span><span class="p">,</span>
<a id="__codelineno-0-988" name="__codelineno-0-988"></a> <span class="n">request</span><span class="o">.</span><span class="n">resolved_tick_flags</span><span class="p">,</span>
<a id="__codelineno-0-989" name="__codelineno-0-989"></a> <span class="n">request</span><span class="o">.</span><span class="n">fallback_start</span><span class="p">,</span>
<a id="__codelineno-0-990" name="__codelineno-0-990"></a> <span class="n">request</span><span class="o">.</span><span class="n">end</span><span class="p">,</span>
<a id="__codelineno-0-991" name="__codelineno-0-991"></a> <span class="n">deduplicate</span><span class="o">=</span><span class="n">deduplicate</span><span class="p">,</span>
<a id="__codelineno-0-992" name="__codelineno-0-992"></a> <span class="n">create_rate_views</span><span class="o">=</span><span class="n">create_rate_views</span><span class="p">,</span>
<a id="__codelineno-0-993" name="__codelineno-0-993"></a> <span class="n">with_views</span><span class="o">=</span><span class="n">with_views</span><span class="p">,</span>
<a id="__codelineno-0-994" name="__codelineno-0-994"></a> <span class="n">include_account_events</span><span class="o">=</span><span class="n">include_account_events</span><span class="p">,</span>
<a id="__codelineno-0-995" name="__codelineno-0-995"></a> <span class="p">)</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-943"> 943</a></span>
<span class="normal"><a href="#__codelineno-0-944"> 944</a></span>
<span class="normal"><a href="#__codelineno-0-945"> 945</a></span>
<span class="normal"><a href="#__codelineno-0-946"> 946</a></span>
<span class="normal"><a href="#__codelineno-0-947"> 947</a></span>
<span class="normal"><a href="#__codelineno-0-948"> 948</a></span>
<span class="normal"><a href="#__codelineno-0-949"> 949</a></span>
<span class="normal"><a href="#__codelineno-0-950"> 950</a></span>
<span class="normal"><a href="#__codelineno-0-951"> 951</a></span>
<span class="normal"><a href="#__codelineno-0-952"> 952</a></span>
<span class="normal"><a href="#__codelineno-0-953"> 953</a></span>
<span class="normal"><a href="#__codelineno-0-954"> 954</a></span>
<span class="normal"><a href="#__codelineno-0-955"> 955</a></span>
<span class="normal"><a href="#__codelineno-0-956"> 956</a></span>
<span class="normal"><a href="#__codelineno-0-957"> 957</a></span>
<span class="normal"><a href="#__codelineno-0-958"> 958</a></span>
<span class="normal"><a href="#__codelineno-0-959"> 959</a></span>
<span class="normal"><a href="#__codelineno-0-960"> 960</a></span>
<span class="normal"><a href="#__codelineno-0-961"> 961</a></span>
<span class="normal"><a href="#__codelineno-0-962"> 962</a></span>
<span class="normal"><a href="#__codelineno-0-963"> 963</a></span>
<span class="normal"><a href="#__codelineno-0-964"> 964</a></span>
<span class="normal"><a href="#__codelineno-0-965"> 965</a></span>
<span class="normal"><a href="#__codelineno-0-966"> 966</a></span>
<span class="normal"><a href="#__codelineno-0-967"> 967</a></span>
<span class="normal"><a href="#__codelineno-0-968"> 968</a></span>
<span class="normal"><a href="#__codelineno-0-969"> 969</a></span>
<span class="normal"><a href="#__codelineno-0-970"> 970</a></span>
<span class="normal"><a href="#__codelineno-0-971"> 971</a></span>
<span class="normal"><a href="#__codelineno-0-972"> 972</a></span>
<span class="normal"><a href="#__codelineno-0-973"> 973</a></span>
<span class="normal"><a href="#__codelineno-0-974"> 974</a></span>
<span class="normal"><a href="#__codelineno-0-975"> 975</a></span>
<span class="normal"><a href="#__codelineno-0-976"> 976</a></span>
<span class="normal"><a href="#__codelineno-0-977"> 977</a></span>
<span class="normal"><a href="#__codelineno-0-978"> 978</a></span>
<span class="normal"><a href="#__codelineno-0-979"> 979</a></span>
<span class="normal"><a href="#__codelineno-0-980"> 980</a></span>
<span class="normal"><a href="#__codelineno-0-981"> 981</a></span>
<span class="normal"><a href="#__codelineno-0-982"> 982</a></span>
<span class="normal"><a href="#__codelineno-0-983"> 983</a></span>
<span class="normal"><a href="#__codelineno-0-984"> 984</a></span>
<span class="normal"><a href="#__codelineno-0-985"> 985</a></span>
<span class="normal"><a href="#__codelineno-0-986"> 986</a></span>
<span class="normal"><a href="#__codelineno-0-987"> 987</a></span>
<span class="normal"><a href="#__codelineno-0-988"> 988</a></span>
<span class="normal"><a href="#__codelineno-0-989"> 989</a></span>
<span class="normal"><a href="#__codelineno-0-990"> 990</a></span>
<span class="normal"><a href="#__codelineno-0-991"> 991</a></span>
<span class="normal"><a href="#__codelineno-0-992"> 992</a></span>
<span class="normal"><a href="#__codelineno-0-993"> 993</a></span>
<span class="normal"><a href="#__codelineno-0-994"> 994</a></span>
<span class="normal"><a href="#__codelineno-0-995"> 995</a></span>
<span class="normal"><a href="#__codelineno-0-996"> 996</a></span>
<span class="normal"><a href="#__codelineno-0-997"> 997</a></span>
<span class="normal"><a href="#__codelineno-0-998"> 998</a></span>
<span class="normal"><a href="#__codelineno-0-999"> 999</a></span>
<span class="normal"><a href="#__codelineno-0-1000">1000</a></span>
<span class="normal"><a href="#__codelineno-0-1001">1001</a></span>
<span class="normal"><a href="#__codelineno-0-1002">1002</a></span>
<span class="normal"><a href="#__codelineno-0-1003">1003</a></span>
<span class="normal"><a href="#__codelineno-0-1004">1004</a></span>
<span class="normal"><a href="#__codelineno-0-1005">1005</a></span>
<span class="normal"><a href="#__codelineno-0-1006">1006</a></span>
<span class="normal"><a href="#__codelineno-0-1007">1007</a></span>
<span class="normal"><a href="#__codelineno-0-1008">1008</a></span>
<span class="normal"><a href="#__codelineno-0-1009">1009</a></span>
<span class="normal"><a href="#__codelineno-0-1010">1010</a></span>
<span class="normal"><a href="#__codelineno-0-1011">1011</a></span>
<span class="normal"><a href="#__codelineno-0-1012">1012</a></span>
<span class="normal"><a href="#__codelineno-0-1013">1013</a></span>
<span class="normal"><a href="#__codelineno-0-1014">1014</a></span>
<span class="normal"><a href="#__codelineno-0-1015">1015</a></span>
<span class="normal"><a href="#__codelineno-0-1016">1016</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-943" name="__codelineno-0-943"></a><span class="k">def</span><span class="w"> </span><span class="nf">update_history</span><span class="p">(</span> <span class="c1"># noqa: PLR0913</span>
<a id="__codelineno-0-944" name="__codelineno-0-944"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-945" name="__codelineno-0-945"></a> <span class="n">client</span><span class="p">:</span> <span class="n">Mt5DataClient</span><span class="p">,</span>
<a id="__codelineno-0-946" name="__codelineno-0-946"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-947" name="__codelineno-0-947"></a> <span class="n">symbols</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-948" name="__codelineno-0-948"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-949" name="__codelineno-0-949"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-950" name="__codelineno-0-950"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-951" name="__codelineno-0-951"></a> <span class="n">lookback_hours</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">24.0</span><span class="p">,</span>
<a id="__codelineno-0-952" name="__codelineno-0-952"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-953" name="__codelineno-0-953"></a> <span class="n">deduplicate</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-954" name="__codelineno-0-954"></a> <span class="n">create_rate_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-955" name="__codelineno-0-955"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-956" name="__codelineno-0-956"></a> <span class="n">include_account_events</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-957" name="__codelineno-0-957"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-958" name="__codelineno-0-958"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Incrementally append MT5 history into a SQLite database.</span>
<a id="__codelineno-0-959" name="__codelineno-0-959"></a>
<a id="__codelineno-0-960" name="__codelineno-0-960"></a><span class="sd"> Uses an already-connected ``Mt5DataClient`` and does not create or close</span>
<a id="__codelineno-0-961" name="__codelineno-0-961"></a><span class="sd"> the MT5 connection. For first-time tables, data is fetched from</span>
<a id="__codelineno-0-962" name="__codelineno-0-962"></a><span class="sd"> ``date_to - lookback_hours``. Subsequent runs resume from existing</span>
<a id="__codelineno-0-963" name="__codelineno-0-963"></a><span class="sd"> ``MAX(time)`` per symbol (and timeframe for rates); when</span>
<a id="__codelineno-0-964" name="__codelineno-0-964"></a><span class="sd"> ``include_account_events=True``, account-level deals use a separate cursor</span>
<a id="__codelineno-0-965" name="__codelineno-0-965"></a><span class="sd"> over ``type NOT IN (0, 1)`` / empty-symbol rows.</span>
<a id="__codelineno-0-966" name="__codelineno-0-966"></a>
<a id="__codelineno-0-967" name="__codelineno-0-967"></a><span class="sd"> Args:</span>
<a id="__codelineno-0-968" name="__codelineno-0-968"></a><span class="sd"> client: Connected MT5 data client.</span>
<a id="__codelineno-0-969" name="__codelineno-0-969"></a><span class="sd"> output: SQLite database path.</span>
<a id="__codelineno-0-970" name="__codelineno-0-970"></a><span class="sd"> symbols: Symbols to update.</span>
<a id="__codelineno-0-971" name="__codelineno-0-971"></a><span class="sd"> datasets: Datasets to include (defaults to all).</span>
<a id="__codelineno-0-972" name="__codelineno-0-972"></a><span class="sd"> timeframes: Rate timeframes to update (defaults to all fixed MT5</span>
<a id="__codelineno-0-973" name="__codelineno-0-973"></a><span class="sd"> timeframes when None).</span>
<a id="__codelineno-0-974" name="__codelineno-0-974"></a><span class="sd"> flags: Tick copy flags as integer or name (e.g. ``ALL``).</span>
<a id="__codelineno-0-975" name="__codelineno-0-975"></a><span class="sd"> lookback_hours: First-run lookback when a table has no prior rows.</span>
<a id="__codelineno-0-976" name="__codelineno-0-976"></a><span class="sd"> date_to: Optional update end datetime. Defaults to now (UTC).</span>
<a id="__codelineno-0-977" name="__codelineno-0-977"></a><span class="sd"> deduplicate: Remove duplicate rows after append, keeping latest ROWID.</span>
<a id="__codelineno-0-978" name="__codelineno-0-978"></a><span class="sd"> create_rate_views: Create ``rate_&lt;symbol&gt;__&lt;timeframe&gt;`` views.</span>
<a id="__codelineno-0-979" name="__codelineno-0-979"></a><span class="sd"> with_views: Create ``cash_events`` and ``positions_reconstructed`` views.</span>
<a id="__codelineno-0-980" name="__codelineno-0-980"></a><span class="sd"> include_account_events: Include account-level cash events in</span>
<a id="__codelineno-0-981" name="__codelineno-0-981"></a><span class="sd"> ``history_deals`` when True.</span>
<a id="__codelineno-0-982" name="__codelineno-0-982"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-983" name="__codelineno-0-983"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">_resolve_update_history_request</span><span class="p">(</span>
<a id="__codelineno-0-984" name="__codelineno-0-984"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-985" name="__codelineno-0-985"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-986" name="__codelineno-0-986"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-987" name="__codelineno-0-987"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-988" name="__codelineno-0-988"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-989" name="__codelineno-0-989"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-990" name="__codelineno-0-990"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-991" name="__codelineno-0-991"></a> <span class="p">)</span>
<a id="__codelineno-0-992" name="__codelineno-0-992"></a> <span class="k">if</span> <span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-993" name="__codelineno-0-993"></a> <span class="k">return</span>
<a id="__codelineno-0-994" name="__codelineno-0-994"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
<a id="__codelineno-0-995" name="__codelineno-0-995"></a> <span class="s2">&quot;Updating history in SQLite: symbols=</span><span class="si">%s</span><span class="s2">, datasets=</span><span class="si">%s</span><span class="s2">, path=</span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span>
<a id="__codelineno-0-996" name="__codelineno-0-996"></a> <span class="nb">list</span><span class="p">(</span><span class="n">symbols</span><span class="p">),</span>
<a id="__codelineno-0-997" name="__codelineno-0-997"></a> <span class="nb">sorted</span><span class="p">(</span><span class="n">dataset</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">dataset</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">selected</span><span class="p">),</span>
<a id="__codelineno-0-998" name="__codelineno-0-998"></a> <span class="n">request</span><span class="o">.</span><span class="n">output_path</span><span class="p">,</span>
<a id="__codelineno-0-999" name="__codelineno-0-999"></a> <span class="p">)</span>
<a id="__codelineno-0-1000" name="__codelineno-0-1000"></a> <span class="k">with</span> <span class="n">sqlite3</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">output_path</span><span class="p">)</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span>
<a id="__codelineno-0-1001" name="__codelineno-0-1001"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA journal_mode=WAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1002" name="__codelineno-0-1002"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">&quot;PRAGMA synchronous=NORMAL&quot;</span><span class="p">)</span>
<a id="__codelineno-0-1003" name="__codelineno-0-1003"></a> <span class="n">write_incremental_datasets</span><span class="p">(</span>
<a id="__codelineno-0-1004" name="__codelineno-0-1004"></a> <span class="n">conn</span><span class="p">,</span>
<a id="__codelineno-0-1005" name="__codelineno-0-1005"></a> <span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-1006" name="__codelineno-0-1006"></a> <span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1007" name="__codelineno-0-1007"></a> <span class="n">request</span><span class="o">.</span><span class="n">selected</span><span class="p">,</span>
<a id="__codelineno-0-1008" name="__codelineno-0-1008"></a> <span class="n">request</span><span class="o">.</span><span class="n">resolved_timeframes</span><span class="p">,</span>
<a id="__codelineno-0-1009" name="__codelineno-0-1009"></a> <span class="n">request</span><span class="o">.</span><span class="n">resolved_tick_flags</span><span class="p">,</span>
<a id="__codelineno-0-1010" name="__codelineno-0-1010"></a> <span class="n">request</span><span class="o">.</span><span class="n">fallback_start</span><span class="p">,</span>
<a id="__codelineno-0-1011" name="__codelineno-0-1011"></a> <span class="n">request</span><span class="o">.</span><span class="n">end</span><span class="p">,</span>
<a id="__codelineno-0-1012" name="__codelineno-0-1012"></a> <span class="n">deduplicate</span><span class="o">=</span><span class="n">deduplicate</span><span class="p">,</span>
<a id="__codelineno-0-1013" name="__codelineno-0-1013"></a> <span class="n">create_rate_views</span><span class="o">=</span><span class="n">create_rate_views</span><span class="p">,</span>
<a id="__codelineno-0-1014" name="__codelineno-0-1014"></a> <span class="n">with_views</span><span class="o">=</span><span class="n">with_views</span><span class="p">,</span>
<a id="__codelineno-0-1015" name="__codelineno-0-1015"></a> <span class="n">include_account_events</span><span class="o">=</span><span class="n">include_account_events</span><span class="p">,</span>
<a id="__codelineno-0-1016" name="__codelineno-0-1016"></a> <span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -4663,28 +4663,7 @@ timeframes when None).</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/sdk.py</code></summary>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-998"> 998</a></span>
<span class="normal"><a href="#__codelineno-0-999"> 999</a></span>
<span class="normal"><a href="#__codelineno-0-1000">1000</a></span>
<span class="normal"><a href="#__codelineno-0-1001">1001</a></span>
<span class="normal"><a href="#__codelineno-0-1002">1002</a></span>
<span class="normal"><a href="#__codelineno-0-1003">1003</a></span>
<span class="normal"><a href="#__codelineno-0-1004">1004</a></span>
<span class="normal"><a href="#__codelineno-0-1005">1005</a></span>
<span class="normal"><a href="#__codelineno-0-1006">1006</a></span>
<span class="normal"><a href="#__codelineno-0-1007">1007</a></span>
<span class="normal"><a href="#__codelineno-0-1008">1008</a></span>
<span class="normal"><a href="#__codelineno-0-1009">1009</a></span>
<span class="normal"><a href="#__codelineno-0-1010">1010</a></span>
<span class="normal"><a href="#__codelineno-0-1011">1011</a></span>
<span class="normal"><a href="#__codelineno-0-1012">1012</a></span>
<span class="normal"><a href="#__codelineno-0-1013">1013</a></span>
<span class="normal"><a href="#__codelineno-0-1014">1014</a></span>
<span class="normal"><a href="#__codelineno-0-1015">1015</a></span>
<span class="normal"><a href="#__codelineno-0-1016">1016</a></span>
<span class="normal"><a href="#__codelineno-0-1017">1017</a></span>
<span class="normal"><a href="#__codelineno-0-1018">1018</a></span>
<span class="normal"><a href="#__codelineno-0-1019">1019</a></span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1019">1019</a></span>
<span class="normal"><a href="#__codelineno-0-1020">1020</a></span>
<span class="normal"><a href="#__codelineno-0-1021">1021</a></span>
<span class="normal"><a href="#__codelineno-0-1022">1022</a></span>
@@ -4708,52 +4687,73 @@ timeframes when None).</p>
<span class="normal"><a href="#__codelineno-0-1040">1040</a></span>
<span class="normal"><a href="#__codelineno-0-1041">1041</a></span>
<span class="normal"><a href="#__codelineno-0-1042">1042</a></span>
<span class="normal"><a href="#__codelineno-0-1043">1043</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-998" name="__codelineno-0-998"></a><span class="k">def</span><span class="w"> </span><span class="nf">update_history_with_config</span><span class="p">(</span> <span class="c1"># noqa: PLR0913</span>
<a id="__codelineno-0-999" name="__codelineno-0-999"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-1000" name="__codelineno-0-1000"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1001" name="__codelineno-0-1001"></a> <span class="n">symbols</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-1002" name="__codelineno-0-1002"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1003" name="__codelineno-0-1003"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1004" name="__codelineno-0-1004"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1005" name="__codelineno-0-1005"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1006" name="__codelineno-0-1006"></a> <span class="n">lookback_hours</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">24.0</span><span class="p">,</span>
<a id="__codelineno-0-1007" name="__codelineno-0-1007"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1008" name="__codelineno-0-1008"></a> <span class="n">deduplicate</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1009" name="__codelineno-0-1009"></a> <span class="n">create_rate_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1010" name="__codelineno-0-1010"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-1011" name="__codelineno-0-1011"></a> <span class="n">include_account_events</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1012" name="__codelineno-0-1012"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1013" name="__codelineno-0-1013"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Incrementally append MT5 history, opening and closing the MT5 connection.</span>
<a id="__codelineno-0-1014" name="__codelineno-0-1014"></a>
<a id="__codelineno-0-1015" name="__codelineno-0-1015"></a><span class="sd"> Convenience wrapper around :func:`update_history` for standalone use.</span>
<a id="__codelineno-0-1016" name="__codelineno-0-1016"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-1017" name="__codelineno-0-1017"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">_resolve_update_history_request</span><span class="p">(</span>
<a id="__codelineno-0-1018" name="__codelineno-0-1018"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1019" name="__codelineno-0-1019"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1020" name="__codelineno-0-1020"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-1021" name="__codelineno-0-1021"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-1022" name="__codelineno-0-1022"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-1023" name="__codelineno-0-1023"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-1024" name="__codelineno-0-1024"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-1025" name="__codelineno-0-1025"></a> <span class="p">)</span>
<a id="__codelineno-0-1026" name="__codelineno-0-1026"></a> <span class="k">if</span> <span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1027" name="__codelineno-0-1027"></a> <span class="k">return</span>
<a id="__codelineno-0-1028" name="__codelineno-0-1028"></a> <span class="n">mt5_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">()</span>
<a id="__codelineno-0-1029" name="__codelineno-0-1029"></a> <span class="k">with</span> <span class="n">connected_client</span><span class="p">(</span><span class="n">mt5_config</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
<a id="__codelineno-0-1030" name="__codelineno-0-1030"></a> <span class="n">update_history</span><span class="p">(</span>
<a id="__codelineno-0-1031" name="__codelineno-0-1031"></a> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-1032" name="__codelineno-0-1032"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1033" name="__codelineno-0-1033"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1034" name="__codelineno-0-1034"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-1035" name="__codelineno-0-1035"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-1036" name="__codelineno-0-1036"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-1037" name="__codelineno-0-1037"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-1038" name="__codelineno-0-1038"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-1039" name="__codelineno-0-1039"></a> <span class="n">deduplicate</span><span class="o">=</span><span class="n">deduplicate</span><span class="p">,</span>
<a id="__codelineno-0-1040" name="__codelineno-0-1040"></a> <span class="n">create_rate_views</span><span class="o">=</span><span class="n">create_rate_views</span><span class="p">,</span>
<a id="__codelineno-0-1041" name="__codelineno-0-1041"></a> <span class="n">with_views</span><span class="o">=</span><span class="n">with_views</span><span class="p">,</span>
<a id="__codelineno-0-1042" name="__codelineno-0-1042"></a> <span class="n">include_account_events</span><span class="o">=</span><span class="n">include_account_events</span><span class="p">,</span>
<a id="__codelineno-0-1043" name="__codelineno-0-1043"></a> <span class="p">)</span>
<span class="normal"><a href="#__codelineno-0-1043">1043</a></span>
<span class="normal"><a href="#__codelineno-0-1044">1044</a></span>
<span class="normal"><a href="#__codelineno-0-1045">1045</a></span>
<span class="normal"><a href="#__codelineno-0-1046">1046</a></span>
<span class="normal"><a href="#__codelineno-0-1047">1047</a></span>
<span class="normal"><a href="#__codelineno-0-1048">1048</a></span>
<span class="normal"><a href="#__codelineno-0-1049">1049</a></span>
<span class="normal"><a href="#__codelineno-0-1050">1050</a></span>
<span class="normal"><a href="#__codelineno-0-1051">1051</a></span>
<span class="normal"><a href="#__codelineno-0-1052">1052</a></span>
<span class="normal"><a href="#__codelineno-0-1053">1053</a></span>
<span class="normal"><a href="#__codelineno-0-1054">1054</a></span>
<span class="normal"><a href="#__codelineno-0-1055">1055</a></span>
<span class="normal"><a href="#__codelineno-0-1056">1056</a></span>
<span class="normal"><a href="#__codelineno-0-1057">1057</a></span>
<span class="normal"><a href="#__codelineno-0-1058">1058</a></span>
<span class="normal"><a href="#__codelineno-0-1059">1059</a></span>
<span class="normal"><a href="#__codelineno-0-1060">1060</a></span>
<span class="normal"><a href="#__codelineno-0-1061">1061</a></span>
<span class="normal"><a href="#__codelineno-0-1062">1062</a></span>
<span class="normal"><a href="#__codelineno-0-1063">1063</a></span>
<span class="normal"><a href="#__codelineno-0-1064">1064</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1019" name="__codelineno-0-1019"></a><span class="k">def</span><span class="w"> </span><span class="nf">update_history_with_config</span><span class="p">(</span> <span class="c1"># noqa: PLR0913</span>
<a id="__codelineno-0-1020" name="__codelineno-0-1020"></a> <span class="o">*</span><span class="p">,</span>
<a id="__codelineno-0-1021" name="__codelineno-0-1021"></a> <span class="n">output</span><span class="p">:</span> <span class="n">Path</span> <span class="o">|</span> <span class="nb">str</span><span class="p">,</span>
<a id="__codelineno-0-1022" name="__codelineno-0-1022"></a> <span class="n">symbols</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
<a id="__codelineno-0-1023" name="__codelineno-0-1023"></a> <span class="n">config</span><span class="p">:</span> <span class="n">Mt5Config</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1024" name="__codelineno-0-1024"></a> <span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1025" name="__codelineno-0-1025"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1026" name="__codelineno-0-1026"></a> <span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;ALL&quot;</span><span class="p">,</span>
<a id="__codelineno-0-1027" name="__codelineno-0-1027"></a> <span class="n">lookback_hours</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">24.0</span><span class="p">,</span>
<a id="__codelineno-0-1028" name="__codelineno-0-1028"></a> <span class="n">date_to</span><span class="p">:</span> <span class="n">datetime</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-1029" name="__codelineno-0-1029"></a> <span class="n">deduplicate</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1030" name="__codelineno-0-1030"></a> <span class="n">create_rate_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1031" name="__codelineno-0-1031"></a> <span class="n">with_views</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
<a id="__codelineno-0-1032" name="__codelineno-0-1032"></a> <span class="n">include_account_events</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<a id="__codelineno-0-1033" name="__codelineno-0-1033"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1034" name="__codelineno-0-1034"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Incrementally append MT5 history, opening and closing the MT5 connection.</span>
<a id="__codelineno-0-1035" name="__codelineno-0-1035"></a>
<a id="__codelineno-0-1036" name="__codelineno-0-1036"></a><span class="sd"> Convenience wrapper around :func:`update_history` for standalone use.</span>
<a id="__codelineno-0-1037" name="__codelineno-0-1037"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-1038" name="__codelineno-0-1038"></a> <span class="n">request</span> <span class="o">=</span> <span class="n">_resolve_update_history_request</span><span class="p">(</span>
<a id="__codelineno-0-1039" name="__codelineno-0-1039"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1040" name="__codelineno-0-1040"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1041" name="__codelineno-0-1041"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-1042" name="__codelineno-0-1042"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-1043" name="__codelineno-0-1043"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-1044" name="__codelineno-0-1044"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-1045" name="__codelineno-0-1045"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-1046" name="__codelineno-0-1046"></a> <span class="p">)</span>
<a id="__codelineno-0-1047" name="__codelineno-0-1047"></a> <span class="k">if</span> <span class="n">request</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-1048" name="__codelineno-0-1048"></a> <span class="k">return</span>
<a id="__codelineno-0-1049" name="__codelineno-0-1049"></a> <span class="n">mt5_config</span> <span class="o">=</span> <span class="n">config</span> <span class="ow">or</span> <span class="n">build_config</span><span class="p">()</span>
<a id="__codelineno-0-1050" name="__codelineno-0-1050"></a> <span class="k">with</span> <span class="n">connected_client</span><span class="p">(</span><span class="n">mt5_config</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
<a id="__codelineno-0-1051" name="__codelineno-0-1051"></a> <span class="n">update_history</span><span class="p">(</span>
<a id="__codelineno-0-1052" name="__codelineno-0-1052"></a> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span>
<a id="__codelineno-0-1053" name="__codelineno-0-1053"></a> <span class="n">output</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
<a id="__codelineno-0-1054" name="__codelineno-0-1054"></a> <span class="n">symbols</span><span class="o">=</span><span class="n">symbols</span><span class="p">,</span>
<a id="__codelineno-0-1055" name="__codelineno-0-1055"></a> <span class="n">datasets</span><span class="o">=</span><span class="n">datasets</span><span class="p">,</span>
<a id="__codelineno-0-1056" name="__codelineno-0-1056"></a> <span class="n">timeframes</span><span class="o">=</span><span class="n">timeframes</span><span class="p">,</span>
<a id="__codelineno-0-1057" name="__codelineno-0-1057"></a> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">,</span>
<a id="__codelineno-0-1058" name="__codelineno-0-1058"></a> <span class="n">lookback_hours</span><span class="o">=</span><span class="n">lookback_hours</span><span class="p">,</span>
<a id="__codelineno-0-1059" name="__codelineno-0-1059"></a> <span class="n">date_to</span><span class="o">=</span><span class="n">date_to</span><span class="p">,</span>
<a id="__codelineno-0-1060" name="__codelineno-0-1060"></a> <span class="n">deduplicate</span><span class="o">=</span><span class="n">deduplicate</span><span class="p">,</span>
<a id="__codelineno-0-1061" name="__codelineno-0-1061"></a> <span class="n">create_rate_views</span><span class="o">=</span><span class="n">create_rate_views</span><span class="p">,</span>
<a id="__codelineno-0-1062" name="__codelineno-0-1062"></a> <span class="n">with_views</span><span class="o">=</span><span class="n">with_views</span><span class="p">,</span>
<a id="__codelineno-0-1063" name="__codelineno-0-1063"></a> <span class="n">include_account_events</span><span class="o">=</span><span class="n">include_account_events</span><span class="p">,</span>
<a id="__codelineno-0-1064" name="__codelineno-0-1064"></a> <span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
+1183 -902
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -653,5 +653,5 @@
<!--
MkDocs version : 1.6.1
Build Date UTC : 2026-06-18 16:03:02.642937+00:00
Build Date UTC : 2026-06-22 13:53:06.146766+00:00
-->
BIN
View File
Binary file not shown.
File diff suppressed because one or more lines are too long
+13 -13
View File
@@ -2,54 +2,54 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://github.com/dceoy/mt5cli/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/cli/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/client/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/converters/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/exceptions/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/history/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/public-contract/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/schemas/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/sdk/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/storage/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/trading/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
<url>
<loc>https://github.com/dceoy/mt5cli/api/utils/</loc>
<lastmod>2026-06-18</lastmod>
<lastmod>2026-06-22</lastmod>
</url>
</urlset>
BIN
View File
Binary file not shown.