This commit is contained in:
dceoy
2026-06-26 09:24:23 +00:00
parent da5afc496b
commit a228b52245
18 changed files with 132 additions and 5179 deletions
+18 -21
View File
@@ -58,10 +58,6 @@
<a href="../schemas/" class="dropdown-item">Schemas</a>
</li>
<li>
<a href="../storage/" class="dropdown-item">Storage</a>
</li>
<li>
<a href="../converters/" class="dropdown-item">Converters</a>
</li>
@@ -8905,23 +8901,24 @@ between successful runs (using a monotonic clock), so an application loop can
call it every iteration without over-fetching.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">pdmt5</span><span class="w"> </span><span class="kn">import</span> <span class="n">Mt5Config</span><span class="p">,</span> <span class="n">Mt5DataClient</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">mt5cli</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span><span class="p">,</span> <span class="n">ThrottledHistoryUpdater</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="n">updater</span> <span class="o">=</span> <span class="n">ThrottledHistoryUpdater</span><span class="p">(</span>
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> <span class="n">output</span><span class="o">=</span><span class="s2">&quot;history.db&quot;</span><span class="p">,</span>
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="n">datasets</span><span class="o">=</span><span class="p">{</span><span class="n">Dataset</span><span class="o">.</span><span class="n">rates</span><span class="p">},</span>
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="n">timeframes</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;M1&quot;</span><span class="p">],</span>
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="n">interval_seconds</span><span class="o">=</span><span class="mi">60</span><span class="p">,</span> <span class="c1"># &lt;= 0 updates on every call</span>
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="p">)</span>
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a>
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="n">client</span> <span class="o">=</span> <span class="n">Mt5DataClient</span><span class="p">(</span><span class="n">config</span><span class="o">=</span><span class="n">Mt5Config</span><span class="p">(</span><span class="n">login</span><span class="o">=</span><span class="mi">12345</span><span class="p">))</span>
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="n">client</span><span class="o">.</span><span class="n">initialize_and_login_mt5</span><span class="p">()</span>
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="k">try</span><span class="p">:</span>
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a> <span class="n">updater</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;EURUSD&quot;</span><span class="p">,</span> <span class="s2">&quot;GBPUSD&quot;</span><span class="p">])</span> <span class="c1"># no-op until 60s elapse</span>
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a> <span class="c1"># ... do other work; break when shutting down ...</span>
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="k">finally</span><span class="p">:</span>
<a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a> <span class="n">client</span><span class="o">.</span><span class="n">shutdown</span><span class="p">()</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kn">from</span><span class="w"> </span><span class="nn">mt5cli</span><span class="w"> </span><span class="kn">import</span> <span class="n">ThrottledHistoryUpdater</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="kn">from</span><span class="w"> </span><span class="nn">mt5cli.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dataset</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a>
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="n">updater</span> <span class="o">=</span> <span class="n">ThrottledHistoryUpdater</span><span class="p">(</span>
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="n">output</span><span class="o">=</span><span class="s2">&quot;history.db&quot;</span><span class="p">,</span>
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="n">datasets</span><span class="o">=</span><span class="p">{</span><span class="n">Dataset</span><span class="o">.</span><span class="n">rates</span><span class="p">},</span>
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="n">timeframes</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;M1&quot;</span><span class="p">],</span>
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="n">interval_seconds</span><span class="o">=</span><span class="mi">60</span><span class="p">,</span> <span class="c1"># &lt;= 0 updates on every call</span>
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="p">)</span>
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a>
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="n">client</span> <span class="o">=</span> <span class="n">Mt5DataClient</span><span class="p">(</span><span class="n">config</span><span class="o">=</span><span class="n">Mt5Config</span><span class="p">(</span><span class="n">login</span><span class="o">=</span><span class="mi">12345</span><span class="p">))</span>
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="n">client</span><span class="o">.</span><span class="n">initialize_and_login_mt5</span><span class="p">()</span>
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a><span class="k">try</span><span class="p">:</span>
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a> <span class="n">updater</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="p">[</span><span class="s2">&quot;EURUSD&quot;</span><span class="p">,</span> <span class="s2">&quot;GBPUSD&quot;</span><span class="p">])</span> <span class="c1"># no-op until 60s elapse</span>
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a> <span class="c1"># ... do other work; break when shutting down ...</span>
<a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a><span class="k">finally</span><span class="p">:</span>
<a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a> <span class="n">client</span><span class="o">.</span><span class="n">shutdown</span><span class="p">()</span>
</code></pre></div>
<p>Pass <code>update_backend</code> to substitute the default <code>update_history</code> implementation
without monkey-patching <code>mt5cli.sdk.update_history</code>. The callable receives the