deploy: d27da02f3f
This commit is contained in:
+117
-195
@@ -801,16 +801,7 @@ views <code>cash_events</code> and <code>positions_reconstructed</code> are deri
|
||||
|
||||
|
||||
<a href="#mt5cli.cli.grafana_schema" class="headerlink" title="Permanent link">¶</a></h3>
|
||||
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">grafana_schema</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">ctx</span><span class="p">:</span> <span class="n"><span title="typer.Context">Context</span></span><span class="p">,</span>
|
||||
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">publish_copy</span><span class="p">:</span> <span class="n"><span title="typing.Annotated">Annotated</span></span><span class="p">[</span>
|
||||
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n"><span title="pathlib.Path">Path</span></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n"><span title="typer.Option">Option</span></span><span class="p">(</span>
|
||||
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="s2">"--publish-copy"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n"><span title="typer.Option(help)">help</span></span><span class="o">=</span><span class="s2">"Publish a Grafana-ready SQLite copy to this path after schema creation."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <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">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
||||
<div class="doc-signature highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="nf">grafana_schema</span><span class="p">(</span><span class="n">ctx</span><span class="p">:</span> <span class="n"><span title="typer.Context">Context</span></span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
||||
</code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
@@ -871,71 +862,33 @@ output. Does not connect to MetaTrader 5.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-828">828</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-829">829</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-830">830</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-831">831</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-832">832</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-833">833</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-834">834</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-835">835</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-836">836</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-837">837</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-838">838</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-839">839</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-840">840</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-841">841</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-842">842</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-843">843</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-844">844</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-845">845</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-846">846</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-847">847</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-848">848</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-849">849</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-850">850</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-805" name="__codelineno-0-805"></a><span class="nd">@app</span><span class="o">.</span><span class="n">command</span><span class="p">(</span><span class="n">rich_help_panel</span><span class="o">=</span><span class="s2">"Collection"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-806" name="__codelineno-0-806"></a><span class="k">def</span><span class="w"> </span><span class="nf">grafana_schema</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-807" name="__codelineno-0-807"></a> <span class="n">ctx</span><span class="p">:</span> <span class="n">typer</span><span class="o">.</span><span class="n">Context</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-808" name="__codelineno-0-808"></a> <span class="n">publish_copy</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-809" name="__codelineno-0-809"></a> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-810" name="__codelineno-0-810"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-811" name="__codelineno-0-811"></a> <span class="s2">"--publish-copy"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-812" name="__codelineno-0-812"></a> <span class="n">help</span><span class="o">=</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-813" name="__codelineno-0-813"></a> <span class="s2">"Publish a Grafana-ready SQLite copy to this path"</span>
|
||||
<a id="__codelineno-0-814" name="__codelineno-0-814"></a> <span class="s2">" after schema creation."</span>
|
||||
<a id="__codelineno-0-815" name="__codelineno-0-815"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-816" name="__codelineno-0-816"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-817" name="__codelineno-0-817"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-818" name="__codelineno-0-818"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-819" name="__codelineno-0-819"></a><span class="w"> </span><span class="sd">"""Create or refresh Grafana-ready views and indexes in a SQLite database.</span>
|
||||
<a id="__codelineno-0-820" name="__codelineno-0-820"></a>
|
||||
<a id="__codelineno-0-821" name="__codelineno-0-821"></a><span class="sd"> Idempotent — safe to run repeatedly on the same database. Requires SQLite</span>
|
||||
<a id="__codelineno-0-822" name="__codelineno-0-822"></a><span class="sd"> output. Does not connect to MetaTrader 5.</span>
|
||||
<a id="__codelineno-0-823" name="__codelineno-0-823"></a>
|
||||
<a id="__codelineno-0-824" name="__codelineno-0-824"></a><span class="sd"> Raises:</span>
|
||||
<a id="__codelineno-0-825" name="__codelineno-0-825"></a><span class="sd"> typer.BadParameter: If the output format is not SQLite3.</span>
|
||||
<a id="__codelineno-0-826" name="__codelineno-0-826"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-827" name="__codelineno-0-827"></a> <span class="kn">import</span><span class="w"> </span><span class="nn">sqlite3</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">_sqlite3</span> <span class="c1"># noqa: PLC0415</span>
|
||||
<a id="__codelineno-0-828" name="__codelineno-0-828"></a>
|
||||
<a id="__codelineno-0-829" name="__codelineno-0-829"></a> <span class="kn">from</span><span class="w"> </span><span class="nn">.grafana</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span> <span class="c1"># noqa: PLC0415</span>
|
||||
<a id="__codelineno-0-830" name="__codelineno-0-830"></a> <span class="n">create_snapshot_tables</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-831" name="__codelineno-0-831"></a> <span class="n">ensure_grafana_schema</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-832" name="__codelineno-0-832"></a> <span class="n">publish_grafana_copy</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-833" name="__codelineno-0-833"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-834" name="__codelineno-0-834"></a>
|
||||
<a id="__codelineno-0-835" name="__codelineno-0-835"></a> <span class="n">export_ctx</span> <span class="o">=</span> <span class="n">_get_export_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-836" name="__codelineno-0-836"></a> <span class="k">if</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output_format</span> <span class="o">!=</span> <span class="s2">"sqlite3"</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-837" name="__codelineno-0-837"></a> <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<a id="__codelineno-0-838" name="__codelineno-0-838"></a> <span class="s2">"grafana-schema requires SQLite3 output."</span>
|
||||
<a id="__codelineno-0-839" name="__codelineno-0-839"></a> <span class="s2">" Use a .db/.sqlite/.sqlite3 extension or --format sqlite3."</span>
|
||||
<a id="__codelineno-0-840" name="__codelineno-0-840"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-841" name="__codelineno-0-841"></a> <span class="k">raise</span> <span class="n">typer</span><span class="o">.</span><span class="n">BadParameter</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-842" name="__codelineno-0-842"></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">export_ctx</span><span class="o">.</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-843" name="__codelineno-0-843"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"PRAGMA journal_mode=WAL"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-844" name="__codelineno-0-844"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"PRAGMA synchronous=NORMAL"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-845" name="__codelineno-0-845"></a> <span class="n">create_snapshot_tables</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-846" name="__codelineno-0-846"></a> <span class="n">ensure_grafana_schema</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-847" name="__codelineno-0-847"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Grafana schema applied to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-848" name="__codelineno-0-848"></a> <span class="k">if</span> <span class="n">publish_copy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-849" name="__codelineno-0-849"></a> <span class="n">publish_grafana_copy</span><span class="p">(</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">,</span> <span class="n">publish_copy</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-850" name="__codelineno-0-850"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Grafana copy published to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">publish_copy</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-831">831</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-805" name="__codelineno-0-805"></a><span class="nd">@app</span><span class="o">.</span><span class="n">command</span><span class="p">(</span><span class="n">rich_help_panel</span><span class="o">=</span><span class="s2">"Collection"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-806" name="__codelineno-0-806"></a><span class="k">def</span><span class="w"> </span><span class="nf">grafana_schema</span><span class="p">(</span><span class="n">ctx</span><span class="p">:</span> <span class="n">typer</span><span class="o">.</span><span class="n">Context</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-807" name="__codelineno-0-807"></a><span class="w"> </span><span class="sd">"""Create or refresh Grafana-ready views and indexes in a SQLite database.</span>
|
||||
<a id="__codelineno-0-808" name="__codelineno-0-808"></a>
|
||||
<a id="__codelineno-0-809" name="__codelineno-0-809"></a><span class="sd"> Idempotent — safe to run repeatedly on the same database. Requires SQLite</span>
|
||||
<a id="__codelineno-0-810" name="__codelineno-0-810"></a><span class="sd"> output. Does not connect to MetaTrader 5.</span>
|
||||
<a id="__codelineno-0-811" name="__codelineno-0-811"></a>
|
||||
<a id="__codelineno-0-812" name="__codelineno-0-812"></a><span class="sd"> Raises:</span>
|
||||
<a id="__codelineno-0-813" name="__codelineno-0-813"></a><span class="sd"> typer.BadParameter: If the output format is not SQLite3.</span>
|
||||
<a id="__codelineno-0-814" name="__codelineno-0-814"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-815" name="__codelineno-0-815"></a> <span class="kn">import</span><span class="w"> </span><span class="nn">sqlite3</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">_sqlite3</span> <span class="c1"># noqa: PLC0415</span>
|
||||
<a id="__codelineno-0-816" name="__codelineno-0-816"></a>
|
||||
<a id="__codelineno-0-817" name="__codelineno-0-817"></a> <span class="kn">from</span><span class="w"> </span><span class="nn">.grafana</span><span class="w"> </span><span class="kn">import</span> <span class="n">create_snapshot_tables</span><span class="p">,</span> <span class="n">ensure_grafana_schema</span> <span class="c1"># noqa: PLC0415</span>
|
||||
<a id="__codelineno-0-818" name="__codelineno-0-818"></a>
|
||||
<a id="__codelineno-0-819" name="__codelineno-0-819"></a> <span class="n">export_ctx</span> <span class="o">=</span> <span class="n">_get_export_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-820" name="__codelineno-0-820"></a> <span class="k">if</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output_format</span> <span class="o">!=</span> <span class="s2">"sqlite3"</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-821" name="__codelineno-0-821"></a> <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<a id="__codelineno-0-822" name="__codelineno-0-822"></a> <span class="s2">"grafana-schema requires SQLite3 output."</span>
|
||||
<a id="__codelineno-0-823" name="__codelineno-0-823"></a> <span class="s2">" Use a .db/.sqlite/.sqlite3 extension or --format sqlite3."</span>
|
||||
<a id="__codelineno-0-824" name="__codelineno-0-824"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-825" name="__codelineno-0-825"></a> <span class="k">raise</span> <span class="n">typer</span><span class="o">.</span><span class="n">BadParameter</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-826" name="__codelineno-0-826"></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">export_ctx</span><span class="o">.</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-827" name="__codelineno-0-827"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"PRAGMA journal_mode=WAL"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-828" name="__codelineno-0-828"></a> <span class="n">conn</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"PRAGMA synchronous=NORMAL"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-829" name="__codelineno-0-829"></a> <span class="n">create_snapshot_tables</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-830" name="__codelineno-0-830"></a> <span class="n">ensure_grafana_schema</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-831" name="__codelineno-0-831"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Grafana schema applied to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
|
||||
</code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -1315,11 +1268,11 @@ output. Does not connect to MetaTrader 5.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>mt5cli/cli.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-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></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-930" name="__codelineno-0-930"></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-931" name="__codelineno-0-931"></a><span class="w"> </span><span class="sd">"""Run the mt5cli CLI."""</span>
|
||||
<a id="__codelineno-0-932" name="__codelineno-0-932"></a> <span class="n">app</span><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-899">899</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-900">900</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-901">901</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-899" name="__codelineno-0-899"></a><span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-900" name="__codelineno-0-900"></a><span class="w"> </span><span class="sd">"""Run the mt5cli CLI."""</span>
|
||||
<a id="__codelineno-0-901" name="__codelineno-0-901"></a> <span class="n">app</span><span class="p">()</span>
|
||||
</code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
@@ -2178,14 +2131,7 @@ with no additional validation beyond what MT5 itself performs. Use
|
||||
<a id="__codelineno-0-43" name="__codelineno-0-43" href="#__codelineno-0-43"></a> <span class="n"><span title="typer.Option(help)">help</span></span><span class="o">=</span><span class="s2">"Ensure Grafana views and indexes exist."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-44" name="__codelineno-0-44" href="#__codelineno-0-44"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-45" name="__codelineno-0-45" href="#__codelineno-0-45"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-46" name="__codelineno-0-46" href="#__codelineno-0-46"></a> <span class="n">publish_copy</span><span class="p">:</span> <span class="n"><span title="typing.Annotated">Annotated</span></span><span class="p">[</span>
|
||||
<a id="__codelineno-0-47" name="__codelineno-0-47" href="#__codelineno-0-47"></a> <span class="n"><span title="pathlib.Path">Path</span></span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-48" name="__codelineno-0-48" href="#__codelineno-0-48"></a> <span class="n"><span title="typer.Option">Option</span></span><span class="p">(</span>
|
||||
<a id="__codelineno-0-49" name="__codelineno-0-49" href="#__codelineno-0-49"></a> <span class="s2">"--publish-copy"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-50" name="__codelineno-0-50" href="#__codelineno-0-50"></a> <span class="n"><span title="typer.Option(help)">help</span></span><span class="o">=</span><span class="s2">"Publish a Grafana-ready SQLite copy to this path after snapshot."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-51" name="__codelineno-0-51" href="#__codelineno-0-51"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-52" name="__codelineno-0-52" href="#__codelineno-0-52"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-53" name="__codelineno-0-53" href="#__codelineno-0-53"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
||||
<a id="__codelineno-0-46" name="__codelineno-0-46" href="#__codelineno-0-46"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span>
|
||||
</code></pre></div>
|
||||
|
||||
<div class="doc doc-contents ">
|
||||
@@ -2220,7 +2166,26 @@ orders or modifies trading state.</p>
|
||||
|
||||
<details class="mkdocstrings-source">
|
||||
<summary>Source code in <code>mt5cli/cli.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-853">853</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-834">834</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-835">835</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-836">836</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-837">837</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-838">838</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-839">839</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-840">840</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-841">841</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-842">842</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-843">843</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-844">844</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-845">845</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-846">846</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-847">847</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-848">848</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-849">849</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-850">850</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-851">851</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-852">852</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-853">853</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-854">854</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-855">855</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-856">856</a></span>
|
||||
@@ -2263,112 +2228,69 @@ orders or modifies trading state.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-893">893</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-894">894</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-895">895</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-896">896</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-897">897</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-898">898</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-899">899</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-900">900</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-901">901</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-902">902</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-903">903</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-904">904</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-905">905</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-906">906</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-907">907</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-908">908</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-909">909</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-910">910</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-911">911</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-912">912</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-913">913</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-914">914</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-915">915</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-916">916</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-917">917</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-918">918</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-919">919</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-920">920</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-921">921</a></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></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-853" name="__codelineno-0-853"></a><span class="nd">@app</span><span class="o">.</span><span class="n">command</span><span class="p">(</span><span class="n">rich_help_panel</span><span class="o">=</span><span class="s2">"Collection"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-854" name="__codelineno-0-854"></a><span class="k">def</span><span class="w"> </span><span class="nf">snapshot</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-855" name="__codelineno-0-855"></a> <span class="n">ctx</span><span class="p">:</span> <span class="n">typer</span><span class="o">.</span><span class="n">Context</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-856" name="__codelineno-0-856"></a> <span class="n">symbol</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-857" name="__codelineno-0-857"></a> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-858" name="__codelineno-0-858"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-859" name="__codelineno-0-859"></a> <span class="s2">"--symbol"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-860" name="__codelineno-0-860"></a> <span class="s2">"-s"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-861" name="__codelineno-0-861"></a> <span class="n">help</span><span class="o">=</span><span class="s2">"Symbol filter for positions/orders (repeat for multiple)."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-862" name="__codelineno-0-862"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-863" name="__codelineno-0-863"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-864" name="__codelineno-0-864"></a> <span class="n">with_account</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-865" name="__codelineno-0-865"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-866" name="__codelineno-0-866"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-account/--no-account"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot account info."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-867" name="__codelineno-0-867"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-868" name="__codelineno-0-868"></a> <span class="n">with_positions</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-869" name="__codelineno-0-869"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-870" name="__codelineno-0-870"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-871" name="__codelineno-0-871"></a> <span class="s2">"--with-positions/--no-positions"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot open positions."</span>
|
||||
<a id="__codelineno-0-872" name="__codelineno-0-872"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-873" name="__codelineno-0-873"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-874" name="__codelineno-0-874"></a> <span class="n">with_orders</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-875" name="__codelineno-0-875"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-876" name="__codelineno-0-876"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-orders/--no-orders"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot active orders."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-877" name="__codelineno-0-877"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-878" name="__codelineno-0-878"></a> <span class="n">with_terminal</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-879" name="__codelineno-0-879"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-880" name="__codelineno-0-880"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-terminal/--no-terminal"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot terminal info."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-881" name="__codelineno-0-881"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-882" name="__codelineno-0-882"></a> <span class="n">with_grafana_schema</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-883" name="__codelineno-0-883"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-884" name="__codelineno-0-884"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-885" name="__codelineno-0-885"></a> <span class="s2">"--with-grafana-schema/--no-grafana-schema"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-886" name="__codelineno-0-886"></a> <span class="n">help</span><span class="o">=</span><span class="s2">"Ensure Grafana views and indexes exist."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-887" name="__codelineno-0-887"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-888" name="__codelineno-0-888"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-889" name="__codelineno-0-889"></a> <span class="n">publish_copy</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-890" name="__codelineno-0-890"></a> <span class="n">Path</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-891" name="__codelineno-0-891"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-892" name="__codelineno-0-892"></a> <span class="s2">"--publish-copy"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-893" name="__codelineno-0-893"></a> <span class="n">help</span><span class="o">=</span><span class="p">(</span><span class="s2">"Publish a Grafana-ready SQLite copy to this path after snapshot."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-894" name="__codelineno-0-894"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-895" name="__codelineno-0-895"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-896" name="__codelineno-0-896"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-897" name="__codelineno-0-897"></a><span class="w"> </span><span class="sd">"""Snapshot current account, position, order, and terminal state into SQLite.</span>
|
||||
<a id="__codelineno-0-898" name="__codelineno-0-898"></a>
|
||||
<a id="__codelineno-0-899" name="__codelineno-0-899"></a><span class="sd"> Appends a timestamped snapshot row for each data type. Never places</span>
|
||||
<a id="__codelineno-0-900" name="__codelineno-0-900"></a><span class="sd"> orders or modifies trading state.</span>
|
||||
<a id="__codelineno-0-901" name="__codelineno-0-901"></a>
|
||||
<a id="__codelineno-0-902" name="__codelineno-0-902"></a><span class="sd"> Raises:</span>
|
||||
<a id="__codelineno-0-903" name="__codelineno-0-903"></a><span class="sd"> typer.BadParameter: If the output format is not SQLite3.</span>
|
||||
<a id="__codelineno-0-904" name="__codelineno-0-904"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-905" name="__codelineno-0-905"></a> <span class="n">export_ctx</span> <span class="o">=</span> <span class="n">_get_export_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-906" name="__codelineno-0-906"></a> <span class="k">if</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output_format</span> <span class="o">!=</span> <span class="s2">"sqlite3"</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-907" name="__codelineno-0-907"></a> <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<a id="__codelineno-0-908" name="__codelineno-0-908"></a> <span class="s2">"snapshot requires SQLite3 output."</span>
|
||||
<a id="__codelineno-0-909" name="__codelineno-0-909"></a> <span class="s2">" Use a .db/.sqlite/.sqlite3 extension or --format sqlite3."</span>
|
||||
<a id="__codelineno-0-910" name="__codelineno-0-910"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-911" name="__codelineno-0-911"></a> <span class="k">raise</span> <span class="n">typer</span><span class="o">.</span><span class="n">BadParameter</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-912" name="__codelineno-0-912"></a> <span class="n">sdk</span><span class="o">.</span><span class="n">update_observability_with_config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-913" name="__codelineno-0-913"></a> <span class="n">output</span><span class="o">=</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-914" name="__codelineno-0-914"></a> <span class="n">config</span><span class="o">=</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-915" name="__codelineno-0-915"></a> <span class="n">symbols</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">symbol</span><span class="p">)</span> <span class="k">if</span> <span class="n">symbol</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-916" name="__codelineno-0-916"></a> <span class="n">include_account</span><span class="o">=</span><span class="n">with_account</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-917" name="__codelineno-0-917"></a> <span class="n">include_positions</span><span class="o">=</span><span class="n">with_positions</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-918" name="__codelineno-0-918"></a> <span class="n">include_orders</span><span class="o">=</span><span class="n">with_orders</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-919" name="__codelineno-0-919"></a> <span class="n">include_terminal</span><span class="o">=</span><span class="n">with_terminal</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-920" name="__codelineno-0-920"></a> <span class="n">with_grafana_schema</span><span class="o">=</span><span class="n">with_grafana_schema</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-921" name="__codelineno-0-921"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-922" name="__codelineno-0-922"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Snapshot written to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-923" name="__codelineno-0-923"></a> <span class="k">if</span> <span class="n">publish_copy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-924" name="__codelineno-0-924"></a> <span class="kn">from</span><span class="w"> </span><span class="nn">.grafana</span><span class="w"> </span><span class="kn">import</span> <span class="n">publish_grafana_copy</span> <span class="c1"># noqa: PLC0415</span>
|
||||
<a id="__codelineno-0-925" name="__codelineno-0-925"></a>
|
||||
<a id="__codelineno-0-926" name="__codelineno-0-926"></a> <span class="n">publish_grafana_copy</span><span class="p">(</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">,</span> <span class="n">publish_copy</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-927" name="__codelineno-0-927"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Grafana copy published to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">publish_copy</span><span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-896">896</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-834" name="__codelineno-0-834"></a><span class="nd">@app</span><span class="o">.</span><span class="n">command</span><span class="p">(</span><span class="n">rich_help_panel</span><span class="o">=</span><span class="s2">"Collection"</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-835" name="__codelineno-0-835"></a><span class="k">def</span><span class="w"> </span><span class="nf">snapshot</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-836" name="__codelineno-0-836"></a> <span class="n">ctx</span><span class="p">:</span> <span class="n">typer</span><span class="o">.</span><span class="n">Context</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-837" name="__codelineno-0-837"></a> <span class="n">symbol</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-838" name="__codelineno-0-838"></a> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-839" name="__codelineno-0-839"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-840" name="__codelineno-0-840"></a> <span class="s2">"--symbol"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-841" name="__codelineno-0-841"></a> <span class="s2">"-s"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-842" name="__codelineno-0-842"></a> <span class="n">help</span><span class="o">=</span><span class="s2">"Symbol filter for positions/orders (repeat for multiple)."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-843" name="__codelineno-0-843"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-844" name="__codelineno-0-844"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-845" name="__codelineno-0-845"></a> <span class="n">with_account</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-846" name="__codelineno-0-846"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-847" name="__codelineno-0-847"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-account/--no-account"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot account info."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-848" name="__codelineno-0-848"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-849" name="__codelineno-0-849"></a> <span class="n">with_positions</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-850" name="__codelineno-0-850"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-851" name="__codelineno-0-851"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-852" name="__codelineno-0-852"></a> <span class="s2">"--with-positions/--no-positions"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot open positions."</span>
|
||||
<a id="__codelineno-0-853" name="__codelineno-0-853"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-854" name="__codelineno-0-854"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-855" name="__codelineno-0-855"></a> <span class="n">with_orders</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-856" name="__codelineno-0-856"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-857" name="__codelineno-0-857"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-orders/--no-orders"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot active orders."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-858" name="__codelineno-0-858"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-859" name="__codelineno-0-859"></a> <span class="n">with_terminal</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-860" name="__codelineno-0-860"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-861" name="__codelineno-0-861"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span><span class="s2">"--with-terminal/--no-terminal"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Snapshot terminal info."</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-862" name="__codelineno-0-862"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-863" name="__codelineno-0-863"></a> <span class="n">with_grafana_schema</span><span class="p">:</span> <span class="n">Annotated</span><span class="p">[</span>
|
||||
<a id="__codelineno-0-864" name="__codelineno-0-864"></a> <span class="nb">bool</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-865" name="__codelineno-0-865"></a> <span class="n">typer</span><span class="o">.</span><span class="n">Option</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-866" name="__codelineno-0-866"></a> <span class="s2">"--with-grafana-schema/--no-grafana-schema"</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-867" name="__codelineno-0-867"></a> <span class="n">help</span><span class="o">=</span><span class="s2">"Ensure Grafana views and indexes exist."</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-868" name="__codelineno-0-868"></a> <span class="p">),</span>
|
||||
<a id="__codelineno-0-869" name="__codelineno-0-869"></a> <span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-870" name="__codelineno-0-870"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-871" name="__codelineno-0-871"></a><span class="w"> </span><span class="sd">"""Snapshot current account, position, order, and terminal state into SQLite.</span>
|
||||
<a id="__codelineno-0-872" name="__codelineno-0-872"></a>
|
||||
<a id="__codelineno-0-873" name="__codelineno-0-873"></a><span class="sd"> Appends a timestamped snapshot row for each data type. Never places</span>
|
||||
<a id="__codelineno-0-874" name="__codelineno-0-874"></a><span class="sd"> orders or modifies trading state.</span>
|
||||
<a id="__codelineno-0-875" name="__codelineno-0-875"></a>
|
||||
<a id="__codelineno-0-876" name="__codelineno-0-876"></a><span class="sd"> Raises:</span>
|
||||
<a id="__codelineno-0-877" name="__codelineno-0-877"></a><span class="sd"> typer.BadParameter: If the output format is not SQLite3.</span>
|
||||
<a id="__codelineno-0-878" name="__codelineno-0-878"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-879" name="__codelineno-0-879"></a> <span class="n">export_ctx</span> <span class="o">=</span> <span class="n">_get_export_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-880" name="__codelineno-0-880"></a> <span class="k">if</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output_format</span> <span class="o">!=</span> <span class="s2">"sqlite3"</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-881" name="__codelineno-0-881"></a> <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<a id="__codelineno-0-882" name="__codelineno-0-882"></a> <span class="s2">"snapshot requires SQLite3 output."</span>
|
||||
<a id="__codelineno-0-883" name="__codelineno-0-883"></a> <span class="s2">" Use a .db/.sqlite/.sqlite3 extension or --format sqlite3."</span>
|
||||
<a id="__codelineno-0-884" name="__codelineno-0-884"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-885" name="__codelineno-0-885"></a> <span class="k">raise</span> <span class="n">typer</span><span class="o">.</span><span class="n">BadParameter</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
<a id="__codelineno-0-886" name="__codelineno-0-886"></a> <span class="n">sdk</span><span class="o">.</span><span class="n">update_observability_with_config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-887" name="__codelineno-0-887"></a> <span class="n">output</span><span class="o">=</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-888" name="__codelineno-0-888"></a> <span class="n">config</span><span class="o">=</span><span class="n">export_ctx</span><span class="o">.</span><span class="n">config</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-889" name="__codelineno-0-889"></a> <span class="n">symbols</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">symbol</span><span class="p">)</span> <span class="k">if</span> <span class="n">symbol</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-890" name="__codelineno-0-890"></a> <span class="n">include_account</span><span class="o">=</span><span class="n">with_account</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-891" name="__codelineno-0-891"></a> <span class="n">include_positions</span><span class="o">=</span><span class="n">with_positions</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-892" name="__codelineno-0-892"></a> <span class="n">include_orders</span><span class="o">=</span><span class="n">with_orders</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-893" name="__codelineno-0-893"></a> <span class="n">include_terminal</span><span class="o">=</span><span class="n">with_terminal</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-894" name="__codelineno-0-894"></a> <span class="n">with_grafana_schema</span><span class="o">=</span><span class="n">with_grafana_schema</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-895" name="__codelineno-0-895"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-896" name="__codelineno-0-896"></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Snapshot written to </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">export_ctx</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
|
||||
</code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
+88
-88
@@ -242,7 +242,8 @@ 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-432">432</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-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>
|
||||
@@ -276,43 +277,42 @@ responsibility of downstream applications.</p>
|
||||
<span class="normal"><a href="#__codelineno-0-463">463</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-464">464</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-465">465</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-466">466</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-467">467</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-432" name="__codelineno-0-432"></a><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="bp">self</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-434" name="__codelineno-0-434"></a> <span class="o">*</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-435" name="__codelineno-0-435"></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-436" name="__codelineno-0-436"></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-437" name="__codelineno-0-437"></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-438" name="__codelineno-0-438"></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-439" name="__codelineno-0-439"></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-440" name="__codelineno-0-440"></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-441" name="__codelineno-0-441"></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-442" name="__codelineno-0-442"></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-443" name="__codelineno-0-443"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-444" name="__codelineno-0-444"></a><span class="w"> </span><span class="sd">"""Initialize the SDK client.</span>
|
||||
<a id="__codelineno-0-445" name="__codelineno-0-445"></a>
|
||||
<a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="sd"> Args:</span>
|
||||
<a id="__codelineno-0-447" name="__codelineno-0-447"></a><span class="sd"> path: Path to MetaTrader5 terminal EXE file.</span>
|
||||
<a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="sd"> login: Trading account login.</span>
|
||||
<a id="__codelineno-0-449" name="__codelineno-0-449"></a><span class="sd"> password: Trading account password.</span>
|
||||
<a id="__codelineno-0-450" name="__codelineno-0-450"></a><span class="sd"> server: Trading server name.</span>
|
||||
<a id="__codelineno-0-451" name="__codelineno-0-451"></a><span class="sd"> timeout: Connection timeout in milliseconds.</span>
|
||||
<a id="__codelineno-0-452" name="__codelineno-0-452"></a><span class="sd"> retry_count: Number of MT5 initialization retries for sessions</span>
|
||||
<a id="__codelineno-0-453" name="__codelineno-0-453"></a><span class="sd"> opened by this client.</span>
|
||||
<a id="__codelineno-0-454" name="__codelineno-0-454"></a><span class="sd"> config: Optional pre-built ``Mt5Config`` (overrides other args).</span>
|
||||
<a id="__codelineno-0-455" name="__codelineno-0-455"></a><span class="sd"> client: Optional already-connected ``Mt5DataClient``. Injected</span>
|
||||
<a id="__codelineno-0-456" name="__codelineno-0-456"></a><span class="sd"> clients are reused as-is and are not initialized or shut down.</span>
|
||||
<a id="__codelineno-0-457" name="__codelineno-0-457"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-458" name="__codelineno-0-458"></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-459" name="__codelineno-0-459"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-460" name="__codelineno-0-460"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-461" name="__codelineno-0-461"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-462" name="__codelineno-0-462"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-463" name="__codelineno-0-463"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-464" name="__codelineno-0-464"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-465" name="__codelineno-0-465"></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-466" name="__codelineno-0-466"></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-467" name="__codelineno-0-467"></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-466">466</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-431" name="__codelineno-0-431"></a><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-432" name="__codelineno-0-432"></a> <span class="bp">self</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-433" name="__codelineno-0-433"></a> <span class="o">*</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-434" name="__codelineno-0-434"></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-435" name="__codelineno-0-435"></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-436" name="__codelineno-0-436"></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-437" name="__codelineno-0-437"></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-438" name="__codelineno-0-438"></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-439" name="__codelineno-0-439"></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-440" name="__codelineno-0-440"></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-441" name="__codelineno-0-441"></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-442" name="__codelineno-0-442"></a><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-443" name="__codelineno-0-443"></a><span class="w"> </span><span class="sd">"""Initialize the SDK client.</span>
|
||||
<a id="__codelineno-0-444" name="__codelineno-0-444"></a>
|
||||
<a id="__codelineno-0-445" name="__codelineno-0-445"></a><span class="sd"> Args:</span>
|
||||
<a id="__codelineno-0-446" name="__codelineno-0-446"></a><span class="sd"> path: Path to MetaTrader5 terminal EXE file.</span>
|
||||
<a id="__codelineno-0-447" name="__codelineno-0-447"></a><span class="sd"> login: Trading account login.</span>
|
||||
<a id="__codelineno-0-448" name="__codelineno-0-448"></a><span class="sd"> password: Trading account password.</span>
|
||||
<a id="__codelineno-0-449" name="__codelineno-0-449"></a><span class="sd"> server: Trading server name.</span>
|
||||
<a id="__codelineno-0-450" name="__codelineno-0-450"></a><span class="sd"> timeout: Connection timeout in milliseconds.</span>
|
||||
<a id="__codelineno-0-451" name="__codelineno-0-451"></a><span class="sd"> retry_count: Number of MT5 initialization retries for sessions</span>
|
||||
<a id="__codelineno-0-452" name="__codelineno-0-452"></a><span class="sd"> opened by this client.</span>
|
||||
<a id="__codelineno-0-453" name="__codelineno-0-453"></a><span class="sd"> config: Optional pre-built ``Mt5Config`` (overrides other args).</span>
|
||||
<a id="__codelineno-0-454" name="__codelineno-0-454"></a><span class="sd"> client: Optional already-connected ``Mt5DataClient``. Injected</span>
|
||||
<a id="__codelineno-0-455" name="__codelineno-0-455"></a><span class="sd"> clients are reused as-is and are not initialized or shut down.</span>
|
||||
<a id="__codelineno-0-456" name="__codelineno-0-456"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-457" name="__codelineno-0-457"></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-458" name="__codelineno-0-458"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-459" name="__codelineno-0-459"></a> <span class="n">login</span><span class="o">=</span><span class="n">login</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-460" name="__codelineno-0-460"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-461" name="__codelineno-0-461"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-462" name="__codelineno-0-462"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-463" name="__codelineno-0-463"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-464" name="__codelineno-0-464"></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-465" name="__codelineno-0-465"></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-466" name="__codelineno-0-466"></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>
|
||||
|
||||
@@ -789,7 +789,8 @@ to <code>path</code>, <code>login</code>, <code>password</code>, and <code>serve
|
||||
|
||||
<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-324">324</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-323">323</a></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>
|
||||
@@ -835,55 +836,54 @@ to <code>path</code>, <code>login</code>, <code>password</code>, and <code>serve
|
||||
<span class="normal"><a href="#__codelineno-0-367">367</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-368">368</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-369">369</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-370">370</a></span>
|
||||
<span class="normal"><a href="#__codelineno-0-371">371</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-324" name="__codelineno-0-324"></a><span class="k">def</span><span class="w"> </span><span class="nf">build_config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-325" name="__codelineno-0-325"></a> <span class="o">*</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-326" name="__codelineno-0-326"></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-327" name="__codelineno-0-327"></a> <span class="n">login</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="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-328" name="__codelineno-0-328"></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-329" name="__codelineno-0-329"></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-330" name="__codelineno-0-330"></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-331" name="__codelineno-0-331"></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-332" name="__codelineno-0-332"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Mt5Config</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-333" name="__codelineno-0-333"></a><span class="w"> </span><span class="sd">"""Build an ``Mt5Config`` from optional connection parameters.</span>
|
||||
<a id="__codelineno-0-334" name="__codelineno-0-334"></a>
|
||||
<a id="__codelineno-0-335" name="__codelineno-0-335"></a><span class="sd"> Args:</span>
|
||||
<a id="__codelineno-0-336" name="__codelineno-0-336"></a><span class="sd"> path: Optional terminal executable path.</span>
|
||||
<a id="__codelineno-0-337" name="__codelineno-0-337"></a><span class="sd"> login: Optional trading account login. Integers are preserved. String</span>
|
||||
<a id="__codelineno-0-338" name="__codelineno-0-338"></a><span class="sd"> values are coerced: empty or whitespace-only strings become</span>
|
||||
<a id="__codelineno-0-339" name="__codelineno-0-339"></a><span class="sd"> ``None``; numeric strings such as ``"12345"`` are converted to</span>
|
||||
<a id="__codelineno-0-340" name="__codelineno-0-340"></a><span class="sd"> ``int``; non-numeric strings raise ``ValueError``. When</span>
|
||||
<a id="__codelineno-0-341" name="__codelineno-0-341"></a><span class="sd"> ``allow_whole_dollar_env=True``, ``$ENV_NAME`` and</span>
|
||||
<a id="__codelineno-0-342" name="__codelineno-0-342"></a><span class="sd"> ``${ENV_NAME}`` placeholders are expanded before coercion.</span>
|
||||
<a id="__codelineno-0-343" name="__codelineno-0-343"></a><span class="sd"> password: Optional trading account password.</span>
|
||||
<a id="__codelineno-0-344" name="__codelineno-0-344"></a><span class="sd"> server: Optional trading server name.</span>
|
||||
<a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="sd"> timeout: Optional connection timeout in milliseconds.</span>
|
||||
<a id="__codelineno-0-346" name="__codelineno-0-346"></a><span class="sd"> allow_whole_dollar_env: When ``True``, string parameters that are</span>
|
||||
<a id="__codelineno-0-347" name="__codelineno-0-347"></a><span class="sd"> exactly ``$ENV_NAME`` are expanded from the environment. Applies</span>
|
||||
<a id="__codelineno-0-348" name="__codelineno-0-348"></a><span class="sd"> to ``path``, ``login``, ``password``, and ``server``. Default</span>
|
||||
<a id="__codelineno-0-349" name="__codelineno-0-349"></a><span class="sd"> ``False`` preserves existing behavior.</span>
|
||||
<a id="__codelineno-0-350" name="__codelineno-0-350"></a>
|
||||
<a id="__codelineno-0-351" name="__codelineno-0-351"></a><span class="sd"> Returns:</span>
|
||||
<a id="__codelineno-0-352" name="__codelineno-0-352"></a><span class="sd"> Configured ``Mt5Config`` instance.</span>
|
||||
<a id="__codelineno-0-353" name="__codelineno-0-353"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-354" name="__codelineno-0-354"></a> <span class="k">if</span> <span class="n">allow_whole_dollar_env</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-355" name="__codelineno-0-355"></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-356" name="__codelineno-0-356"></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-357" name="__codelineno-0-357"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">login</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<a id="__codelineno-0-358" name="__codelineno-0-358"></a> <span class="n">login</span> <span class="o">=</span> <span class="n">substitute_env_placeholders</span><span class="p">(</span><span class="n">login</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-359" name="__codelineno-0-359"></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-360" name="__codelineno-0-360"></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-361" name="__codelineno-0-361"></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-362" name="__codelineno-0-362"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-363" name="__codelineno-0-363"></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-364" name="__codelineno-0-364"></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-365" name="__codelineno-0-365"></a> <span class="k">return</span> <span class="n">Mt5Config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="n">login</span><span class="o">=</span><span class="n">_coerce_login</span><span class="p">(</span><span class="n">login</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-368" name="__codelineno-0-368"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-369" name="__codelineno-0-369"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-370" name="__codelineno-0-370"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-371" name="__codelineno-0-371"></a> <span class="p">)</span>
|
||||
<span class="normal"><a href="#__codelineno-0-370">370</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-323" name="__codelineno-0-323"></a><span class="k">def</span><span class="w"> </span><span class="nf">build_config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-324" name="__codelineno-0-324"></a> <span class="o">*</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-325" name="__codelineno-0-325"></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-326" name="__codelineno-0-326"></a> <span class="n">login</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="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-327" name="__codelineno-0-327"></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-328" name="__codelineno-0-328"></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-329" name="__codelineno-0-329"></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-330" name="__codelineno-0-330"></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-331" name="__codelineno-0-331"></a><span class="p">)</span> <span class="o">-></span> <span class="n">Mt5Config</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-332" name="__codelineno-0-332"></a><span class="w"> </span><span class="sd">"""Build an ``Mt5Config`` from optional connection parameters.</span>
|
||||
<a id="__codelineno-0-333" name="__codelineno-0-333"></a>
|
||||
<a id="__codelineno-0-334" name="__codelineno-0-334"></a><span class="sd"> Args:</span>
|
||||
<a id="__codelineno-0-335" name="__codelineno-0-335"></a><span class="sd"> path: Optional terminal executable path.</span>
|
||||
<a id="__codelineno-0-336" name="__codelineno-0-336"></a><span class="sd"> login: Optional trading account login. Integers are preserved. String</span>
|
||||
<a id="__codelineno-0-337" name="__codelineno-0-337"></a><span class="sd"> values are coerced: empty or whitespace-only strings become</span>
|
||||
<a id="__codelineno-0-338" name="__codelineno-0-338"></a><span class="sd"> ``None``; numeric strings such as ``"12345"`` are converted to</span>
|
||||
<a id="__codelineno-0-339" name="__codelineno-0-339"></a><span class="sd"> ``int``; non-numeric strings raise ``ValueError``. When</span>
|
||||
<a id="__codelineno-0-340" name="__codelineno-0-340"></a><span class="sd"> ``allow_whole_dollar_env=True``, ``$ENV_NAME`` and</span>
|
||||
<a id="__codelineno-0-341" name="__codelineno-0-341"></a><span class="sd"> ``${ENV_NAME}`` placeholders are expanded before coercion.</span>
|
||||
<a id="__codelineno-0-342" name="__codelineno-0-342"></a><span class="sd"> password: Optional trading account password.</span>
|
||||
<a id="__codelineno-0-343" name="__codelineno-0-343"></a><span class="sd"> server: Optional trading server name.</span>
|
||||
<a id="__codelineno-0-344" name="__codelineno-0-344"></a><span class="sd"> timeout: Optional connection timeout in milliseconds.</span>
|
||||
<a id="__codelineno-0-345" name="__codelineno-0-345"></a><span class="sd"> allow_whole_dollar_env: When ``True``, string parameters that are</span>
|
||||
<a id="__codelineno-0-346" name="__codelineno-0-346"></a><span class="sd"> exactly ``$ENV_NAME`` are expanded from the environment. Applies</span>
|
||||
<a id="__codelineno-0-347" name="__codelineno-0-347"></a><span class="sd"> to ``path``, ``login``, ``password``, and ``server``. Default</span>
|
||||
<a id="__codelineno-0-348" name="__codelineno-0-348"></a><span class="sd"> ``False`` preserves existing behavior.</span>
|
||||
<a id="__codelineno-0-349" name="__codelineno-0-349"></a>
|
||||
<a id="__codelineno-0-350" name="__codelineno-0-350"></a><span class="sd"> Returns:</span>
|
||||
<a id="__codelineno-0-351" name="__codelineno-0-351"></a><span class="sd"> Configured ``Mt5Config`` instance.</span>
|
||||
<a id="__codelineno-0-352" name="__codelineno-0-352"></a><span class="sd"> """</span>
|
||||
<a id="__codelineno-0-353" name="__codelineno-0-353"></a> <span class="k">if</span> <span class="n">allow_whole_dollar_env</span><span class="p">:</span>
|
||||
<a id="__codelineno-0-354" name="__codelineno-0-354"></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-355" name="__codelineno-0-355"></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-356" name="__codelineno-0-356"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">login</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
||||
<a id="__codelineno-0-357" name="__codelineno-0-357"></a> <span class="n">login</span> <span class="o">=</span> <span class="n">substitute_env_placeholders</span><span class="p">(</span><span class="n">login</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-358" name="__codelineno-0-358"></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-359" name="__codelineno-0-359"></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-360" name="__codelineno-0-360"></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-361" name="__codelineno-0-361"></a> <span class="p">)</span>
|
||||
<a id="__codelineno-0-362" name="__codelineno-0-362"></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-363" name="__codelineno-0-363"></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-364" name="__codelineno-0-364"></a> <span class="k">return</span> <span class="n">Mt5Config</span><span class="p">(</span>
|
||||
<a id="__codelineno-0-365" name="__codelineno-0-365"></a> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-366" name="__codelineno-0-366"></a> <span class="n">login</span><span class="o">=</span><span class="n">_coerce_login</span><span class="p">(</span><span class="n">login</span><span class="p">),</span>
|
||||
<a id="__codelineno-0-367" name="__codelineno-0-367"></a> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-368" name="__codelineno-0-368"></a> <span class="n">server</span><span class="o">=</span><span class="n">server</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-369" name="__codelineno-0-369"></a> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">,</span>
|
||||
<a id="__codelineno-0-370" name="__codelineno-0-370"></a> <span class="p">)</span>
|
||||
</code></pre></div></td></tr></table></div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
+1826
-1830
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -668,5 +668,5 @@ applications should prefer dedicated closing helpers or their own risk controls.
|
||||
|
||||
<!--
|
||||
MkDocs version : 1.6.1
|
||||
Build Date UTC : 2026-06-27 23:18:35.080804+00:00
|
||||
Build Date UTC : 2026-06-27 23:21:19.419404+00:00
|
||||
-->
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user