This commit is contained in:
dceoy
2026-06-11 14:23:26 +00:00
parent 019c16a261
commit 42f16af1aa
7 changed files with 2038 additions and 2048 deletions
+56 -58
View File
@@ -171,13 +171,13 @@
</span>
<a href="#mt5cli.history.DEFAULT_HISTORY_TIMEFRAMES" class="headerlink" title="Permanent link">&para;</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="n">DEFAULT_HISTORY_TIMEFRAMES</span><span class="p">:</span> <span class="n"><span title="tuple">tuple</span></span><span class="p">[</span><span class="n"><span title="str">str</span></span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">=</span> <span class="n"><span title="tuple">tuple</span></span><span class="p">(</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n"><a class="autorefs autorefs-internal" title="TIMEFRAME_MAP
<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="n">DEFAULT_HISTORY_TIMEFRAMES</span><span class="p">:</span> <span class="n"><span title="tuple">tuple</span></span><span class="p">[</span><span class="n"><span title="str">str</span></span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n"><a class="autorefs autorefs-internal" title="TIMEFRAME_NAMES
module-attribute
(mt5cli.utils.TIMEFRAME_MAP)" href="../utils/#mt5cli.utils.TIMEFRAME_MAP">TIMEFRAME_MAP</a></span>
(mt5cli.utils.TIMEFRAME_NAMES)" href="../utils/#mt5cli.utils.TIMEFRAME_NAMES">TIMEFRAME_NAMES</a></span>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="p">)</span>
</code></pre></div>
@@ -3513,11 +3513,11 @@ fails.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/history.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-54">54</a></span>
<span class="normal"><a href="#__codelineno-0-55">55</a></span>
<span class="normal"><a href="#__codelineno-0-56">56</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="k">def</span><span class="w"> </span><span class="nf">quote_sqlite_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return a safely quoted SQLite identifier using double quotes.&quot;&quot;&quot;</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a> <span class="k">return</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="n">identifier</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s1">&#39;&quot;&quot;&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span>
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-55">55</a></span>
<span class="normal"><a href="#__codelineno-0-56">56</a></span>
<span class="normal"><a href="#__codelineno-0-57">57</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="k">def</span><span class="w"> </span><span class="nf">quote_sqlite_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return a safely quoted SQLite identifier using double quotes.&quot;&quot;&quot;</span>
<a id="__codelineno-0-57" name="__codelineno-0-57"></a> <span class="k">return</span> <span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> <span class="n">identifier</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;&quot;&#39;</span><span class="p">,</span> <span class="s1">&#39;&quot;&quot;&#39;</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;&quot;&#39;</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -3591,17 +3591,19 @@ fails.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/history.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-101">101</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-100">100</a></span>
<span class="normal"><a href="#__codelineno-0-101">101</a></span>
<span class="normal"><a href="#__codelineno-0-102">102</a></span>
<span class="normal"><a href="#__codelineno-0-103">103</a></span>
<span class="normal"><a href="#__codelineno-0-104">104</a></span>
<span class="normal"><a href="#__codelineno-0-105">105</a></span>
<span class="normal"><a href="#__codelineno-0-106">106</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_granularity_name</span><span class="p">(</span><span class="n">timeframe</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return a granularity name for a timeframe integer when known.&quot;&quot;&quot;</span>
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">TIMEFRAME_MAP</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="n">timeframe</span><span class="p">:</span>
<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="n">name</span>
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">timeframe</span><span class="p">)</span>
<span class="normal"><a href="#__codelineno-0-106">106</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_granularity_name</span><span class="p">(</span><span class="n">timeframe</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Return a granularity name for a timeframe integer when known.&quot;&quot;&quot;</span>
<a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="k">try</span><span class="p">:</span>
<a id="__codelineno-0-103" name="__codelineno-0-103"></a> <span class="n">name</span> <span class="o">=</span> <span class="n">_get_timeframe_name</span><span class="p">(</span><span class="n">timeframe</span><span class="p">)</span>
<a id="__codelineno-0-104" name="__codelineno-0-104"></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<a id="__codelineno-0-105" name="__codelineno-0-105"></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">timeframe</span><span class="p">)</span>
<a id="__codelineno-0-106" name="__codelineno-0-106"></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">removeprefix</span><span class="p">(</span><span class="s2">&quot;TIMEFRAME_&quot;</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -3661,8 +3663,7 @@ fails.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/history.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-59">59</a></span>
<span class="normal"><a href="#__codelineno-0-60">60</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-60">60</a></span>
<span class="normal"><a href="#__codelineno-0-61">61</a></span>
<span class="normal"><a href="#__codelineno-0-62">62</a></span>
<span class="normal"><a href="#__codelineno-0-63">63</a></span>
@@ -3670,16 +3671,17 @@ fails.</p>
<span class="normal"><a href="#__codelineno-0-65">65</a></span>
<span class="normal"><a href="#__codelineno-0-66">66</a></span>
<span class="normal"><a href="#__codelineno-0-67">67</a></span>
<span class="normal"><a href="#__codelineno-0-68">68</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_datasets</span><span class="p">(</span><span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]:</span>
<a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve configured history datasets.</span>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> All supported datasets when ``datasets`` is None, otherwise the</span>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> configured selection (which may be empty).</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">if</span> <span class="n">datasets</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">Dataset</span><span class="p">)</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">datasets</span><span class="p">)</span>
<span class="normal"><a href="#__codelineno-0-68">68</a></span>
<span class="normal"><a href="#__codelineno-0-69">69</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-60" name="__codelineno-0-60"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_datasets</span><span class="p">(</span><span class="n">datasets</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">set</span><span class="p">[</span><span class="n">Dataset</span><span class="p">]:</span>
<a id="__codelineno-0-61" name="__codelineno-0-61"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve configured history datasets.</span>
<a id="__codelineno-0-62" name="__codelineno-0-62"></a>
<a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> All supported datasets when ``datasets`` is None, otherwise the</span>
<a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> configured selection (which may be empty).</span>
<a id="__codelineno-0-66" name="__codelineno-0-66"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="k">if</span> <span class="n">datasets</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-0-68" name="__codelineno-0-68"></a> <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">Dataset</span><span class="p">)</span>
<a id="__codelineno-0-69" name="__codelineno-0-69"></a> <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="n">datasets</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -3727,23 +3729,19 @@ fails.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/history.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-90">90</a></span>
<span class="normal"><a href="#__codelineno-0-91">91</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-91">91</a></span>
<span class="normal"><a href="#__codelineno-0-92">92</a></span>
<span class="normal"><a href="#__codelineno-0-93">93</a></span>
<span class="normal"><a href="#__codelineno-0-94">94</a></span>
<span class="normal"><a href="#__codelineno-0-95">95</a></span>
<span class="normal"><a href="#__codelineno-0-96">96</a></span>
<span class="normal"><a href="#__codelineno-0-97">97</a></span>
<span class="normal"><a href="#__codelineno-0-98">98</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve tick copy flags from an integer or name.</span>
<a id="__codelineno-0-92" name="__codelineno-0-92"></a>
<a id="__codelineno-0-93" name="__codelineno-0-93"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> Integer tick flag value.</span>
<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-96" name="__codelineno-0-96"></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">flags</span><span class="p">,</span> <span class="nb">int</span><span class="p">):</span>
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">flags</span>
<a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="k">return</span> <span class="n">parse_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span>
<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">:</span> <span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve tick copy flags from an integer or name.</span>
<a id="__codelineno-0-93" name="__codelineno-0-93"></a>
<a id="__codelineno-0-94" name="__codelineno-0-94"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-95" name="__codelineno-0-95"></a><span class="sd"> Integer tick flag value.</span>
<a id="__codelineno-0-96" name="__codelineno-0-96"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">parse_tick_flags</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span>
</code></pre></div></td></tr></table></div>
</details>
</div>
@@ -3793,8 +3791,7 @@ fails.</p>
<details class="mkdocstrings-source">
<summary>Source code in <code>mt5cli/history.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-71">71</a></span>
<span class="normal"><a href="#__codelineno-0-72">72</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-72">72</a></span>
<span class="normal"><a href="#__codelineno-0-73">73</a></span>
<span class="normal"><a href="#__codelineno-0-74">74</a></span>
<span class="normal"><a href="#__codelineno-0-75">75</a></span>
@@ -3809,23 +3806,24 @@ fails.</p>
<span class="normal"><a href="#__codelineno-0-84">84</a></span>
<span class="normal"><a href="#__codelineno-0-85">85</a></span>
<span class="normal"><a href="#__codelineno-0-86">86</a></span>
<span class="normal"><a href="#__codelineno-0-87">87</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_timeframes</span><span class="p">(</span>
<a id="__codelineno-0-72" name="__codelineno-0-72"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-73" name="__codelineno-0-73"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve rate timeframes, deduplicating aliases for the same integer.</span>
<a id="__codelineno-0-75" name="__codelineno-0-75"></a>
<a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Ordered list of unique timeframe integers.</span>
<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-79" name="__codelineno-0-79"></a> <span class="n">raw</span> <span class="o">=</span> <span class="n">timeframes</span> <span class="k">if</span> <span class="n">timeframes</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">DEFAULT_HISTORY_TIMEFRAMES</span>
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">seen</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">resolved</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">raw</span><span class="p">:</span>
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="n">tf</span> <span class="o">=</span> <span class="n">value</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="k">else</span> <span class="n">parse_timeframe</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="k">if</span> <span class="n">tf</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">seen</span><span class="p">:</span>
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="n">seen</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">tf</span><span class="p">)</span>
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">resolved</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tf</span><span class="p">)</span>
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="k">return</span> <span class="n">resolved</span>
<span class="normal"><a href="#__codelineno-0-87">87</a></span>
<span class="normal"><a href="#__codelineno-0-88">88</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="k">def</span><span class="w"> </span><span class="nf">resolve_history_timeframes</span><span class="p">(</span>
<a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="n">timeframes</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="nb">int</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
<a id="__codelineno-0-74" name="__codelineno-0-74"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<a id="__codelineno-0-75" name="__codelineno-0-75"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Resolve rate timeframes, deduplicating aliases for the same integer.</span>
<a id="__codelineno-0-76" name="__codelineno-0-76"></a>
<a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="sd"> Returns:</span>
<a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> Ordered list of unique timeframe integers.</span>
<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> &quot;&quot;&quot;</span>
<a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">raw</span> <span class="o">=</span> <span class="n">timeframes</span> <span class="k">if</span> <span class="n">timeframes</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">DEFAULT_HISTORY_TIMEFRAMES</span>
<a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">seen</span><span class="p">:</span> <span class="nb">set</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
<a id="__codelineno-0-82" name="__codelineno-0-82"></a> <span class="n">resolved</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<a id="__codelineno-0-83" name="__codelineno-0-83"></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">raw</span><span class="p">:</span>
<a id="__codelineno-0-84" name="__codelineno-0-84"></a> <span class="n">tf</span> <span class="o">=</span> <span class="n">parse_timeframe</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<a id="__codelineno-0-85" name="__codelineno-0-85"></a> <span class="k">if</span> <span class="n">tf</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">seen</span><span class="p">:</span>
<a id="__codelineno-0-86" name="__codelineno-0-86"></a> <span class="n">seen</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">tf</span><span class="p">)</span>
<a id="__codelineno-0-87" name="__codelineno-0-87"></a> <span class="n">resolved</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tf</span><span class="p">)</span>
<a id="__codelineno-0-88" name="__codelineno-0-88"></a> <span class="k">return</span> <span class="n">resolved</span>
</code></pre></div></td></tr></table></div>
</details>
</div>