2026-06-08 16:28:50 +00:00
<!DOCTYPE html>
< html lang = "en" data-bs-theme = "light" >
< head >
< meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta name = "author" content = "dceoy" >
2026-06-08 17:40:53 +00:00
< link rel = "canonical" href = "https://github.com/dceoy/mt5cli/api/history/" >
2026-06-08 16:28:50 +00:00
< link rel = "shortcut icon" href = "../../img/favicon.ico" >
2026-06-08 17:40:53 +00:00
< title > History Collection (SQLite) - mt5cli API Documentation</ title >
2026-06-08 16:28:50 +00:00
< link href = "../../css/bootstrap.min.css" rel = "stylesheet" >
< link href = "../../css/fontawesome.min.css" rel = "stylesheet" >
< link href = "../../css/brands.min.css" rel = "stylesheet" >
< link href = "../../css/solid.min.css" rel = "stylesheet" >
< link href = "../../css/v4-font-face.min.css" rel = "stylesheet" >
< link href = "../../css/base.css" rel = "stylesheet" >
< link id = "hljs-light" rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
< link id = "hljs-dark" rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled >
< link href = "../../assets/_mkdocstrings.css" rel = "stylesheet" >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" ></ script >
< script > hljs . highlightAll ();</ script >
</ head >
< body >
< div class = "navbar fixed-top navbar-expand-lg navbar-dark bg-primary" >
< div class = "container" >
< a class = "navbar-brand" href = "../.." > mt5cli API Documentation</ a >
<!-- Expander button -->
< button type = "button" class = "navbar-toggler" data-bs-toggle = "collapse" data-bs-target = "#navbar-collapse" aria-controls = "navbar-collapse" aria-expanded = "false" aria-label = "Toggle navigation" >
< span class = "navbar-toggler-icon" ></ span >
</ button >
<!-- Expanded navigation -->
< div id = "navbar-collapse" class = "navbar-collapse collapse" >
<!-- Main navigation -->
< ul class = "nav navbar-nav" >
< li class = "nav-item" >
< a href = "../.." class = "nav-link" > Home</ a >
</ li >
< li class = "nav-item dropdown" >
< a href = "#" class = "nav-link dropdown-toggle active" aria-current = "page" role = "button" data-bs-toggle = "dropdown" aria-expanded = "false" > API Reference</ a >
< ul class = "dropdown-menu" >
< li >
< a href = "../" class = "dropdown-item" > Overview</ a >
</ li >
2026-06-12 16:32:35 +00:00
< li >
< a href = "../client/" class = "dropdown-item" > Client</ a >
</ li >
< li >
< a href = "../schemas/" class = "dropdown-item" > Schemas</ a >
</ li >
< li >
< a href = "../storage/" class = "dropdown-item" > Storage</ a >
</ li >
< li >
< a href = "../converters/" class = "dropdown-item" > Converters</ a >
</ li >
< li >
< a href = "../exceptions/" class = "dropdown-item" > Exceptions</ a >
</ li >
2026-06-08 16:28:50 +00:00
< li >
< a href = "../cli/" class = "dropdown-item" > CLI</ a >
</ li >
< li >
< a href = "../sdk/" class = "dropdown-item" > SDK</ a >
</ li >
2026-06-11 10:33:27 +00:00
< li >
< a href = "../trading/" class = "dropdown-item" > Trading</ a >
</ li >
2026-06-08 16:28:50 +00:00
< li >
2026-06-08 17:40:53 +00:00
< a href = "./" class = "dropdown-item active" aria-current = "page" > History Collection (SQLite)</ a >
2026-06-08 16:28:50 +00:00
</ li >
< li >
< a href = "../utils/" class = "dropdown-item" > Utils</ a >
</ li >
</ ul >
</ li >
</ ul >
< ul class = "nav navbar-nav ms-md-auto" >
< li class = "nav-item" >
< a href = "#" class = "nav-link" data-bs-toggle = "modal" data-bs-target = "#mkdocs_search_modal" >
< i class = "fa fa-search" ></ i > Search
</ a >
</ li >
< li class = "nav-item" >
2026-06-11 10:33:27 +00:00
< a rel = "prev" href = "../trading/" class = "nav-link" >
2026-06-08 16:28:50 +00:00
< i class = "fa fa-arrow-left" ></ i > Previous
</ a >
</ li >
< li class = "nav-item" >
< a rel = "next" href = "../utils/" class = "nav-link" >
Next < i class = "fa fa-arrow-right" ></ i >
</ a >
</ li >
< li class = "nav-item" >
2026-06-08 17:40:53 +00:00
< a href = "https://github.com/dceoy/mt5cli/edit/master/docs/api/history.md" class = "nav-link" > Edit on dceoy/mt5cli
2026-06-08 16:28:50 +00:00
</ a >
</ li >
</ ul >
</ div >
</ div >
</ div >
< div class = "container" >
< div class = "row" >
< div class = "col-md-3" >< div class = "navbar-expand-md bs-sidebar hidden-print affix" role = "complementary" >
< div class = "navbar-header" >
< button type = "button" class = "navbar-toggler collapsed" data-bs-toggle = "collapse" data-bs-target = "#toc-collapse" title = "Table of Contents" >
< span class = "fa fa-angle-down" ></ span >
</ button >
</ div >
< div id = "toc-collapse" class = "navbar-collapse collapse card bg-body-tertiary" >
< ul class = "nav flex-column" >
2026-06-08 17:40:53 +00:00
< li class = "nav-item" data-bs-level = "1" >< a href = "#history-collection-sqlite" class = "nav-link" > History Collection (SQLite)</ a >
2026-06-08 16:28:50 +00:00
< ul class = "nav flex-column" >
2026-06-08 17:40:53 +00:00
< li class = "nav-item" data-bs-level = "2" >< a href = "#mt5cli.history" class = "nav-link" > history</ a >
2026-06-08 16:28:50 +00:00
< ul class = "nav flex-column" >
</ ul >
</ li >
< li class = "nav-item" data-bs-level = "2" >< a href = "#collect-history-schema" class = "nav-link" > collect-history schema</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
</ ul >
</ li >
</ ul >
</ div >
</ div ></ div >
< div class = "col-md-9" role = "main" >
2026-06-08 17:40:53 +00:00
< h1 id = "history-collection-sqlite" > History Collection (SQLite)< a class = "headerlink" href = "#history-collection-sqlite" title = "Permanent link" > ¶ </ a ></ h1 >
2026-06-08 16:28:50 +00:00
< div class = "doc doc-object doc-module" >
2026-06-08 17:40:53 +00:00
< h2 id = "mt5cli.history" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-module-name" > mt5cli.history</ span >
2026-06-08 16:28:50 +00:00
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h2 >
2026-06-08 16:28:50 +00:00
< div class = "doc doc-contents first" >
2026-06-08 17:40:53 +00:00
< p > SQLite storage helpers for the < code > collect-history</ code > incremental data pipeline.</ p >
2026-06-08 16:28:50 +00:00
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.DEFAULT_HISTORY_TIMEFRAMES" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-attribute-name" > DEFAULT_HISTORY_TIMEFRAMES</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.DEFAULT_HISTORY_TIMEFRAMES" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-11 14:23:26 +00:00
< 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
2026-06-08 16:28:50 +00:00
module-attribute
2026-06-11 14:23:26 +00:00
(mt5cli.utils.TIMEFRAME_NAMES)" href = "../utils/#mt5cli.utils.TIMEFRAME_NAMES" > TIMEFRAME_NAMES</ a ></ span >
2026-06-08 16:28:50 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
2026-06-09 14:28:29 +00:00
< h3 id = "mt5cli.history.SqliteConnOrPath" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > SqliteConnOrPath</ span >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
2026-06-09 14:28:29 +00:00
< a href = "#mt5cli.history.SqliteConnOrPath" 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 = "n" > SqliteConnOrPath</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "pathlib.Path" > Path</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
2026-06-09 14:28:29 +00:00
< h3 id = "mt5cli.history.logger" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > logger</ span >
2026-06-08 18:29:32 +00:00
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
2026-06-09 14:28:29 +00:00
< a href = "#mt5cli.history.logger" 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 = "n" > logger</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "logging.getLogger" > getLogger</ span ></ span >< span class = "p" > (</ span >< span class = "n" >< span title = "__name__" > __name__</ span ></ span >< span class = "p" > )</ span >
2026-06-08 18:29:32 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
2026-06-09 14:28:29 +00:00
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.history.DedupScope" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > DedupScope</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-dataclass" >< code > dataclass</ code ></ small >
</ span >
< a href = "#mt5cli.history.DedupScope" 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" > DedupScope</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > where</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > params</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "object" > object</ span ></ span >< span class = "p" > ,</ span > < span class = "o" > ...</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > required_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Scoped deduplication predicate and the columns it references.</ p >
< p >< span class = "doc-section-title" > Attributes:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >< code >< a class = "autorefs autorefs-internal" title = "where
instance-attribute
(mt5cli.history.DedupScope.where)" href = "#mt5cli.history.DedupScope.where" > where</ a ></ code ></ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQL predicate appended to the duplicate-removal query.</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >< code >< a class = "autorefs autorefs-internal" title = "params
instance-attribute
(mt5cli.history.DedupScope.params)" href = "#mt5cli.history.DedupScope.params" > params</ a ></ code ></ td >
< td >
< code >< span title = "tuple" > tuple</ span > [< span title = "object" > object</ span > , ...]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Parameters bound to the scope predicate.</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >< code >< a class = "autorefs autorefs-internal" title = "required_columns
instance-attribute
(mt5cli.history.DedupScope.required_columns)" href = "#mt5cli.history.DedupScope.required_columns" > required_columns</ a ></ code ></ td >
< td >
< code >< span title = "frozenset" > frozenset</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Columns that must be present in the written table for
the scope to run.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< div class = "doc doc-children" >
2026-06-08 18:29:32 +00:00
< div class = "doc doc-object doc-attribute" >
2026-06-09 14:28:29 +00:00
< h4 id = "mt5cli.history.DedupScope.params" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > params</ span >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-labels" >
2026-06-09 14:28:29 +00:00
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
2026-06-08 16:28:50 +00:00
</ span >
2026-06-09 14:28:29 +00:00
< a href = "#mt5cli.history.DedupScope.params" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > params</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "object" > object</ span ></ span >< span class = "p" > ,</ span > < span class = "o" > ...</ span >< span class = "p" > ]</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
2026-06-09 14:28:29 +00:00
< div class = "doc doc-object doc-attribute" >
2026-06-08 16:28:50 +00:00
2026-06-09 14:28:29 +00:00
< h4 id = "mt5cli.history.DedupScope.required_columns" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > required_columns</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.history.DedupScope.required_columns" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > required_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.history.DedupScope.where" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > where</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.history.DedupScope.where" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > where</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< div class = "doc doc-object doc-class" >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< h3 id = "mt5cli.history.RateTarget" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > RateTarget</ span >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-dataclass" >< code > dataclass</ code ></ small >
</ span >
< a href = "#mt5cli.history.RateTarget" 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" > RateTarget</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-09 06:37:58 +00:00
< p > A single rate series identified by symbol and timeframe.</ p >
< p >< span class = "doc-section-title" > Attributes:</ span ></ p >
2026-06-08 16:28:50 +00:00
< table >
< thead >
< tr >
2026-06-09 06:37:58 +00:00
< th > Name</ th >
2026-06-08 16:28:50 +00:00
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
2026-06-09 06:37:58 +00:00
< td >< code >< a class = "autorefs autorefs-internal" title = "symbol
instance-attribute
(mt5cli.history.RateTarget.symbol)" href = "#mt5cli.history.RateTarget.symbol" > symbol</ a ></ code ></ td >
2026-06-08 16:28:50 +00:00
< td >
2026-06-09 06:37:58 +00:00
< code >< span title = "str" > str</ span > | None</ code >
2026-06-08 16:28:50 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > MT5 symbol name, or None when the rate series is addressed only
by an explicit table (for example a custom SQLite view).</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >< code >< a class = "autorefs autorefs-internal" title = "timeframe
instance-attribute
(mt5cli.history.RateTarget.timeframe)" href = "#mt5cli.history.RateTarget.timeframe" > timeframe</ a ></ code ></ td >
< td >
< code >< span title = "int" > int</ span > | < span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 timeframe as an integer or name (for example < code > M1</ code > ).</ p >
2026-06-08 16:28:50 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
2026-06-09 06:37:58 +00:00
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.history.RateTarget.symbol" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > symbol</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.history.RateTarget.symbol" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-08 16:28:50 +00:00
</ div >
</ div >
2026-06-09 06:37:58 +00:00
< div class = "doc doc-object doc-attribute" >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< h4 id = "mt5cli.history.RateTarget.timeframe" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > timeframe</ span >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.history.RateTarget.timeframe" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-09 06:37:58 +00:00
</ div >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.history.RateTarget.timeframe_int" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > timeframe_int</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-property" >< code > property</ code ></ small >
</ span >
< a href = "#mt5cli.history.RateTarget.timeframe_int" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > timeframe_int</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return the timeframe as its integer MT5 value.</ p >
2026-06-08 16:28:50 +00:00
</ div >
</ div >
2026-06-09 06:37:58 +00:00
2026-06-08 16:28:50 +00:00
< div class = "doc doc-object doc-function" >
2026-06-09 06:37:58 +00:00
< h4 id = "mt5cli.history.RateTarget.__post_init__" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > __post_init__</ span >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< a href = "#mt5cli.history.RateTarget.__post_init__" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< 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" > __post_init__</ span >< span class = "p" > ()</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-09 06:37:58 +00:00
< p > Normalize accepted timeframe aliases to the stored integer value.</ p >
2026-06-08 16:28:50 +00:00
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-524" > 524</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-525" > 525</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-526" > 526</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-527" > 527</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-524" name = "__codelineno-0-524" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > __post_init__</ span >< span class = "p" > (</ span >< span class = "bp" > self</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-525" name = "__codelineno-0-525" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Normalize accepted timeframe aliases to the stored integer value.""" </ span >
< a id = "__codelineno-0-526" name = "__codelineno-0-526" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "bp" > self</ span >< span class = "o" > .</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-527" name = "__codelineno-0-527" ></ a > < span class = "nb" > object</ span >< span class = "o" > .</ span >< span class = "fm" > __setattr__</ span >< span class = "p" > (</ span >< span class = "bp" > self</ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "n" > parse_timeframe</ span >< span class = "p" > (</ span >< span class = "bp" > self</ span >< span class = "o" > .</ span >< span class = "n" > timeframe</ span >< span class = "p" > ))</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
2026-06-09 06:37:58 +00:00
</ div >
</ div >
</ div >
2026-06-08 16:28:50 +00:00
< div class = "doc doc-object doc-function" >
2026-06-09 06:37:58 +00:00
< h3 id = "mt5cli.history.append_dataframe" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > append_dataframe</ span >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< a href = "#mt5cli.history.append_dataframe" 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" > append_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > table_name</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-09 06:37:58 +00:00
< p > Append a DataFrame to SQLite when it has a schema.</ p >
2026-06-08 16:28:50 +00:00
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > True if a table was written, False if the frame had no columns.</ p >
2026-06-08 16:28:50 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-950" > 950</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-951" > 951</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-952" > 952</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-953" > 953</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-954" > 954</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-955" > 955</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-956" > 956</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-957" > 957</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-958" > 958</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-959" > 959</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-960" > 960</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-961" > 961</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-962" > 962</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-963" > 963</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-964" > 964</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-965" > 965</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-966" > 966</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-967" > 967</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-968" > 968</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-969" > 969</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-970" > 970</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-971" > 971</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-950" name = "__codelineno-0-950" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > append_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-951" name = "__codelineno-0-951" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-952" name = "__codelineno-0-952" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-953" name = "__codelineno-0-953" ></ a > < span class = "n" > table_name</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-954" name = "__codelineno-0-954" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-955" name = "__codelineno-0-955" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-956" name = "__codelineno-0-956" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Append a DataFrame to SQLite when it has a schema.</ span >
< a id = "__codelineno-0-957" name = "__codelineno-0-957" ></ a >
< a id = "__codelineno-0-958" name = "__codelineno-0-958" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-959" name = "__codelineno-0-959" ></ a >< span class = "sd" > True if a table was written, False if the frame had no columns.</ span >
< a id = "__codelineno-0-960" name = "__codelineno-0-960" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-961" name = "__codelineno-0-961" ></ a > < span class = "k" > if</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-962" name = "__codelineno-0-962" ></ a > < span class = "n" > logger</ span >< span class = "o" > .</ span >< span class = "n" > warning</ span >< span class = "p" > (</ span >< span class = "s2" > " Skipping </ span >< span class = "si" > %s</ span >< span class = "s2" > : dataset returned no columns" </ span >< span class = "p" > ,</ span > < span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-963" name = "__codelineno-0-963" ></ a > < span class = "k" > return</ span > < span class = "kc" > False</ span >
< a id = "__codelineno-0-964" name = "__codelineno-0-964" ></ a > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > to_sql</ span >< span class = "p" > (</ span > < span class = "c1" > # type: ignore[reportUnknownMemberType]</ span >
< a id = "__codelineno-0-965" name = "__codelineno-0-965" ></ a > < span class = "n" > table_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-966" name = "__codelineno-0-966" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-967" name = "__codelineno-0-967" ></ a > < span class = "n" > if_exists</ span >< span class = "o" > =</ span >< span class = "n" > if_exists</ span >< span class = "o" > .</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-968" name = "__codelineno-0-968" ></ a > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-969" name = "__codelineno-0-969" ></ a > < span class = "n" > chunksize</ span >< span class = "o" > =</ span >< span class = "mi" > 50_000</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-970" name = "__codelineno-0-970" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-971" name = "__codelineno-0-971" ></ a > < span class = "k" > return</ span > < span class = "kc" > True</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-09 06:37:58 +00:00
< h3 id = "mt5cli.history.augment_written_columns_from_sqlite" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > augment_written_columns_from_sqlite</ span >
2026-06-08 16:28:50 +00:00
2026-06-09 06:37:58 +00:00
< a href = "#mt5cli.history.augment_written_columns_from_sqlite" 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" > augment_written_columns_from_sqlite</ span >< span class = "p" > (</ span >
2026-06-08 16:28:50 +00:00
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
2026-06-09 06:37:58 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > datasets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-09 06:37:58 +00:00
< p > Add existing table columns to the written column map.</ p >
2026-06-08 16:28:50 +00:00
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-987" > 987</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-988" > 988</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-989" > 989</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-990" > 990</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-991" > 991</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-992" > 992</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-993" > 993</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-994" > 994</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-995" > 995</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-996" > 996</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-997" > 997</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-998" > 998</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-999" > 999</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1000" > 1000</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-987" name = "__codelineno-0-987" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > augment_written_columns_from_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-988" name = "__codelineno-0-988" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-989" name = "__codelineno-0-989" ></ a > < span class = "n" > datasets</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-990" name = "__codelineno-0-990" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-991" name = "__codelineno-0-991" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-992" name = "__codelineno-0-992" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Add existing table columns to the written column map.""" </ span >
< a id = "__codelineno-0-993" name = "__codelineno-0-993" ></ a > < span class = "k" > for</ span > < span class = "n" > dataset</ span > < span class = "ow" > in</ span > < span class = "n" > datasets</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-994" name = "__codelineno-0-994" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > dataset</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-995" name = "__codelineno-0-995" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-996" name = "__codelineno-0-996" ></ a > < span class = "k" > continue</ span >
< a id = "__codelineno-0-997" name = "__codelineno-0-997" ></ a > < span class = "k" > if</ span > < span class = "n" > dataset</ span > < span class = "ow" > in</ span > < span class = "n" > written_columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-998" name = "__codelineno-0-998" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > [</ span >< span class = "n" > dataset</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > update</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-999" name = "__codelineno-0-999" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1000" name = "__codelineno-0-1000" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > [</ span >< span class = "n" > dataset</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > columns</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.build_rate_targets" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > build_rate_targets</ span >
< a href = "#mt5cli.history.build_rate_targets" 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" > build_rate_targets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > timeframes</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > allow_missing_symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Build rate targets for every symbol and timeframe combination.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > symbols</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 symbol names. May be empty when < code > allow_missing_symbol</ code > .</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > timeframes</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "int" > int</ span > | < span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 timeframes as integers or names (for example < code > M1</ code > ).</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > allow_missing_symbol</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > When True and < code > symbols</ code > is empty, build targets
with < code > symbol=None</ code > for each timeframe instead of raising.</ p >
</ div >
</ td >
< td >
< code > False</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "list" > list</ span > [< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Targets in row-major order: every timeframe for the first symbol, then</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "list" > list</ span > [< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > every timeframe for the next symbol, and so on.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If < code > timeframes</ code > is empty, or < code > symbols</ code > is empty and
< code > allow_missing_symbol</ code > is False.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-535" > 535</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-536" > 536</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-537" > 537</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-538" > 538</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-539" > 539</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-540" > 540</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-541" > 541</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-542" > 542</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-543" > 543</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-544" > 544</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-545" > 545</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-546" > 546</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-547" > 547</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-548" > 548</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-549" > 549</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-550" > 550</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-551" > 551</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-552" > 552</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-553" > 553</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-554" > 554</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-555" > 555</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-556" > 556</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-557" > 557</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-558" > 558</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-559" > 559</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-560" > 560</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-561" > 561</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-562" > 562</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-563" > 563</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-564" > 564</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-565" > 565</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-566" > 566</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-567" > 567</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-568" > 568</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-569" > 569</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-535" name = "__codelineno-0-535" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > build_rate_targets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-536" name = "__codelineno-0-536" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-537" name = "__codelineno-0-537" ></ 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 >
< a id = "__codelineno-0-538" name = "__codelineno-0-538" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-539" name = "__codelineno-0-539" ></ a > < span class = "n" > allow_missing_symbol</ 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-540" name = "__codelineno-0-540" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > RateTarget</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-541" name = "__codelineno-0-541" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Build rate targets for every symbol and timeframe combination.</ span >
< a id = "__codelineno-0-542" name = "__codelineno-0-542" ></ a >
< a id = "__codelineno-0-543" name = "__codelineno-0-543" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-544" name = "__codelineno-0-544" ></ a >< span class = "sd" > symbols: MT5 symbol names. May be empty when ``allow_missing_symbol``.</ span >
< a id = "__codelineno-0-545" name = "__codelineno-0-545" ></ a >< span class = "sd" > timeframes: MT5 timeframes as integers or names (for example ``M1``).</ span >
< a id = "__codelineno-0-546" name = "__codelineno-0-546" ></ a >< span class = "sd" > allow_missing_symbol: When True and ``symbols`` is empty, build targets</ span >
< a id = "__codelineno-0-547" name = "__codelineno-0-547" ></ a >< span class = "sd" > with ``symbol=None`` for each timeframe instead of raising.</ span >
< a id = "__codelineno-0-548" name = "__codelineno-0-548" ></ a >
< a id = "__codelineno-0-549" name = "__codelineno-0-549" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-550" name = "__codelineno-0-550" ></ a >< span class = "sd" > Targets in row-major order: every timeframe for the first symbol, then</ span >
< a id = "__codelineno-0-551" name = "__codelineno-0-551" ></ a >< span class = "sd" > every timeframe for the next symbol, and so on.</ span >
< a id = "__codelineno-0-552" name = "__codelineno-0-552" ></ a >
< a id = "__codelineno-0-553" name = "__codelineno-0-553" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-554" name = "__codelineno-0-554" ></ a >< span class = "sd" > ValueError: If ``timeframes`` is empty, or ``symbols`` is empty and</ span >
< a id = "__codelineno-0-555" name = "__codelineno-0-555" ></ a >< span class = "sd" > ``allow_missing_symbol`` is False.</ span >
< a id = "__codelineno-0-556" name = "__codelineno-0-556" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-557" name = "__codelineno-0-557" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > timeframes</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-558" name = "__codelineno-0-558" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " At least one timeframe is required." </ span >
< a id = "__codelineno-0-559" name = "__codelineno-0-559" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-560" name = "__codelineno-0-560" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > symbols</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-561" name = "__codelineno-0-561" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > allow_missing_symbol</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-562" name = "__codelineno-0-562" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " At least one symbol is required." </ span >
< a id = "__codelineno-0-563" name = "__codelineno-0-563" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-564" name = "__codelineno-0-564" ></ a > < span class = "k" > return</ span > < span class = "p" > [</ span >< span class = "n" > RateTarget</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > tf</ span >< span class = "p" > )</ span > < span class = "k" > for</ span > < span class = "n" > tf</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-565" name = "__codelineno-0-565" ></ a > < span class = "k" > return</ span > < span class = "p" > [</ span >
< a id = "__codelineno-0-566" name = "__codelineno-0-566" ></ a > < span class = "n" > RateTarget</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > tf</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-567" name = "__codelineno-0-567" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >
< a id = "__codelineno-0-568" name = "__codelineno-0-568" ></ a > < span class = "k" > for</ span > < span class = "n" > tf</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >
< a id = "__codelineno-0-569" name = "__codelineno-0-569" ></ a > < span class = "p" > ]</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.build_rate_view_name" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > build_rate_view_name</ span >
< a href = "#mt5cli.history.build_rate_view_name" 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" > build_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > granularity</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > granularity_count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return a collision-free offline optimize view name.</ p >
< p > View names always include the timeframe integer after a < code > __</ code > separator so
a symbol such as < code > EURUSD_M1</ code > cannot collide with < code > EURUSD</ code > at timeframe
< code > M1</ code > .</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-127" > 127</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-128" > 128</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-129" > 129</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-130" > 130</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-131" > 131</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-132" > 132</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-133" > 133</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-134" > 134</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-135" > 135</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-136" > 136</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-137" > 137</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-138" > 138</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-139" > 139</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-140" > 140</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-141" > 141</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-142" > 142</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-127" name = "__codelineno-0-127" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > build_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-128" name = "__codelineno-0-128" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-129" name = "__codelineno-0-129" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-130" name = "__codelineno-0-130" ></ a > < span class = "n" > granularity</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-131" name = "__codelineno-0-131" ></ a > < span class = "n" > granularity_count</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-132" name = "__codelineno-0-132" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-133" name = "__codelineno-0-133" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > str</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-134" name = "__codelineno-0-134" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return a collision-free offline optimize view name.</ span >
< a id = "__codelineno-0-135" name = "__codelineno-0-135" ></ a >
< a id = "__codelineno-0-136" name = "__codelineno-0-136" ></ a >< span class = "sd" > View names always include the timeframe integer after a ``__`` separator so</ span >
< a id = "__codelineno-0-137" name = "__codelineno-0-137" ></ a >< span class = "sd" > a symbol such as ``EURUSD_M1`` cannot collide with ``EURUSD`` at timeframe</ span >
< a id = "__codelineno-0-138" name = "__codelineno-0-138" ></ a >< span class = "sd" > ``M1``.</ span >
< a id = "__codelineno-0-139" name = "__codelineno-0-139" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-140" name = "__codelineno-0-140" ></ a > < span class = "k" > if</ span > < span class = "n" > granularity_count</ span > < span class = "o" > ==</ span > < span class = "mi" > 1</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-141" name = "__codelineno-0-141" ></ a > < span class = "k" > return</ span > < span class = "sa" > f</ span >< span class = "s2" > " rate_</ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > }</ span >< span class = "s2" > __</ span >< span class = "si" > {</ span >< span class = "n" > timeframe</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-142" name = "__codelineno-0-142" ></ a > < span class = "k" > return</ span > < span class = "sa" > f</ span >< span class = "s2" > " rate_</ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > }</ span >< span class = "s2" > __</ span >< span class = "si" > {</ span >< span class = "n" > granularity</ span >< span class = "si" > }</ span >< span class = "s2" > _</ span >< span class = "si" > {</ span >< span class = "n" > timeframe</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.create_cash_events_view" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > create_cash_events_view</ span >
< a href = "#mt5cli.history.create_cash_events_view" 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" > create_cash_events_view</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > deals_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Create the cash_events SQLite view derived from history_deals.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the view was created, False if required columns are missing.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1224" > 1224</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1225" > 1225</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1226" > 1226</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1227" > 1227</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1228" > 1228</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1229" > 1229</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1230" > 1230</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1231" > 1231</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1232" > 1232</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1233" > 1233</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1234" > 1234</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1235" > 1235</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1236" > 1236</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1237" > 1237</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1238" > 1238</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1239" > 1239</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1240" > 1240</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1241" > 1241</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1224" name = "__codelineno-0-1224" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > create_cash_events_view</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1225" name = "__codelineno-0-1225" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1226" name = "__codelineno-0-1226" ></ a > < span class = "n" > deals_columns</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1227" name = "__codelineno-0-1227" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1228" name = "__codelineno-0-1228" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Create the cash_events SQLite view derived from history_deals.</ span >
< a id = "__codelineno-0-1229" name = "__codelineno-0-1229" ></ a >
< a id = "__codelineno-0-1230" name = "__codelineno-0-1230" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1231" name = "__codelineno-0-1231" ></ a >< span class = "sd" > True if the view was created, False if required columns are missing.</ span >
< a id = "__codelineno-0-1232" name = "__codelineno-0-1232" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1233" name = "__codelineno-0-1233" ></ a > < span class = "k" > if</ span > < span class = "s2" > " type" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > deals_columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1234" name = "__codelineno-0-1234" ></ a > < span class = "n" > logger</ span >< span class = "o" > .</ span >< span class = "n" > warning</ span >< span class = "p" > (</ span >< span class = "s2" > " Skipping cash_events view: history_deals.type is missing" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1235" name = "__codelineno-0-1235" ></ a > < span class = "k" > return</ span > < span class = "kc" > False</ span >
< a id = "__codelineno-0-1236" name = "__codelineno-0-1236" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "s2" > " DROP VIEW IF EXISTS cash_events" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1237" name = "__codelineno-0-1237" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1238" name = "__codelineno-0-1238" ></ a > < span class = "s2" > " CREATE VIEW cash_events AS" </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-1239" name = "__codelineno-0-1239" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT * FROM history_deals WHERE type NOT IN </ span >< span class = "si" > {</ span >< span class = "n" > _TRADE_DEAL_TYPES_SQL</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1240" name = "__codelineno-0-1240" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1241" name = "__codelineno-0-1241" ></ a > < span class = "k" > return</ span > < span class = "kc" > True</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.create_history_indexes" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > create_history_indexes</ span >
< a href = "#mt5cli.history.create_history_indexes" 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" > create_history_indexes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Create useful indexes for collected history tables when present.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1135" > 1135</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1136" > 1136</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1137" > 1137</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1138" > 1138</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1139" > 1139</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1140" > 1140</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1141" > 1141</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1142" > 1142</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1143" > 1143</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1144" > 1144</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1145" > 1145</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1146" > 1146</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1147" > 1147</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1148" > 1148</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1149" > 1149</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1150" > 1150</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1151" > 1151</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1152" > 1152</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1153" > 1153</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1154" > 1154</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1155" > 1155</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1156" > 1156</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1157" > 1157</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1135" name = "__codelineno-0-1135" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > create_history_indexes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1136" name = "__codelineno-0-1136" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1137" name = "__codelineno-0-1137" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1138" name = "__codelineno-0-1138" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1139" name = "__codelineno-0-1139" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Create useful indexes for collected history tables when present.""" </ span >
< a id = "__codelineno-0-1140" name = "__codelineno-0-1140" ></ a > < span class = "k" > if</ span > < span class = "p" > {</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > }</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1141" name = "__codelineno-0-1141" ></ a > < span class = "n" > written_columns</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > ()),</ span >
< a id = "__codelineno-0-1142" name = "__codelineno-0-1142" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1143" name = "__codelineno-0-1143" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1144" name = "__codelineno-0-1144" ></ a > < span class = "s2" > " CREATE INDEX IF NOT EXISTS idx_rates_symbol_timeframe_time" </ span >
< a id = "__codelineno-0-1145" name = "__codelineno-0-1145" ></ a > < span class = "s2" > " ON rates(symbol, timeframe, time)" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1146" name = "__codelineno-0-1146" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1147" name = "__codelineno-0-1147" ></ a > < span class = "k" > if</ span > < span class = "p" > {</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > }</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >< span class = "n" > written_columns</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > ticks</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > ())):</ span >
< a id = "__codelineno-0-1148" name = "__codelineno-0-1148" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1149" name = "__codelineno-0-1149" ></ a > < span class = "s2" > " CREATE INDEX IF NOT EXISTS idx_ticks_symbol_time ON ticks(symbol, time)" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1150" name = "__codelineno-0-1150" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1151" name = "__codelineno-0-1151" ></ a > < span class = "k" > if</ span > < span class = "p" > {</ span >< span class = "s2" > " position_id" </ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol" </ span >< span class = "p" > }</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1152" name = "__codelineno-0-1152" ></ a > < span class = "n" > written_columns</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > ()),</ span >
< a id = "__codelineno-0-1153" name = "__codelineno-0-1153" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1154" name = "__codelineno-0-1154" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1155" name = "__codelineno-0-1155" ></ a > < span class = "s2" > " CREATE INDEX IF NOT EXISTS idx_history_deals_position_symbol" </ span >
< a id = "__codelineno-0-1156" name = "__codelineno-0-1156" ></ a > < span class = "s2" > " ON history_deals(position_id, symbol)" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1157" name = "__codelineno-0-1157" ></ a > < span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.create_positions_reconstructed_view" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > create_positions_reconstructed_view</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.create_positions_reconstructed_view" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > create_positions_reconstructed_view</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > deals_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Create the positions_reconstructed SQLite view derived from history_deals.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the view was created, False if required columns are missing.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1244" > 1244</ a ></ span >
2026-06-09 14:28:29 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1245" > 1245</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1246" > 1246</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1247" > 1247</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1248" > 1248</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1249" > 1249</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1250" > 1250</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1251" > 1251</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1252" > 1252</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1253" > 1253</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1254" > 1254</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1255" > 1255</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1256" > 1256</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1257" > 1257</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1258" > 1258</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1259" > 1259</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1260" > 1260</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1261" > 1261</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1262" > 1262</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1263" > 1263</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1264" > 1264</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1265" > 1265</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1266" > 1266</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1267" > 1267</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1268" > 1268</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1269" > 1269</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1270" > 1270</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1271" > 1271</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1272" > 1272</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1273" > 1273</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1274" > 1274</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1275" > 1275</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1276" > 1276</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1277" > 1277</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1278" > 1278</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1279" > 1279</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1280" > 1280</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1281" > 1281</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1282" > 1282</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1283" > 1283</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1284" > 1284</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1285" > 1285</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1286" > 1286</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1287" > 1287</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1288" > 1288</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1289" > 1289</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1290" > 1290</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1244" name = "__codelineno-0-1244" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > create_positions_reconstructed_view</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1245" name = "__codelineno-0-1245" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1246" name = "__codelineno-0-1246" ></ a > < span class = "n" > deals_columns</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1247" name = "__codelineno-0-1247" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1248" name = "__codelineno-0-1248" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Create the positions_reconstructed SQLite view derived from history_deals.</ span >
< a id = "__codelineno-0-1249" name = "__codelineno-0-1249" ></ a >
< a id = "__codelineno-0-1250" name = "__codelineno-0-1250" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1251" name = "__codelineno-0-1251" ></ a >< span class = "sd" > True if the view was created, False if required columns are missing.</ span >
< a id = "__codelineno-0-1252" name = "__codelineno-0-1252" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1253" name = "__codelineno-0-1253" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > _POSITIONS_VIEW_REQUIRED_COLUMNS</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >< span class = "n" > deals_columns</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-1254" name = "__codelineno-0-1254" ></ a > < span class = "n" > missing</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "nb" > sorted</ span >< span class = "p" > (</ span >< span class = "n" > _POSITIONS_VIEW_REQUIRED_COLUMNS</ span > < span class = "o" > -</ span > < span class = "n" > deals_columns</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-1255" name = "__codelineno-0-1255" ></ a > < span class = "n" > logger</ span >< span class = "o" > .</ span >< span class = "n" > warning</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1256" name = "__codelineno-0-1256" ></ a > < span class = "s2" > " Skipping positions_reconstructed view: history_deals missing columns: </ span >< span class = "si" > %s</ span >< span class = "s2" > " </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1257" name = "__codelineno-0-1257" ></ a > < span class = "n" > missing</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1258" name = "__codelineno-0-1258" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1259" name = "__codelineno-0-1259" ></ a > < span class = "k" > return</ span > < span class = "kc" > False</ span >
< a id = "__codelineno-0-1260" name = "__codelineno-0-1260" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "s2" > " DROP VIEW IF EXISTS positions_reconstructed" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1261" name = "__codelineno-0-1261" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1262" name = "__codelineno-0-1262" ></ a > < span class = "s2" > " CREATE VIEW positions_reconstructed AS" </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-1263" name = "__codelineno-0-1263" ></ a > < span class = "s2" > " SELECT" </ span >
< a id = "__codelineno-0-1264" name = "__codelineno-0-1264" ></ a > < span class = "s2" > " position_id," </ span >
< a id = "__codelineno-0-1265" name = "__codelineno-0-1265" ></ a > < span class = "s2" > " symbol," </ span >
< a id = "__codelineno-0-1266" name = "__codelineno-0-1266" ></ a > < span class = "s2" > " MIN(CASE WHEN entry = 0 THEN time END) AS open_time," </ span >
< a id = "__codelineno-0-1267" name = "__codelineno-0-1267" ></ a > < span class = "s2" > " MAX(CASE WHEN entry IN (1, 2, 3) THEN time END) AS close_time," </ span >
< a id = "__codelineno-0-1268" name = "__codelineno-0-1268" ></ a > < span class = "s2" > " MIN(CASE WHEN entry = 0 THEN type END) AS direction," </ span >
< a id = "__codelineno-0-1269" name = "__codelineno-0-1269" ></ a > < span class = "s2" > " SUM(CASE WHEN entry = 0 THEN volume ELSE 0 END) AS volume_open," </ span >
< a id = "__codelineno-0-1270" name = "__codelineno-0-1270" ></ a > < span class = "s2" > " SUM(CASE WHEN entry IN (1, 2, 3) THEN volume ELSE 0 END) AS volume_close," </ span >
< a id = "__codelineno-0-1271" name = "__codelineno-0-1271" ></ a > < span class = "s2" > " SUM(CASE WHEN entry = 2 THEN volume ELSE 0 END) AS volume_reversal," </ span >
< a id = "__codelineno-0-1272" name = "__codelineno-0-1272" ></ a > < span class = "s2" > " CASE" </ span >
< a id = "__codelineno-0-1273" name = "__codelineno-0-1273" ></ a > < span class = "s2" > " WHEN SUM(CASE WHEN entry = 0 THEN volume ELSE 0 END) > 0" </ span >
< a id = "__codelineno-0-1274" name = "__codelineno-0-1274" ></ a > < span class = "s2" > " THEN SUM(CASE WHEN entry = 0 THEN price * volume ELSE 0 END)" </ span >
< a id = "__codelineno-0-1275" name = "__codelineno-0-1275" ></ a > < span class = "s2" > " / SUM(CASE WHEN entry = 0 THEN volume ELSE 0 END)" </ span >
< a id = "__codelineno-0-1276" name = "__codelineno-0-1276" ></ a > < span class = "s2" > " END AS open_price," </ span >
< a id = "__codelineno-0-1277" name = "__codelineno-0-1277" ></ a > < span class = "s2" > " CASE" </ span >
< a id = "__codelineno-0-1278" name = "__codelineno-0-1278" ></ a > < span class = "s2" > " WHEN SUM(CASE WHEN entry IN (1, 2, 3) THEN volume ELSE 0 END) > 0" </ span >
< a id = "__codelineno-0-1279" name = "__codelineno-0-1279" ></ a > < span class = "s2" > " THEN SUM(CASE WHEN entry IN (1, 2, 3) THEN price * volume ELSE 0 END)" </ span >
< a id = "__codelineno-0-1280" name = "__codelineno-0-1280" ></ a > < span class = "s2" > " / SUM(CASE WHEN entry IN (1, 2, 3) THEN volume ELSE 0 END)" </ span >
< a id = "__codelineno-0-1281" name = "__codelineno-0-1281" ></ a > < span class = "s2" > " END AS close_price," </ span >
< a id = "__codelineno-0-1282" name = "__codelineno-0-1282" ></ a > < span class = "s2" > " SUM(profit) AS total_profit," </ span >
< a id = "__codelineno-0-1283" name = "__codelineno-0-1283" ></ a > < span class = "s2" > " SUM(CASE WHEN entry = 2 THEN 1 ELSE 0 END) AS reversal_count," </ span >
< a id = "__codelineno-0-1284" name = "__codelineno-0-1284" ></ a > < span class = "s2" > " COUNT(*) AS deals_count" </ span >
< a id = "__codelineno-0-1285" name = "__codelineno-0-1285" ></ a > < span class = "s2" > " FROM history_deals" </ span >
< a id = "__codelineno-0-1286" name = "__codelineno-0-1286" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " WHERE type IN </ span >< span class = "si" > {</ span >< span class = "n" > _TRADE_DEAL_TYPES_SQL</ span >< span class = "si" > }</ span >< span class = "s2" > AND position_id != 0" </ span >
< a id = "__codelineno-0-1287" name = "__codelineno-0-1287" ></ a > < span class = "s2" > " GROUP BY position_id, symbol" </ span >
< a id = "__codelineno-0-1288" name = "__codelineno-0-1288" ></ a > < span class = "s2" > " HAVING SUM(CASE WHEN entry IN (1, 2, 3) THEN 1 ELSE 0 END) > 0" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1289" name = "__codelineno-0-1289" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1290" name = "__codelineno-0-1290" ></ a > < span class = "k" > return</ span > < span class = "kc" > True</ span >
2026-06-09 15:15:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.create_rate_compatibility_views" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > create_rate_compatibility_views</ span >
< a href = "#mt5cli.history.create_rate_compatibility_views" 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" > create_rate_compatibility_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Create rate compatibility views from the normalized rates table.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1303" > 1303</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1304" > 1304</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1305" > 1305</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1306" > 1306</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1307" > 1307</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1308" > 1308</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1309" > 1309</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1310" > 1310</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1311" > 1311</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1312" > 1312</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1313" > 1313</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1314" > 1314</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1315" > 1315</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1316" > 1316</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1317" > 1317</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1318" > 1318</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1319" > 1319</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1320" > 1320</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1321" > 1321</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1322" > 1322</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1323" > 1323</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1324" > 1324</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1325" > 1325</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1326" > 1326</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1327" > 1327</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1328" > 1328</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1329" > 1329</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1330" > 1330</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1331" > 1331</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1332" > 1332</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1333" > 1333</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1303" name = "__codelineno-0-1303" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > create_rate_compatibility_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1304" name = "__codelineno-0-1304" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Create rate compatibility views from the normalized rates table.""" </ span >
< a id = "__codelineno-0-1305" name = "__codelineno-0-1305" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1306" name = "__codelineno-0-1306" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "p" > {</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > }</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-1307" name = "__codelineno-0-1307" ></ a > < span class = "k" > return</ span >
< a id = "__codelineno-0-1308" name = "__codelineno-0-1308" ></ a > < span class = "n" > drop_rate_compatibility_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1309" name = "__codelineno-0-1309" ></ a > < span class = "n" > select_columns</ span > < span class = "o" > =</ span > < span class = "nb" > sorted</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span > < span class = "o" > -</ span > < span class = "p" > {</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > })</ span >
< a id = "__codelineno-0-1310" name = "__codelineno-0-1310" ></ a > < span class = "n" > quoted_columns</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "sa" > f</ span >< span class = "s1" > '" </ span >< span class = "si" > {</ span >< span class = "n" > column</ span >< span class = "si" > }</ span >< span class = "s1" > "' </ span > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > select_columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1311" name = "__codelineno-0-1311" ></ a > < span class = "n" > rows</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1312" name = "__codelineno-0-1312" ></ a > < span class = "s2" > " SELECT DISTINCT symbol, timeframe FROM rates ORDER BY symbol, timeframe" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1313" name = "__codelineno-0-1313" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchall</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1314" name = "__codelineno-0-1314" ></ a > < span class = "n" > timeframes_by_symbol</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ 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-1315" name = "__codelineno-0-1315" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span > < span class = "ow" > in</ span > < span class = "n" > rows</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1316" name = "__codelineno-0-1316" ></ a > < span class = "n" > timeframes_by_symbol</ span >< span class = "o" > .</ span >< span class = "n" > setdefault</ span >< span class = "p" > (</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ),</ span > < span class = "p" > [])</ span >< span class = "o" > .</ span >< span class = "n" > append</ span >< span class = "p" > (</ span >< span class = "nb" > int</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-1317" name = "__codelineno-0-1317" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframes</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes_by_symbol</ span >< span class = "o" > .</ span >< span class = "n" > items</ span >< span class = "p" > ():</ span >
< a id = "__codelineno-0-1318" name = "__codelineno-0-1318" ></ a > < span class = "k" > for</ span > < span class = "n" > timeframe</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1319" name = "__codelineno-0-1319" ></ a > < span class = "n" > granularity</ span > < span class = "o" > =</ span > < span class = "n" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1320" name = "__codelineno-0-1320" ></ a > < span class = "n" > view_name</ span > < span class = "o" > =</ span > < span class = "n" > build_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1321" name = "__codelineno-0-1321" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1322" name = "__codelineno-0-1322" ></ a > < span class = "n" > granularity</ span >< span class = "o" > =</ span >< span class = "n" > granularity</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1323" name = "__codelineno-0-1323" ></ a > < span class = "n" > granularity_count</ span >< span class = "o" > =</ span >< span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > timeframes</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-1324" name = "__codelineno-0-1324" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1325" name = "__codelineno-0-1325" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1326" name = "__codelineno-0-1326" ></ a > < span class = "n" > quoted_view_name</ span > < span class = "o" > =</ span > < span class = "n" > quote_sqlite_identifier</ span >< span class = "p" > (</ span >< span class = "n" > view_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1327" name = "__codelineno-0-1327" ></ a > < span class = "n" > escaped_symbol</ span > < span class = "o" > =</ span > < span class = "n" > symbol</ span >< span class = "o" > .</ span >< span class = "n" > replace</ span >< span class = "p" > (</ span >< span class = "s2" > "'" </ span >< span class = "p" > ,</ span > < span class = "s2" > "''" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1328" name = "__codelineno-0-1328" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1329" name = "__codelineno-0-1329" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " CREATE VIEW </ span >< span class = "si" > {</ span >< span class = "n" > quoted_view_name</ span >< span class = "si" > }</ span >< span class = "s2" > AS" </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-1330" name = "__codelineno-0-1330" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT </ span >< span class = "si" > {</ span >< span class = "n" > quoted_columns</ span >< span class = "si" > }</ span >< span class = "s2" > FROM rates" </ span >
< a id = "__codelineno-0-1331" name = "__codelineno-0-1331" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " WHERE symbol = ' </ span >< span class = "si" > {</ span >< span class = "n" > escaped_symbol</ span >< span class = "si" > }</ span >< span class = "s2" > '" </ span >
< a id = "__codelineno-0-1332" name = "__codelineno-0-1332" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " AND timeframe = </ span >< span class = "si" > {</ span >< span class = "n" > timeframe</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1333" name = "__codelineno-0-1333" ></ a > < span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.deduplicate_history_tables" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > deduplicate_history_tables</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.deduplicate_history_tables" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > deduplicate_history_tables</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span >
2026-06-09 14:28:29 +00:00
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Mapping" > Mapping</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "DedupScope
2026-06-08 16:28:50 +00:00
2026-06-09 14:28:29 +00:00
dataclass
2026-06-08 17:40:53 +00:00
(mt5cli.history.DedupScope)" href = "#mt5cli.history.DedupScope" > DedupScope</ a ></ span >< span class = "p" > ]]</ span >
2026-06-08 16:28:50 +00:00
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Deduplicate appended history tables by stable identifiers.</ p >
2026-06-09 14:28:29 +00:00
< p > Scopes whose required columns are not present in the written table are
skipped. If all scopes for a dataset are skipped, the table receives one
unscoped deduplication pass instead.</ p >
2026-06-08 16:28:50 +00:00
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1087" > 1087</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1088" > 1088</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1089" > 1089</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1090" > 1090</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1091" > 1091</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1092" > 1092</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1093" > 1093</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1094" > 1094</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1095" > 1095</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1096" > 1096</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1097" > 1097</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1098" > 1098</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1099" > 1099</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1100" > 1100</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1101" > 1101</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1102" > 1102</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1103" > 1103</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1104" > 1104</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1105" > 1105</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1106" > 1106</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1107" > 1107</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1108" > 1108</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1109" > 1109</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1110" > 1110</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1111" > 1111</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1112" > 1112</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1113" > 1113</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1114" > 1114</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1115" > 1115</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1116" > 1116</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1117" > 1117</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1118" > 1118</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1119" > 1119</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1120" > 1120</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1121" > 1121</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1122" > 1122</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1123" > 1123</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1124" > 1124</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1125" > 1125</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1126" > 1126</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1127" > 1127</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1128" > 1128</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1129" > 1129</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1130" > 1130</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1131" > 1131</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1132" > 1132</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1087" name = "__codelineno-0-1087" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > deduplicate_history_tables</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1088" name = "__codelineno-0-1088" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1089" name = "__codelineno-0-1089" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1090" name = "__codelineno-0-1090" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1091" name = "__codelineno-0-1091" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > :</ span > < span class = "n" > Mapping</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "n" > DedupScope</ span >< span class = "p" > ]]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1092" name = "__codelineno-0-1092" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1093" name = "__codelineno-0-1093" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Deduplicate appended history tables by stable identifiers.</ span >
< a id = "__codelineno-0-1094" name = "__codelineno-0-1094" ></ a >
< a id = "__codelineno-0-1095" name = "__codelineno-0-1095" ></ a >< span class = "sd" > Scopes whose required columns are not present in the written table are</ span >
< a id = "__codelineno-0-1096" name = "__codelineno-0-1096" ></ a >< span class = "sd" > skipped. If all scopes for a dataset are skipped, the table receives one</ span >
< a id = "__codelineno-0-1097" name = "__codelineno-0-1097" ></ a >< span class = "sd" > unscoped deduplication pass instead.</ span >
< a id = "__codelineno-0-1098" name = "__codelineno-0-1098" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1099" name = "__codelineno-0-1099" ></ a > < span class = "n" > cursor</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > cursor</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1100" name = "__codelineno-0-1100" ></ a > < span class = "k" > for</ span > < span class = "n" > dataset</ span > < span class = "ow" > in</ span > < span class = "n" > written_tables</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1101" name = "__codelineno-0-1101" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > written_columns</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "n" > dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > ())</ span >
< a id = "__codelineno-0-1102" name = "__codelineno-0-1102" ></ a > < span class = "n" > table</ span > < span class = "o" > =</ span > < span class = "n" > dataset</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >
< a id = "__codelineno-0-1103" name = "__codelineno-0-1103" ></ a > < span class = "n" > keys</ span > < span class = "o" > =</ span > < span class = "nb" > next</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1104" name = "__codelineno-0-1104" ></ a > < span class = "p" > (</ span >
< a id = "__codelineno-0-1105" name = "__codelineno-0-1105" ></ a > < span class = "n" > candidate</ span >
< a id = "__codelineno-0-1106" name = "__codelineno-0-1106" ></ a > < span class = "k" > for</ span > < span class = "n" > candidate</ span > < span class = "ow" > in</ span > < span class = "n" > _HISTORY_DEDUP_KEYS</ span >< span class = "p" > [</ span >< span class = "n" > dataset</ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-1107" name = "__codelineno-0-1107" ></ a > < span class = "k" > if</ span > < span class = "nb" > set</ span >< span class = "p" > (</ span >< span class = "n" > candidate</ span >< span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1108" name = "__codelineno-0-1108" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-1109" name = "__codelineno-0-1109" ></ a > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1110" name = "__codelineno-0-1110" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1111" name = "__codelineno-0-1111" ></ a > < span class = "k" > if</ span > < span class = "n" > keys</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1112" name = "__codelineno-0-1112" ></ a > < span class = "n" > logger</ span >< span class = "o" > .</ span >< span class = "n" > warning</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1113" name = "__codelineno-0-1113" ></ a > < span class = "s2" > " Skipping </ span >< span class = "si" > %s</ span >< span class = "s2" > deduplication: no supported key columns" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1114" name = "__codelineno-0-1114" ></ a > < span class = "n" > table</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1115" name = "__codelineno-0-1115" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1116" name = "__codelineno-0-1116" ></ a > < span class = "k" > continue</ span >
< a id = "__codelineno-0-1117" name = "__codelineno-0-1117" ></ a > < span class = "n" > raw_scopes</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "n" > DedupScope</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-1118" name = "__codelineno-0-1118" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "n" > dataset</ span >< span class = "p" > ,</ span > < span class = "p" > ())</ span > < span class = "k" > if</ span > < span class = "n" > dedup_scopes</ span > < span class = "k" > else</ span > < span class = "p" > ()</ span >
< a id = "__codelineno-0-1119" name = "__codelineno-0-1119" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1120" name = "__codelineno-0-1120" ></ a > < span class = "n" > scopes</ span > < span class = "o" > =</ span > < span class = "p" > [</ span >< span class = "n" > scope</ span > < span class = "k" > for</ span > < span class = "n" > scope</ span > < span class = "ow" > in</ span > < span class = "n" > raw_scopes</ span > < span class = "k" > if</ span > < span class = "n" > scope</ span >< span class = "o" > .</ span >< span class = "n" > required_columns</ span > < span class = "o" > < =</ span > < span class = "n" > columns</ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-1121" name = "__codelineno-0-1121" ></ a > < span class = "k" > if</ span > < span class = "n" > scopes</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1122" name = "__codelineno-0-1122" ></ a > < span class = "k" > for</ span > < span class = "n" > scope</ span > < span class = "ow" > in</ span > < span class = "n" > scopes</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1123" name = "__codelineno-0-1123" ></ a > < span class = "n" > drop_duplicates_in_table</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1124" name = "__codelineno-0-1124" ></ a > < span class = "n" > cursor</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1125" name = "__codelineno-0-1125" ></ a > < span class = "n" > table</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1126" name = "__codelineno-0-1126" ></ a > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > keys</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-1127" name = "__codelineno-0-1127" ></ a > < span class = "n" > keep</ span >< span class = "o" > =</ span >< span class = "s2" > " last" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1128" name = "__codelineno-0-1128" ></ a > < span class = "n" > scope_where</ span >< span class = "o" > =</ span >< span class = "n" > scope</ span >< span class = "o" > .</ span >< span class = "n" > where</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1129" name = "__codelineno-0-1129" ></ a > < span class = "n" > scope_params</ span >< span class = "o" > =</ span >< span class = "n" > scope</ span >< span class = "o" > .</ span >< span class = "n" > params</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1130" name = "__codelineno-0-1130" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1131" name = "__codelineno-0-1131" ></ a > < span class = "k" > continue</ span >
< a id = "__codelineno-0-1132" name = "__codelineno-0-1132" ></ a > < span class = "n" > drop_duplicates_in_table</ span >< span class = "p" > (</ span >< span class = "n" > cursor</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > ,</ span > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > keys</ span >< span class = "p" > ),</ span > < span class = "n" > keep</ span >< span class = "o" > =</ span >< span class = "s2" > " last" </ span >< span class = "p" > )</ span >
2026-06-09 02:27:54 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.drop_duplicates_in_table" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > drop_duplicates_in_table</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.drop_duplicates_in_table" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > drop_duplicates_in_table</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > cursor</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Cursor" > Cursor</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > ids</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > keep</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >< span class = "s2" > " first" </ span >< span class = "p" > ,</ span > < span class = "s2" > " last" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "s2" > " last" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > scope_where</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > scope_params</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "object" > object</ 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-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Remove duplicate rows, keeping the first or last ROWID per key group.</ p >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If the table or column names are invalid.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1023" > 1023</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1024" > 1024</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1025" > 1025</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1026" > 1026</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1027" > 1027</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1028" > 1028</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1029" > 1029</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1030" > 1030</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1031" > 1031</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1032" > 1032</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1033" > 1033</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1034" > 1034</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1035" > 1035</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1036" > 1036</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1037" > 1037</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1038" > 1038</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1039" > 1039</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1040" > 1040</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1041" > 1041</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1042" > 1042</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1043" > 1043</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1044" > 1044</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1045" > 1045</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1046" > 1046</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1047" > 1047</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1048" > 1048</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1049" > 1049</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1050" > 1050</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1051" > 1051</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1052" > 1052</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1053" > 1053</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1054" > 1054</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1055" > 1055</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1056" > 1056</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1023" name = "__codelineno-0-1023" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > drop_duplicates_in_table</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1024" name = "__codelineno-0-1024" ></ a > < span class = "n" > cursor</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Cursor</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1025" name = "__codelineno-0-1025" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1026" name = "__codelineno-0-1026" ></ a > < span class = "n" > ids</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1027" name = "__codelineno-0-1027" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1028" name = "__codelineno-0-1028" ></ a > < span class = "n" > keep</ span >< span class = "p" > :</ span > < span class = "n" > Literal</ span >< span class = "p" > [</ span >< span class = "s2" > " first" </ span >< span class = "p" > ,</ span > < span class = "s2" > " last" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "s2" > " last" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1029" name = "__codelineno-0-1029" ></ a > < span class = "n" > scope_where</ 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-1030" name = "__codelineno-0-1030" ></ a > < span class = "n" > scope_params</ span >< span class = "p" > :</ span > < span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > object</ 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-1031" name = "__codelineno-0-1031" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1032" name = "__codelineno-0-1032" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Remove duplicate rows, keeping the first or last ROWID per key group.</ span >
< a id = "__codelineno-0-1033" name = "__codelineno-0-1033" ></ a >
< a id = "__codelineno-0-1034" name = "__codelineno-0-1034" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-1035" name = "__codelineno-0-1035" ></ a >< span class = "sd" > ValueError: If the table or column names are invalid.</ span >
< a id = "__codelineno-0-1036" name = "__codelineno-0-1036" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1037" name = "__codelineno-0-1037" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > table</ span >< span class = "o" > .</ span >< span class = "n" > isidentifier</ span >< span class = "p" > ():</ span >
< a id = "__codelineno-0-1038" name = "__codelineno-0-1038" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Invalid table name: </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-1039" name = "__codelineno-0-1039" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1040" name = "__codelineno-0-1040" ></ a > < span class = "k" > if</ span > < span class = "n" > invalid</ span > < span class = "o" > :=</ span > < span class = "p" > {</ span >< span class = "n" > column</ span > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > ids</ span > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > column</ span >< span class = "o" > .</ span >< span class = "n" > isidentifier</ span >< span class = "p" > ()}:</ span >
< a id = "__codelineno-0-1041" name = "__codelineno-0-1041" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Invalid column names: </ span >< span class = "si" > {</ span >< span class = "s1" > ' , ' </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "nb" > sorted</ span >< span class = "p" > (</ span >< span class = "n" > invalid</ span >< span class = "p" > ))</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-1042" name = "__codelineno-0-1042" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1043" name = "__codelineno-0-1043" ></ a > < span class = "n" > ids_csv</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "sa" > f</ span >< span class = "s1" > '" </ span >< span class = "si" > {</ span >< span class = "n" > column</ span >< span class = "si" > }</ span >< span class = "s1" > "' </ span > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > ids</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1044" name = "__codelineno-0-1044" ></ a > < span class = "n" > rowid_selector</ span > < span class = "o" > =</ span > < span class = "s2" > " MIN" </ span > < span class = "k" > if</ span > < span class = "n" > keep</ span > < span class = "o" > ==</ span > < span class = "s2" > " first" </ span > < span class = "k" > else</ span > < span class = "s2" > " MAX" </ span >
< a id = "__codelineno-0-1045" name = "__codelineno-0-1045" ></ a > < span class = "k" > if</ span > < span class = "n" > scope_where</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1046" name = "__codelineno-0-1046" ></ a > < span class = "n" > delete_sql</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-1047" name = "__codelineno-0-1047" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " DELETE FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > WHERE </ span >< span class = "si" > {</ span >< span class = "n" > scope_where</ span >< span class = "si" > }</ span >< span class = "s2" > AND ROWID NOT IN" </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-1048" name = "__codelineno-0-1048" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " (SELECT </ span >< span class = "si" > {</ span >< span class = "n" > rowid_selector</ span >< span class = "si" > }</ span >< span class = "s2" > (ROWID) FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > WHERE </ span >< span class = "si" > {</ span >< span class = "n" > scope_where</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-1049" name = "__codelineno-0-1049" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " GROUP BY </ span >< span class = "si" > {</ span >< span class = "n" > ids_csv</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >
< a id = "__codelineno-0-1050" name = "__codelineno-0-1050" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1051" name = "__codelineno-0-1051" ></ a > < span class = "n" > cursor</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "n" > delete_sql</ span >< span class = "p" > ,</ span > < span class = "n" > scope_params</ span > < span class = "o" > +</ span > < span class = "n" > scope_params</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1052" name = "__codelineno-0-1052" ></ a > < span class = "k" > return</ span >
< a id = "__codelineno-0-1053" name = "__codelineno-0-1053" ></ a > < span class = "n" > cursor</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1054" name = "__codelineno-0-1054" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " DELETE FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > WHERE ROWID NOT IN" </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-1055" name = "__codelineno-0-1055" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " (SELECT </ span >< span class = "si" > {</ span >< span class = "n" > rowid_selector</ span >< span class = "si" > }</ span >< span class = "s2" > (ROWID) FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > GROUP BY </ span >< span class = "si" > {</ span >< span class = "n" > ids_csv</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1056" name = "__codelineno-0-1056" ></ a > < span class = "p" > )</ span >
2026-06-10 17:31:32 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.drop_forming_rate_bar" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > drop_forming_rate_bar</ span >
< a href = "#mt5cli.history.drop_forming_rate_bar" 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" > drop_forming_rate_bar</ span >< span class = "p" > (</ span >< span class = "n" > df_rate</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return closed bars from chronologically ordered MT5 rate data.</ p >
< p > MetaTrader 5 < code > copy_rates_from_pos(start_pos=0)</ code > includes the still-forming
current bar as the last row. Slice it off so downstream logic only sees
completed bars. Empty frames and single-row frames return empty results.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > df_rate</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Rate data ordered oldest-to-newest with the forming bar last.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > A new DataFrame with all rows except the last. Index and columns are</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > preserved. The input frame is not modified.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-110" > 110</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-111" > 111</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-112" > 112</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-113" > 113</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-114" > 114</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-115" > 115</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-116" > 116</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-117" > 117</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-118" > 118</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-119" > 119</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-120" > 120</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-121" > 121</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-122" > 122</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-123" > 123</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-124" > 124</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-110" name = "__codelineno-0-110" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > drop_forming_rate_bar</ span >< span class = "p" > (</ span >< span class = "n" > df_rate</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-111" name = "__codelineno-0-111" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return closed bars from chronologically ordered MT5 rate data.</ span >
< a id = "__codelineno-0-112" name = "__codelineno-0-112" ></ a >
< a id = "__codelineno-0-113" name = "__codelineno-0-113" ></ a >< span class = "sd" > MetaTrader 5 ``copy_rates_from_pos(start_pos=0)`` includes the still-forming</ span >
< a id = "__codelineno-0-114" name = "__codelineno-0-114" ></ a >< span class = "sd" > current bar as the last row. Slice it off so downstream logic only sees</ span >
< a id = "__codelineno-0-115" name = "__codelineno-0-115" ></ a >< span class = "sd" > completed bars. Empty frames and single-row frames return empty results.</ span >
< a id = "__codelineno-0-116" name = "__codelineno-0-116" ></ a >
< a id = "__codelineno-0-117" name = "__codelineno-0-117" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-118" name = "__codelineno-0-118" ></ a >< span class = "sd" > df_rate: Rate data ordered oldest-to-newest with the forming bar last.</ span >
< a id = "__codelineno-0-119" name = "__codelineno-0-119" ></ a >
< a id = "__codelineno-0-120" name = "__codelineno-0-120" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-121" name = "__codelineno-0-121" ></ a >< span class = "sd" > A new DataFrame with all rows except the last. Index and columns are</ span >
< a id = "__codelineno-0-122" name = "__codelineno-0-122" ></ a >< span class = "sd" > preserved. The input frame is not modified.</ span >
< a id = "__codelineno-0-123" name = "__codelineno-0-123" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-124" name = "__codelineno-0-124" ></ a > < span class = "k" > return</ span > < span class = "n" > df_rate</ span >< span class = "o" > .</ span >< span class = "n" > iloc</ span >< span class = "p" > [:</ span >< span class = "o" > -</ span >< span class = "mi" > 1</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.drop_rate_compatibility_views" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > drop_rate_compatibility_views</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.drop_rate_compatibility_views" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > drop_rate_compatibility_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Drop all mt5cli-managed < code > rate_*</ code > compatibility views.</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1293" > 1293</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1294" > 1294</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1295" > 1295</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1296" > 1296</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1297" > 1297</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1298" > 1298</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1299" > 1299</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1300" > 1300</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1293" name = "__codelineno-0-1293" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > drop_rate_compatibility_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1294" name = "__codelineno-0-1294" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Drop all mt5cli-managed ``rate_*`` compatibility views.""" </ span >
< a id = "__codelineno-0-1295" name = "__codelineno-0-1295" ></ a > < span class = "n" > rows</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1296" name = "__codelineno-0-1296" ></ a > < span class = "s2" > " SELECT name FROM sqlite_master WHERE type = ' view' AND name GLOB ' rate_*'" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1297" name = "__codelineno-0-1297" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchall</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1298" name = "__codelineno-0-1298" ></ a > < span class = "k" > for</ span > < span class = "p" > (</ span >< span class = "n" > view_name</ span >< span class = "p" > ,)</ span > < span class = "ow" > in</ span > < span class = "n" > rows</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1299" name = "__codelineno-0-1299" ></ a > < span class = "n" > quoted_view_name</ span > < span class = "o" > =</ span > < span class = "n" > quote_sqlite_identifier</ span >< span class = "p" > (</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > view_name</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-1300" name = "__codelineno-0-1300" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "sa" > f</ span >< span class = "s2" > " DROP VIEW IF EXISTS </ span >< span class = "si" > {</ span >< span class = "n" > quoted_view_name</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >< span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.filter_incremental_history_deals_frame" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > filter_incremental_history_deals_frame</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.filter_incremental_history_deals_frame" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > filter_incremental_history_deals_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > start_by_symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > account_event_start</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Filter incrementally fetched history_deals by symbol and event start times.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Rows for selected symbols at or after each symbol start, plus account</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
2026-06-09 06:37:58 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > events at or after < code > account_event_start</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1174" > 1174</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1175" > 1175</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1176" > 1176</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1177" > 1177</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1178" > 1178</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1179" > 1179</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1180" > 1180</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1181" > 1181</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1182" > 1182</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1183" > 1183</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1184" > 1184</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1185" > 1185</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1186" > 1186</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1187" > 1187</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1188" > 1188</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1189" > 1189</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1190" > 1190</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1191" > 1191</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1192" > 1192</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1193" > 1193</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1194" > 1194</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1195" > 1195</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1196" > 1196</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1197" > 1197</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1198" > 1198</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1199" > 1199</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1200" > 1200</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1201" > 1201</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1174" name = "__codelineno-0-1174" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > filter_incremental_history_deals_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1175" name = "__codelineno-0-1175" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1176" name = "__codelineno-0-1176" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1177" name = "__codelineno-0-1177" ></ a > < span class = "n" > start_by_symbol</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "n" > datetime</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1178" name = "__codelineno-0-1178" ></ a > < span class = "n" > account_event_start</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1179" name = "__codelineno-0-1179" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1180" name = "__codelineno-0-1180" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Filter incrementally fetched history_deals by symbol and event start times.</ span >
< a id = "__codelineno-0-1181" name = "__codelineno-0-1181" ></ a >
< a id = "__codelineno-0-1182" name = "__codelineno-0-1182" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1183" name = "__codelineno-0-1183" ></ a >< span class = "sd" > Rows for selected symbols at or after each symbol start, plus account</ span >
< a id = "__codelineno-0-1184" name = "__codelineno-0-1184" ></ a >< span class = "sd" > events at or after ``account_event_start``.</ span >
< a id = "__codelineno-0-1185" name = "__codelineno-0-1185" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1186" name = "__codelineno-0-1186" ></ a > < span class = "k" > if</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > empty</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1187" name = "__codelineno-0-1187" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1188" name = "__codelineno-0-1188" ></ a > < span class = "n" > parsed_times</ span > < span class = "o" > =</ span > < span class = "n" > _frame_parsed_times</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1189" name = "__codelineno-0-1189" ></ a > < span class = "n" > time_valid</ span > < span class = "o" > =</ span > < span class = "n" > parsed_times</ span >< span class = "o" > .</ span >< span class = "n" > notna</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1190" name = "__codelineno-0-1190" ></ a > < span class = "n" > account_event_mask</ span > < span class = "o" > =</ span > < span class = "n" > _history_deals_account_event_mask</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1191" name = "__codelineno-0-1191" ></ a > < span class = "n" > account_keep</ span > < span class = "o" > =</ span > < span class = "n" > account_event_mask</ span > < span class = "o" > & </ span > < span class = "p" > (</ span >< span class = "n" > parsed_times</ span > < span class = "o" > > =</ span > < span class = "n" > account_event_start</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1192" name = "__codelineno-0-1192" ></ a > < span class = "n" > trade_keep</ span > < span class = "o" > =</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > Series</ span >< span class = "p" > (</ span >< span class = "n" > data</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > index</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1193" name = "__codelineno-0-1193" ></ a > < span class = "k" > if</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > in</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1194" name = "__codelineno-0-1194" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1195" name = "__codelineno-0-1195" ></ a > < span class = "n" > trade_keep</ span > < span class = "o" > |=</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-1196" name = "__codelineno-0-1196" ></ a > < span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]</ span > < span class = "o" > ==</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1197" name = "__codelineno-0-1197" ></ a > < span class = "o" > & </ span > < span class = "p" > (</ span >< span class = "n" > parsed_times</ span > < span class = "o" > > =</ span > < span class = "n" > start_by_symbol</ span >< span class = "p" > [</ span >< span class = "n" > symbol</ span >< span class = "p" > ])</ span >
< a id = "__codelineno-0-1198" name = "__codelineno-0-1198" ></ a > < span class = "o" > & </ span > < span class = "o" > ~</ span >< span class = "n" > account_event_mask</ span >
< a id = "__codelineno-0-1199" name = "__codelineno-0-1199" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1200" name = "__codelineno-0-1200" ></ a > < span class = "n" > keep</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >< span class = "n" > account_keep</ span > < span class = "o" > |</ span > < span class = "n" > trade_keep</ span >< span class = "p" > )</ span > < span class = "o" > & </ span > < span class = "n" > time_valid</ span >
< a id = "__codelineno-0-1201" name = "__codelineno-0-1201" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > loc</ span >< span class = "p" > [</ span >< span class = "n" > keep</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.filter_trade_history_frame" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > filter_trade_history_frame</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.filter_trade_history_frame" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > filter_trade_history_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Filter trade history rows to selected symbols and account events.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Filtered history rows.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1204" > 1204</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1205" > 1205</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1206" > 1206</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1207" > 1207</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1208" > 1208</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1209" > 1209</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1210" > 1210</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1211" > 1211</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1212" > 1212</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1213" > 1213</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1214" > 1214</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1215" > 1215</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1216" > 1216</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1217" > 1217</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1218" > 1218</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1219" > 1219</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1220" > 1220</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1221" > 1221</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1204" name = "__codelineno-0-1204" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > filter_trade_history_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1205" name = "__codelineno-0-1205" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1206" name = "__codelineno-0-1206" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1207" name = "__codelineno-0-1207" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1208" name = "__codelineno-0-1208" ></ a > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1209" name = "__codelineno-0-1209" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1210" name = "__codelineno-0-1210" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Filter trade history rows to selected symbols and account events.</ span >
< a id = "__codelineno-0-1211" name = "__codelineno-0-1211" ></ a >
< a id = "__codelineno-0-1212" name = "__codelineno-0-1212" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1213" name = "__codelineno-0-1213" ></ a >< span class = "sd" > Filtered history rows.</ span >
< a id = "__codelineno-0-1214" name = "__codelineno-0-1214" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1215" name = "__codelineno-0-1215" ></ a > < span class = "k" > if</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1216" name = "__codelineno-0-1216" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >
< a id = "__codelineno-0-1217" name = "__codelineno-0-1217" ></ a > < span class = "n" > symbol_mask</ span > < span class = "o" > =</ span > < span class = "n" > frame</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > isin</ span >< span class = "p" > (</ span >< span class = "n" > symbols</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1218" name = "__codelineno-0-1218" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1219" name = "__codelineno-0-1219" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > loc</ span >< span class = "p" > [</ span >< span class = "n" > symbol_mask</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1220" name = "__codelineno-0-1220" ></ a > < span class = "n" > account_event_mask</ span > < span class = "o" > =</ span > < span class = "n" > _history_deals_account_event_mask</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1221" name = "__codelineno-0-1221" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > loc</ span >< span class = "p" > [</ span >< span class = "n" > symbol_mask</ span > < span class = "o" > |</ span > < span class = "n" > account_event_mask</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.get_history_deals_account_event_start_datetime" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > get_history_deals_account_event_start_datetime</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.get_history_deals_account_event_start_datetime" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > get_history_deals_account_event_start_datetime</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span > < span class = "o" > *</ span >< span class = "p" > ,</ span > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return the next update start for account-level history_deals rows.</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-812" > 812</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-813" > 813</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-814" > 814</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-815" > 815</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-816" > 816</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-817" > 817</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-818" > 818</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-819" > 819</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-820" > 820</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-821" > 821</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-822" > 822</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-823" > 823</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-824" > 824</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-825" > 825</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-826" > 826</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-827" > 827</ a ></ span >
< 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 >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-831" > 831</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-832" > 832</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-812" name = "__codelineno-0-812" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_history_deals_account_event_start_datetime</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-813" name = "__codelineno-0-813" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-814" name = "__codelineno-0-814" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-815" name = "__codelineno-0-815" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-816" name = "__codelineno-0-816" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > datetime</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-817" name = "__codelineno-0-817" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return the next update start for account-level history_deals rows.""" </ span >
< a id = "__codelineno-0-818" name = "__codelineno-0-818" ></ a > < span class = "n" > table</ span > < span class = "o" > =</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >
< a id = "__codelineno-0-819" name = "__codelineno-0-819" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-820" name = "__codelineno-0-820" ></ a > < span class = "k" > if</ span > < span class = "s2" > " time" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-821" name = "__codelineno-0-821" ></ a > < span class = "k" > return</ span > < span class = "n" > fallback_start</ span >
< a id = "__codelineno-0-822" name = "__codelineno-0-822" ></ a > < span class = "k" > if</ span > < span class = "s2" > " type" </ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-823" name = "__codelineno-0-823" ></ a > < span class = "n" > where_clause</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " type NOT IN </ span >< span class = "si" > {</ span >< span class = "n" > _TRADE_DEAL_TYPES_SQL</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-824" name = "__codelineno-0-824" ></ a > < span class = "k" > elif</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-825" name = "__codelineno-0-825" ></ a > < span class = "n" > where_clause</ span > < span class = "o" > =</ span > < span class = "s2" > " symbol IS NULL OR symbol = ''" </ span >
< a id = "__codelineno-0-826" name = "__codelineno-0-826" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-827" name = "__codelineno-0-827" ></ a > < span class = "k" > return</ span > < span class = "n" > fallback_start</ span >
< a id = "__codelineno-0-828" name = "__codelineno-0-828" ></ a > < span class = "n" > row</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-829" name = "__codelineno-0-829" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT MAX(time) FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > WHERE </ span >< span class = "si" > {</ span >< span class = "n" > where_clause</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >< span class = "p" > ,</ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-830" name = "__codelineno-0-830" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchone</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-831" name = "__codelineno-0-831" ></ a > < span class = "n" > parsed</ span > < span class = "o" > =</ span > < span class = "n" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "mi" > 0</ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > row</ span > < span class = "k" > else</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-832" name = "__codelineno-0-832" ></ a > < span class = "k" > return</ span > < span class = "n" > parsed</ span > < span class = "k" > if</ span > < span class = "n" > parsed</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "n" > fallback_start</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.get_incremental_start_datetime" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > get_incremental_start_datetime</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.get_incremental_start_datetime" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > get_incremental_start_datetime</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return the next update start datetime from existing MAX(time).</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< 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 >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-931" > 931</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-932" > 932</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-933" > 933</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-934" > 934</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-935" > 935</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-936" > 936</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-937" > 937</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-938" > 938</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-939" > 939</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-940" > 940</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-941" > 941</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-942" > 942</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-943" > 943</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-944" > 944</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-945" > 945</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-946" > 946</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-947" > 947</ 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" > get_incremental_start_datetime</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-931" name = "__codelineno-0-931" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-932" name = "__codelineno-0-932" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" > Dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-933" name = "__codelineno-0-933" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-934" name = "__codelineno-0-934" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-935" name = "__codelineno-0-935" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-936" name = "__codelineno-0-936" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-937" name = "__codelineno-0-937" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > datetime</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-938" name = "__codelineno-0-938" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return the next update start datetime from existing MAX(time).""" </ span >
< a id = "__codelineno-0-939" name = "__codelineno-0-939" ></ a > < span class = "n" > timeframes</ span > < span class = "o" > =</ span > < span class = "p" > [</ span >< span class = "n" > timeframe</ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > timeframe</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-940" name = "__codelineno-0-940" ></ a > < span class = "n" > starts</ span > < span class = "o" > =</ span > < span class = "n" > load_incremental_start_datetimes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-941" name = "__codelineno-0-941" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-942" name = "__codelineno-0-942" ></ a > < span class = "n" > dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-943" name = "__codelineno-0-943" ></ a > < span class = "n" > symbols</ span >< span class = "o" > =</ span >< span class = "p" > [</ span >< span class = "n" > symbol</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-944" name = "__codelineno-0-944" ></ a > < span class = "n" > timeframes</ span >< span class = "o" > =</ span >< span class = "n" > timeframes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-945" name = "__codelineno-0-945" ></ a > < span class = "n" > fallback_start</ span >< span class = "o" > =</ span >< span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-946" name = "__codelineno-0-946" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-947" name = "__codelineno-0-947" ></ a > < span class = "k" > return</ span > < span class = "n" > starts</ span >< span class = "p" > [</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > ]</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-09 06:37:58 +00:00
< h3 id = "mt5cli.history.get_table_columns" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > get_table_columns</ span >
< a href = "#mt5cli.history.get_table_columns" 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" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return existing SQLite columns for a table.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-776" > 776</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-777" > 777</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-778" > 778</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-779" > 779</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-780" > 780</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-776" name = "__codelineno-0-776" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-777" name = "__codelineno-0-777" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return existing SQLite columns for a table.""" </ span >
< a id = "__codelineno-0-778" name = "__codelineno-0-778" ></ a > < span class = "n" > quoted_table</ span > < span class = "o" > =</ span > < span class = "n" > quote_sqlite_identifier</ span >< span class = "p" > (</ span >< span class = "n" > table</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-779" name = "__codelineno-0-779" ></ a > < span class = "n" > rows</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "sa" > f</ span >< span class = "s2" > " PRAGMA table_info(</ span >< span class = "si" > {</ span >< span class = "n" > quoted_table</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >< span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchall</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-780" name = "__codelineno-0-780" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "mi" > 1</ span >< span class = "p" > ])</ span > < span class = "k" > for</ span > < span class = "n" > row</ span > < span class = "ow" > in</ span > < span class = "n" > rows</ span >< span class = "p" > }</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.load_incremental_start_datetimes" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > load_incremental_start_datetimes</ span >
< a href = "#mt5cli.history.load_incremental_start_datetimes" 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" > load_incremental_start_datetimes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > timeframes</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "dict" > dict</ span ></ 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 = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ],</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return next update start datetimes keyed by symbol and optional timeframe.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-854" > 854</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-855" > 855</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-856" > 856</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-857" > 857</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-858" > 858</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-859" > 859</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-860" > 860</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-861" > 861</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-862" > 862</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-863" > 863</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-864" > 864</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-865" > 865</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-866" > 866</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-867" > 867</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-868" > 868</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-869" > 869</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-870" > 870</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-871" > 871</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-872" > 872</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-873" > 873</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-874" > 874</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-875" > 875</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-876" > 876</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-877" > 877</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-878" > 878</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-879" > 879</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-880" > 880</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-881" > 881</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-882" > 882</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-883" > 883</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-884" > 884</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-885" > 885</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-886" > 886</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-887" > 887</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-888" > 888</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-889" > 889</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-890" > 890</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-891" > 891</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-892" > 892</ a ></ span >
< 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 >
2026-06-10 17:31:32 +00:00
< 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 >
2026-06-12 16:32:35 +00:00
< 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-854" name = "__codelineno-0-854" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > load_incremental_start_datetimes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-855" name = "__codelineno-0-855" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-856" name = "__codelineno-0-856" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" > Dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-857" name = "__codelineno-0-857" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-858" name = "__codelineno-0-858" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-859" name = "__codelineno-0-859" ></ 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 = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-860" name = "__codelineno-0-860" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-861" name = "__codelineno-0-861" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ],</ span > < span class = "n" > datetime</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-862" name = "__codelineno-0-862" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return next update start datetimes keyed by symbol and optional timeframe.""" </ span >
< a id = "__codelineno-0-863" name = "__codelineno-0-863" ></ a > < span class = "n" > table</ span > < span class = "o" > =</ span > < span class = "n" > dataset</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >
< a id = "__codelineno-0-864" name = "__codelineno-0-864" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-865" name = "__codelineno-0-865" ></ a > < span class = "k" > if</ span > < span class = "n" > dataset</ span > < span class = "ow" > is</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span > < span class = "ow" > and</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-866" name = "__codelineno-0-866" ></ a > < span class = "n" > _validate_rates_schema</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-867" name = "__codelineno-0-867" ></ a >
< a id = "__codelineno-0-868" name = "__codelineno-0-868" ></ a > < span class = "k" > if</ span > < span class = "s2" > " time" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-869" name = "__codelineno-0-869" ></ a > < span class = "k" > if</ span > < span class = "n" > dataset</ span > < span class = "ow" > is</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span > < span class = "ow" > and</ span > < span class = "n" > timeframes</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-870" name = "__codelineno-0-870" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-871" name = "__codelineno-0-871" ></ a > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > ):</ span > < span class = "n" > fallback_start</ span >
< a id = "__codelineno-0-872" name = "__codelineno-0-872" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >
< a id = "__codelineno-0-873" name = "__codelineno-0-873" ></ a > < span class = "k" > for</ span > < span class = "n" > timeframe</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >
< a id = "__codelineno-0-874" name = "__codelineno-0-874" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-875" name = "__codelineno-0-875" ></ a > < span class = "k" > return</ span > < span class = "p" > {(</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > ):</ span > < span class = "n" > fallback_start</ span > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > }</ span >
< a id = "__codelineno-0-876" name = "__codelineno-0-876" ></ a >
< a id = "__codelineno-0-877" name = "__codelineno-0-877" ></ a > < span class = "n" > parsed_by_key</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ],</ span > < span class = "n" > datetime</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > {}</ span >
< a id = "__codelineno-0-878" name = "__codelineno-0-878" ></ a > < span class = "k" > if</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-879" name = "__codelineno-0-879" ></ a > < span class = "n" > dataset</ span > < span class = "ow" > is</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span >
< a id = "__codelineno-0-880" name = "__codelineno-0-880" ></ a > < span class = "ow" > and</ span > < span class = "n" > timeframes</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-881" name = "__codelineno-0-881" ></ a > < span class = "ow" > and</ span > < span class = "p" > {</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > }</ span >< span class = "o" > .</ span >< span class = "n" > issubset</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-882" name = "__codelineno-0-882" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-883" name = "__codelineno-0-883" ></ a > < span class = "n" > symbol_placeholders</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "s2" > " ?" </ span > < span class = "k" > for</ span > < span class = "n" > _</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-884" name = "__codelineno-0-884" ></ a > < span class = "n" > timeframe_placeholders</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "s2" > " ?" </ span > < span class = "k" > for</ span > < span class = "n" > _</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-885" name = "__codelineno-0-885" ></ a > < span class = "n" > grouped_rates_query</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-886" name = "__codelineno-0-886" ></ a > < span class = "s2" > " SELECT symbol, timeframe, MAX(time) FROM " </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-887" name = "__codelineno-0-887" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > WHERE symbol IN (</ span >< span class = "si" > {</ span >< span class = "n" > symbol_placeholders</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >
< a id = "__codelineno-0-888" name = "__codelineno-0-888" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " AND timeframe IN (</ span >< span class = "si" > {</ span >< span class = "n" > timeframe_placeholders</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >
< a id = "__codelineno-0-889" name = "__codelineno-0-889" ></ a > < span class = "s2" > " GROUP BY symbol, timeframe" </ span >
< a id = "__codelineno-0-890" name = "__codelineno-0-890" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-891" name = "__codelineno-0-891" ></ a > < span class = "n" > rows</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-892" name = "__codelineno-0-892" ></ a > < span class = "n" > grouped_rates_query</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-893" name = "__codelineno-0-893" ></ a > < span class = "p" > [</ span >< span class = "o" > *</ span >< span class = "n" > symbols</ span >< span class = "p" > ,</ span > < span class = "o" > *</ span >< span class = "n" > timeframes</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-894" name = "__codelineno-0-894" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchall</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-895" name = "__codelineno-0-895" ></ a > < span class = "k" > for</ span > < span class = "n" > row_symbol</ span >< span class = "p" > ,</ span > < span class = "n" > row_timeframe</ span >< span class = "p" > ,</ span > < span class = "n" > max_time</ span > < span class = "ow" > in</ span > < span class = "n" > rows</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-896" name = "__codelineno-0-896" ></ a > < span class = "n" > parsed</ span > < span class = "o" > =</ span > < span class = "n" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > max_time</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-897" name = "__codelineno-0-897" ></ a > < span class = "k" > if</ span > < span class = "n" > parsed</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-898" name = "__codelineno-0-898" ></ a > < span class = "n" > parsed_by_key</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row_symbol</ span >< span class = "p" > ),</ span > < span class = "nb" > int</ span >< span class = "p" > (</ span >< span class = "n" > row_timeframe</ span >< span class = "p" > )]</ span > < span class = "o" > =</ span > < span class = "n" > parsed</ span >
< a id = "__codelineno-0-899" name = "__codelineno-0-899" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-900" name = "__codelineno-0-900" ></ a > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > ):</ span > < span class = "n" > parsed_by_key</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-901" name = "__codelineno-0-901" ></ a > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-902" name = "__codelineno-0-902" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-903" name = "__codelineno-0-903" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-904" name = "__codelineno-0-904" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >
< a id = "__codelineno-0-905" name = "__codelineno-0-905" ></ a > < span class = "k" > for</ span > < span class = "n" > timeframe</ span > < span class = "ow" > in</ span > < span class = "n" > timeframes</ span >
< a id = "__codelineno-0-906" name = "__codelineno-0-906" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-907" name = "__codelineno-0-907" ></ a >
< a id = "__codelineno-0-908" name = "__codelineno-0-908" ></ a > < span class = "k" > if</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-909" name = "__codelineno-0-909" ></ a > < span class = "n" > symbol_placeholders</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "s2" > " ?" </ span > < span class = "k" > for</ span > < span class = "n" > _</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-910" name = "__codelineno-0-910" ></ a > < span class = "n" > rows</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-911" name = "__codelineno-0-911" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT symbol, MAX(time) FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-912" name = "__codelineno-0-912" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " WHERE symbol IN (</ span >< span class = "si" > {</ span >< span class = "n" > symbol_placeholders</ span >< span class = "si" > }</ span >< span class = "s2" > ) GROUP BY symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-913" name = "__codelineno-0-913" ></ a > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > symbols</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-914" name = "__codelineno-0-914" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchall</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-915" name = "__codelineno-0-915" ></ a > < span class = "k" > for</ span > < span class = "n" > row_symbol</ span >< span class = "p" > ,</ span > < span class = "n" > max_time</ span > < span class = "ow" > in</ span > < span class = "n" > rows</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-916" name = "__codelineno-0-916" ></ a > < span class = "n" > parsed</ span > < span class = "o" > =</ span > < span class = "n" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > max_time</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-917" name = "__codelineno-0-917" ></ a > < span class = "k" > if</ span > < span class = "n" > parsed</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-918" name = "__codelineno-0-918" ></ a > < span class = "n" > parsed_by_key</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row_symbol</ span >< span class = "p" > ),</ span > < span class = "kc" > None</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > parsed</ span >
< a id = "__codelineno-0-919" name = "__codelineno-0-919" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-920" name = "__codelineno-0-920" ></ a > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > ):</ span > < span class = "n" > parsed_by_key</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > ((</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > ),</ span > < span class = "n" > fallback_start</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-921" name = "__codelineno-0-921" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >
< a id = "__codelineno-0-922" name = "__codelineno-0-922" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-923" name = "__codelineno-0-923" ></ a >
< a id = "__codelineno-0-924" name = "__codelineno-0-924" ></ a > < span class = "n" > row</ span > < span class = "o" > =</ span > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > execute</ span >< span class = "p" > (</ span >< span class = "sa" > f</ span >< span class = "s2" > " SELECT MAX(time) FROM </ span >< span class = "si" > {</ span >< span class = "n" > table</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >< span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > fetchone</ span >< span class = "p" > ()</ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-925" name = "__codelineno-0-925" ></ a > < span class = "n" > parsed</ span > < span class = "o" > =</ span > < span class = "n" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "mi" > 0</ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > row</ span > < span class = "k" > else</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-926" name = "__codelineno-0-926" ></ a > < span class = "n" > shared_start</ span > < span class = "o" > =</ span > < span class = "n" > parsed</ span > < span class = "k" > if</ span > < span class = "n" > parsed</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "n" > fallback_start</ span >
< a id = "__codelineno-0-927" name = "__codelineno-0-927" ></ a > < span class = "k" > return</ span > < span class = "p" > {(</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > ):</ span > < span class = "n" > shared_start</ span > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > }</ span >
2026-06-09 15:15:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.load_rate_data" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > load_rate_data</ span >
< a href = "#mt5cli.history.load_rate_data" 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" > load_rate_data</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span >< span class = "p" > ,</ span >
2026-06-09 02:27:54 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Load rate-like data from a SQLite database path or connection.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQLite database path or open connection.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > table</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Source table or view name.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > count</ code >
</ td >
< td >
< code >< span title = "int" > int</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional number of most recent rows to load.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame indexed by ascending < code > time</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-280" > 280</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-281" > 281</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-282" > 282</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-283" > 283</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-284" > 284</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-285" > 285</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-286" > 286</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-287" > 287</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-288" > 288</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-289" > 289</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-290" > 290</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-291" > 291</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-292" > 292</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-293" > 293</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-294" > 294</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-295" > 295</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-296" > 296</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-297" > 297</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-298" > 298</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-299" > 299</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-300" > 300</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-301" > 301</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-280" name = "__codelineno-0-280" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > load_rate_data</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-281" name = "__codelineno-0-281" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-282" name = "__codelineno-0-282" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-283" name = "__codelineno-0-283" ></ a > < span class = "n" > count</ 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-284" name = "__codelineno-0-284" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-285" name = "__codelineno-0-285" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Load rate-like data from a SQLite database path or connection.</ span >
< a id = "__codelineno-0-286" name = "__codelineno-0-286" ></ a >
< a id = "__codelineno-0-287" name = "__codelineno-0-287" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-288" name = "__codelineno-0-288" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection.</ span >
< a id = "__codelineno-0-289" name = "__codelineno-0-289" ></ a >< span class = "sd" > table: Source table or view name.</ span >
< a id = "__codelineno-0-290" name = "__codelineno-0-290" ></ a >< span class = "sd" > count: Optional number of most recent rows to load.</ span >
< a id = "__codelineno-0-291" name = "__codelineno-0-291" ></ a >
< a id = "__codelineno-0-292" name = "__codelineno-0-292" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-293" name = "__codelineno-0-293" ></ a >< span class = "sd" > DataFrame indexed by ascending ``time``.</ span >
< a id = "__codelineno-0-294" name = "__codelineno-0-294" ></ a >
< a id = "__codelineno-0-295" name = "__codelineno-0-295" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-296" name = "__codelineno-0-296" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > should_close</ span > < span class = "o" > =</ span > < span class = "n" > _open_existing_sqlite_database</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-297" name = "__codelineno-0-297" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-298" name = "__codelineno-0-298" ></ a > < span class = "k" > return</ span > < span class = "n" > load_rate_data_from_connection</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span >< span class = "p" > ,</ span > < span class = "n" > count</ span >< span class = "o" > =</ span >< span class = "n" > count</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-299" name = "__codelineno-0-299" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-300" name = "__codelineno-0-300" ></ a > < span class = "k" > if</ span > < span class = "n" > should_close</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-301" name = "__codelineno-0-301" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > close</ span >< span class = "p" > ()</ span >
2026-06-09 02:27:54 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.load_rate_data_from_connection" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > load_rate_data_from_connection</ span >
< a href = "#mt5cli.history.load_rate_data_from_connection" 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" > load_rate_data_from_connection</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > connection</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Load rate-like data from a SQLite table or view.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > connection</ code >
</ td >
< td >
< code >< span title = "sqlite3.Connection" > Connection</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Open SQLite connection.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > table</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Source table or view name.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > count</ code >
</ td >
< td >
< code >< span title = "int" > int</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional number of most recent rows to load.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-09 15:15:52 +00:00
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame indexed by ascending < code > time</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If inputs, schema, timestamps are invalid, or the table
or view contains no rows.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-234" > 234</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-235" > 235</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-236" > 236</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-237" > 237</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-238" > 238</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-239" > 239</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-240" > 240</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-241" > 241</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-242" > 242</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-243" > 243</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-244" > 244</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-245" > 245</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-246" > 246</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-247" > 247</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-248" > 248</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-249" > 249</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-250" > 250</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-251" > 251</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-252" > 252</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-253" > 253</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-254" > 254</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-255" > 255</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-256" > 256</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-257" > 257</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-258" > 258</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-259" > 259</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-260" > 260</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-261" > 261</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-262" > 262</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-263" > 263</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-264" > 264</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-265" > 265</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-266" > 266</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-267" > 267</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-268" > 268</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-269" > 269</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-270" > 270</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-271" > 271</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-272" > 272</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-273" > 273</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-274" > 274</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-275" > 275</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-276" > 276</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-277" > 277</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-234" name = "__codelineno-0-234" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > load_rate_data_from_connection</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-235" name = "__codelineno-0-235" ></ a > < span class = "n" > connection</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-236" name = "__codelineno-0-236" ></ a > < span class = "n" > table</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-237" name = "__codelineno-0-237" ></ a > < span class = "n" > count</ 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-238" name = "__codelineno-0-238" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-239" name = "__codelineno-0-239" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Load rate-like data from a SQLite table or view.</ span >
< a id = "__codelineno-0-240" name = "__codelineno-0-240" ></ a >
< a id = "__codelineno-0-241" name = "__codelineno-0-241" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-242" name = "__codelineno-0-242" ></ a >< span class = "sd" > connection: Open SQLite connection.</ span >
< a id = "__codelineno-0-243" name = "__codelineno-0-243" ></ a >< span class = "sd" > table: Source table or view name.</ span >
< a id = "__codelineno-0-244" name = "__codelineno-0-244" ></ a >< span class = "sd" > count: Optional number of most recent rows to load.</ span >
< a id = "__codelineno-0-245" name = "__codelineno-0-245" ></ a >
< a id = "__codelineno-0-246" name = "__codelineno-0-246" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-247" name = "__codelineno-0-247" ></ a >< span class = "sd" > DataFrame indexed by ascending ``time``.</ span >
< a id = "__codelineno-0-248" name = "__codelineno-0-248" ></ a >
< a id = "__codelineno-0-249" name = "__codelineno-0-249" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-250" name = "__codelineno-0-250" ></ a >< span class = "sd" > ValueError: If inputs, schema, timestamps are invalid, or the table</ span >
< a id = "__codelineno-0-251" name = "__codelineno-0-251" ></ a >< span class = "sd" > or view contains no rows.</ span >
< a id = "__codelineno-0-252" name = "__codelineno-0-252" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-253" name = "__codelineno-0-253" ></ a > < span class = "n" > table_name</ span > < span class = "o" > =</ span > < span class = "n" > _validate_rate_load_request</ span >< span class = "p" > (</ span >< span class = "n" > table</ span >< span class = "p" > ,</ span > < span class = "n" > count</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-254" name = "__codelineno-0-254" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "n" > get_table_columns</ span >< span class = "p" > (</ span >< span class = "n" > connection</ span >< span class = "p" > ,</ span > < span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-255" name = "__codelineno-0-255" ></ a > < span class = "n" > _ensure_rate_columns</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > ,</ span > < span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-256" name = "__codelineno-0-256" ></ a > < span class = "n" > quoted_table</ span > < span class = "o" > =</ span > < span class = "n" > quote_sqlite_identifier</ span >< span class = "p" > (</ span >< span class = "n" > table_name</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-257" name = "__codelineno-0-257" ></ a > < span class = "k" > if</ span > < span class = "n" > count</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-258" name = "__codelineno-0-258" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-259" name = "__codelineno-0-259" ></ a > < span class = "s2" > " pd.DataFrame" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-260" name = "__codelineno-0-260" ></ a > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > read_sql_query</ span >< span class = "p" > (</ span > < span class = "c1" > # type: ignore[reportUnknownMemberType]</ span >
< a id = "__codelineno-0-261" name = "__codelineno-0-261" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT * FROM </ span >< span class = "si" > {</ span >< span class = "n" > quoted_table</ span >< span class = "si" > }</ span >< span class = "s2" > ORDER BY time ASC" </ span >< span class = "p" > ,</ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-262" name = "__codelineno-0-262" ></ a > < span class = "n" > connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-263" name = "__codelineno-0-263" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-264" name = "__codelineno-0-264" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-265" name = "__codelineno-0-265" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-266" name = "__codelineno-0-266" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-267" name = "__codelineno-0-267" ></ a > < span class = "s2" > " pd.DataFrame" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-268" name = "__codelineno-0-268" ></ a > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > read_sql_query</ span >< span class = "p" > (</ span > < span class = "c1" > # type: ignore[reportUnknownMemberType]</ span >
< a id = "__codelineno-0-269" name = "__codelineno-0-269" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " SELECT * FROM </ span >< span class = "si" > {</ span >< span class = "n" > quoted_table</ span >< span class = "si" > }</ span >< span class = "s2" > ORDER BY time DESC LIMIT ?" </ span >< span class = "p" > ,</ span > < span class = "c1" > # noqa: S608</ span >
< a id = "__codelineno-0-270" name = "__codelineno-0-270" ></ a > < span class = "n" > connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-271" name = "__codelineno-0-271" ></ a > < span class = "n" > params</ span >< span class = "o" > =</ span >< span class = "p" > (</ span >< span class = "n" > count</ span >< span class = "p" > ,),</ span >
< a id = "__codelineno-0-272" name = "__codelineno-0-272" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-273" name = "__codelineno-0-273" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-274" name = "__codelineno-0-274" ></ a > < span class = "k" > if</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > empty</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-275" name = "__codelineno-0-275" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " SQLite table or view </ span >< span class = "si" > {</ span >< span class = "n" > table_name</ span >< span class = "si" > !r}</ span >< span class = "s2" > contains no rows." </ span >
< a id = "__codelineno-0-276" name = "__codelineno-0-276" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-277" name = "__codelineno-0-277" ></ a > < span class = "k" > return</ span > < span class = "n" > _parse_rate_time_index</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > ,</ span > < span class = "n" > table_name</ span >< span class = "p" > )</ span >
2026-06-09 15:15:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.load_rate_series_by_granularity" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > load_rate_series_by_granularity</ span >
< a href = "#mt5cli.history.load_rate_series_by_granularity" 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" > load_rate_series_by_granularity</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > granularities</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ 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 = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > allow_missing_symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "dict" > dict</ span ></ 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 = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Load rate series keyed by symbol and string granularity name.</ p >
< p > Builds targets with :func:< code > build_rate_targets</ code > and loads them with
:func:< code > load_rate_series_from_sqlite</ code > , then rekeys the result by granularity
name (for example < code > M1</ code > ) instead of the integer timeframe to reduce
downstream boilerplate.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQLite database path or open connection.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > symbols</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 symbol names. May be empty when < code > allow_missing_symbol</ code > .</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > granularities</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "int" > int</ span > | < span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 timeframes as integers or names (for example < code > M1</ code > ).</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > count</ code >
</ td >
< td >
< code >< span title = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Number of most recent rows to load per series.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > explicit_tables</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ] | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional explicit table or view names matching the
built targets in row-major order. Required when symbols are omitted.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > allow_missing_symbol</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > When True and < code > symbols</ code > is empty, build targets
with < code > symbol=None</ code > for each granularity instead of raising.</ p >
</ div >
</ td >
< td >
< code > False</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "dict" > dict</ span > [< span title = "tuple" > tuple</ span > [< span title = "str" > str</ span > | None, < span title = "str" > str</ span > ], < span title = "pandas.DataFrame" > DataFrame</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Mapping keyed by < code > (symbol | None, granularity_name)</ code > to each rate</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "dict" > dict</ span > [< span title = "tuple" > tuple</ span > [< span title = "str" > str</ span > | None, < span title = "str" > str</ span > ], < span title = "pandas.DataFrame" > DataFrame</ span > ]</ code >
2026-06-09 02:27:54 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 15:15:52 +00:00
< p > DataFrame. Propagates < code > ValueError</ code > (via :func:< code > build_rate_targets</ code > and</ p >
2026-06-09 02:27:54 +00:00
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
2026-06-09 15:15:52 +00:00
< code >< span title = "dict" > dict</ span > [< span title = "tuple" > tuple</ span > [< span title = "str" > str</ span > | None, < span title = "str" > str</ span > ], < span title = "pandas.DataFrame" > DataFrame</ span > ]</ code >
2026-06-09 02:27:54 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 15:15:52 +00:00
< p > func:< code > load_rate_series_from_sqlite</ code > ) when inputs are empty or invalid,</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "dict" > dict</ span > [< span title = "tuple" > tuple</ span > [< span title = "str" > str</ span > | None, < span title = "str" > str</ span > ], < span title = "pandas.DataFrame" > DataFrame</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > table resolution fails, or duplicate targets are present.</ p >
2026-06-09 02:27:54 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-727" > 727</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-728" > 728</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-729" > 729</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-730" > 730</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-731" > 731</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-732" > 732</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-733" > 733</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-734" > 734</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-735" > 735</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-736" > 736</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-737" > 737</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-738" > 738</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-739" > 739</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-740" > 740</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-741" > 741</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-742" > 742</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-743" > 743</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-744" > 744</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-745" > 745</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-746" > 746</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-747" > 747</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-748" > 748</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-749" > 749</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-750" > 750</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-751" > 751</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-752" > 752</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-753" > 753</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-754" > 754</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-755" > 755</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-756" > 756</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-757" > 757</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-758" > 758</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-759" > 759</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-760" > 760</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-761" > 761</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-762" > 762</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-763" > 763</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-764" > 764</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-765" > 765</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-766" > 766</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-767" > 767</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-768" > 768</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-769" > 769</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-770" > 770</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-771" > 771</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-772" > 772</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-773" > 773</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-727" name = "__codelineno-0-727" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > load_rate_series_by_granularity</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-728" name = "__codelineno-0-728" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-729" name = "__codelineno-0-729" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-730" name = "__codelineno-0-730" ></ a > < span class = "n" > granularities</ 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 >
< a id = "__codelineno-0-731" name = "__codelineno-0-731" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-732" name = "__codelineno-0-732" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-733" name = "__codelineno-0-733" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ 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 = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-734" name = "__codelineno-0-734" ></ a > < span class = "n" > allow_missing_symbol</ 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-735" name = "__codelineno-0-735" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > ],</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-736" name = "__codelineno-0-736" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Load rate series keyed by symbol and string granularity name.</ span >
< a id = "__codelineno-0-737" name = "__codelineno-0-737" ></ a >
< a id = "__codelineno-0-738" name = "__codelineno-0-738" ></ a >< span class = "sd" > Builds targets with :func:`build_rate_targets` and loads them with</ span >
< a id = "__codelineno-0-739" name = "__codelineno-0-739" ></ a >< span class = "sd" > :func:`load_rate_series_from_sqlite`, then rekeys the result by granularity</ span >
< a id = "__codelineno-0-740" name = "__codelineno-0-740" ></ a >< span class = "sd" > name (for example ``M1``) instead of the integer timeframe to reduce</ span >
< a id = "__codelineno-0-741" name = "__codelineno-0-741" ></ a >< span class = "sd" > downstream boilerplate.</ span >
< a id = "__codelineno-0-742" name = "__codelineno-0-742" ></ a >
< a id = "__codelineno-0-743" name = "__codelineno-0-743" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-744" name = "__codelineno-0-744" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection.</ span >
< a id = "__codelineno-0-745" name = "__codelineno-0-745" ></ a >< span class = "sd" > symbols: MT5 symbol names. May be empty when ``allow_missing_symbol``.</ span >
< a id = "__codelineno-0-746" name = "__codelineno-0-746" ></ a >< span class = "sd" > granularities: MT5 timeframes as integers or names (for example ``M1``).</ span >
< a id = "__codelineno-0-747" name = "__codelineno-0-747" ></ a >< span class = "sd" > count: Number of most recent rows to load per series.</ span >
< a id = "__codelineno-0-748" name = "__codelineno-0-748" ></ a >< span class = "sd" > explicit_tables: Optional explicit table or view names matching the</ span >
< a id = "__codelineno-0-749" name = "__codelineno-0-749" ></ a >< span class = "sd" > built targets in row-major order. Required when symbols are omitted.</ span >
< a id = "__codelineno-0-750" name = "__codelineno-0-750" ></ a >< span class = "sd" > allow_missing_symbol: When True and ``symbols`` is empty, build targets</ span >
< a id = "__codelineno-0-751" name = "__codelineno-0-751" ></ a >< span class = "sd" > with ``symbol=None`` for each granularity instead of raising.</ span >
< a id = "__codelineno-0-752" name = "__codelineno-0-752" ></ a >
< a id = "__codelineno-0-753" name = "__codelineno-0-753" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-754" name = "__codelineno-0-754" ></ a >< span class = "sd" > Mapping keyed by ``(symbol | None, granularity_name)`` to each rate</ span >
< a id = "__codelineno-0-755" name = "__codelineno-0-755" ></ a >< span class = "sd" > DataFrame. Propagates ``ValueError`` (via :func:`build_rate_targets` and</ span >
< a id = "__codelineno-0-756" name = "__codelineno-0-756" ></ a >< span class = "sd" > :func:`load_rate_series_from_sqlite`) when inputs are empty or invalid,</ span >
< a id = "__codelineno-0-757" name = "__codelineno-0-757" ></ a >< span class = "sd" > table resolution fails, or duplicate targets are present.</ span >
< a id = "__codelineno-0-758" name = "__codelineno-0-758" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-759" name = "__codelineno-0-759" ></ a > < span class = "n" > targets</ span > < span class = "o" > =</ span > < span class = "n" > build_rate_targets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-760" name = "__codelineno-0-760" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-761" name = "__codelineno-0-761" ></ a > < span class = "n" > granularities</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-762" name = "__codelineno-0-762" ></ a > < span class = "n" > allow_missing_symbol</ span >< span class = "o" > =</ span >< span class = "n" > allow_missing_symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-763" name = "__codelineno-0-763" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-764" name = "__codelineno-0-764" ></ a > < span class = "n" > series</ span > < span class = "o" > =</ span > < span class = "n" > load_rate_series_from_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-765" name = "__codelineno-0-765" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-766" name = "__codelineno-0-766" ></ a > < span class = "n" > targets</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-767" name = "__codelineno-0-767" ></ a > < span class = "n" > count</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-768" name = "__codelineno-0-768" ></ a > < span class = "n" > explicit_tables</ span >< span class = "o" > =</ span >< span class = "n" > explicit_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-769" name = "__codelineno-0-769" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-770" name = "__codelineno-0-770" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-771" name = "__codelineno-0-771" ></ a > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > )):</ span > < span class = "n" > frame</ span >
< a id = "__codelineno-0-772" name = "__codelineno-0-772" ></ a > < span class = "k" > for</ span > < span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > ),</ span > < span class = "n" > frame</ span > < span class = "ow" > in</ span > < span class = "n" > series</ span >< span class = "o" > .</ span >< span class = "n" > items</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-773" name = "__codelineno-0-773" ></ a > < span class = "p" > }</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.load_rate_series_from_sqlite" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > load_rate_series_from_sqlite</ span >
< a href = "#mt5cli.history.load_rate_series_from_sqlite" 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" > load_rate_series_from_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > targets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ 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 = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "dict" > dict</ span ></ 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 = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ],</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Load multiple rate series from a SQLite database.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQLite database path or open connection.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > targets</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Rate targets to load. Each < code > (symbol, timeframe_int)</ code > pair
must be unique.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > count</ code >
</ td >
< td >
< code >< span title = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Number of most recent rows to load per series.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > explicit_tables</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ] | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional explicit table or view names matching targets.
When omitted, managed < code > rate_*</ code > compatibility views must already
exist in the database.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "dict" > dict</ span > [< span title = "tuple" > tuple</ span > [< span title = "str" > str</ span > | None, < span title = "int" > int</ span > ], < span title = "pandas.DataFrame" > DataFrame</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Mapping keyed by < code > (symbol, timeframe_int)</ code > to each rate DataFrame.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If < code > count</ code > is not positive, targets are empty, duplicate
< code > (symbol, timeframe_int)</ code > pairs are present, or table resolution
fails.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-656" > 656</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-657" > 657</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-658" > 658</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-659" > 659</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-660" > 660</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-661" > 661</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-662" > 662</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-663" > 663</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-664" > 664</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-665" > 665</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-666" > 666</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-667" > 667</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-668" > 668</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-669" > 669</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-670" > 670</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-671" > 671</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-672" > 672</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-673" > 673</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-674" > 674</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-675" > 675</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-676" > 676</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-677" > 677</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-678" > 678</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-679" > 679</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-680" > 680</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-681" > 681</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-682" > 682</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-683" > 683</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-684" > 684</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-685" > 685</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-686" > 686</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-687" > 687</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-688" > 688</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-689" > 689</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-690" > 690</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-691" > 691</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-692" > 692</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-693" > 693</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-694" > 694</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-695" > 695</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-696" > 696</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-697" > 697</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-698" > 698</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-699" > 699</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-700" > 700</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-701" > 701</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-702" > 702</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-703" > 703</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-704" > 704</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-705" > 705</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-706" > 706</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-707" > 707</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-708" > 708</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-709" > 709</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-710" > 710</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-711" > 711</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-712" > 712</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-713" > 713</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-714" > 714</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-715" > 715</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-716" > 716</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-717" > 717</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-718" > 718</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-719" > 719</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-720" > 720</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-721" > 721</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-722" > 722</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-723" > 723</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-724" > 724</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-656" name = "__codelineno-0-656" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > load_rate_series_from_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-657" name = "__codelineno-0-657" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-658" name = "__codelineno-0-658" ></ a > < span class = "n" > targets</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "n" > RateTarget</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-659" name = "__codelineno-0-659" ></ a > < span class = "n" > count</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-660" name = "__codelineno-0-660" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ 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 = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-661" name = "__codelineno-0-661" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span >< span class = "p" > ],</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-662" name = "__codelineno-0-662" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Load multiple rate series from a SQLite database.</ span >
< a id = "__codelineno-0-663" name = "__codelineno-0-663" ></ a >
< a id = "__codelineno-0-664" name = "__codelineno-0-664" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-665" name = "__codelineno-0-665" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection.</ span >
< a id = "__codelineno-0-666" name = "__codelineno-0-666" ></ a >< span class = "sd" > targets: Rate targets to load. Each ``(symbol, timeframe_int)`` pair</ span >
< a id = "__codelineno-0-667" name = "__codelineno-0-667" ></ a >< span class = "sd" > must be unique.</ span >
< a id = "__codelineno-0-668" name = "__codelineno-0-668" ></ a >< span class = "sd" > count: Number of most recent rows to load per series.</ span >
< a id = "__codelineno-0-669" name = "__codelineno-0-669" ></ a >< span class = "sd" > explicit_tables: Optional explicit table or view names matching targets.</ span >
< a id = "__codelineno-0-670" name = "__codelineno-0-670" ></ a >< span class = "sd" > When omitted, managed ``rate_*`` compatibility views must already</ span >
< a id = "__codelineno-0-671" name = "__codelineno-0-671" ></ a >< span class = "sd" > exist in the database.</ span >
< a id = "__codelineno-0-672" name = "__codelineno-0-672" ></ a >
< a id = "__codelineno-0-673" name = "__codelineno-0-673" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-674" name = "__codelineno-0-674" ></ a >< span class = "sd" > Mapping keyed by ``(symbol, timeframe_int)`` to each rate DataFrame.</ span >
< a id = "__codelineno-0-675" name = "__codelineno-0-675" ></ a >
< a id = "__codelineno-0-676" name = "__codelineno-0-676" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-677" name = "__codelineno-0-677" ></ a >< span class = "sd" > ValueError: If ``count`` is not positive, targets are empty, duplicate</ span >
< a id = "__codelineno-0-678" name = "__codelineno-0-678" ></ a >< span class = "sd" > ``(symbol, timeframe_int)`` pairs are present, or table resolution</ span >
< a id = "__codelineno-0-679" name = "__codelineno-0-679" ></ a >< span class = "sd" > fails.</ span >
< a id = "__codelineno-0-680" name = "__codelineno-0-680" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-681" name = "__codelineno-0-681" ></ a > < span class = "k" > if</ span > < span class = "n" > count</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-682" name = "__codelineno-0-682" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " count must be positive." </ span >
< a id = "__codelineno-0-683" name = "__codelineno-0-683" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-684" name = "__codelineno-0-684" ></ a > < span class = "n" > target_list</ span > < span class = "o" > =</ span > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > targets</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-685" name = "__codelineno-0-685" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > target_list</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-686" name = "__codelineno-0-686" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " At least one rate target is required." </ span >
< a id = "__codelineno-0-687" name = "__codelineno-0-687" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-688" name = "__codelineno-0-688" ></ a > < span class = "k" > if</ span > < span class = "n" > explicit_tables</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "ow" > and</ span > < span class = "nb" > any</ span >< span class = "p" > (</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "k" > for</ span > < span class = "n" > target</ span > < span class = "ow" > in</ span > < span class = "n" > target_list</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-689" name = "__codelineno-0-689" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-690" name = "__codelineno-0-690" ></ a > < span class = "s2" > " Cannot resolve a rate table for a target without a symbol; " </ span >
< a id = "__codelineno-0-691" name = "__codelineno-0-691" ></ a > < span class = "s2" > " provide explicit_tables." </ span >
< a id = "__codelineno-0-692" name = "__codelineno-0-692" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-693" name = "__codelineno-0-693" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-694" name = "__codelineno-0-694" ></ a > < span class = "n" > seen_keys</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > tuple</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ 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-695" name = "__codelineno-0-695" ></ a > < span class = "k" > for</ span > < span class = "n" > target</ span > < span class = "ow" > in</ span > < span class = "n" > target_list</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-696" name = "__codelineno-0-696" ></ a > < span class = "n" > key</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > timeframe_int</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-697" name = "__codelineno-0-697" ></ a > < span class = "k" > if</ span > < span class = "n" > key</ span > < span class = "ow" > in</ span > < span class = "n" > seen_keys</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-698" name = "__codelineno-0-698" ></ a > < span class = "n" > symbol_repr</ span > < span class = "o" > =</ span > < span class = "nb" > repr</ span >< span class = "p" > (</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-699" name = "__codelineno-0-699" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Duplicate rate target: (</ span >< span class = "si" > {</ span >< span class = "n" > symbol_repr</ span >< span class = "si" > }</ span >< span class = "s2" > , </ span >< span class = "si" > {</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > timeframe_int</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span >
< a id = "__codelineno-0-700" name = "__codelineno-0-700" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-701" name = "__codelineno-0-701" ></ a > < span class = "n" > seen_keys</ span >< span class = "o" > .</ span >< span class = "n" > add</ span >< span class = "p" > (</ span >< span class = "n" > key</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-702" name = "__codelineno-0-702" ></ a > < span class = "n" > tables</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-703" name = "__codelineno-0-703" ></ a > < span class = "n" > resolve_rate_tables</ span >< span class = "p" > (</ span >< span class = "kc" > None</ span >< span class = "p" > ,</ span > < span class = "n" > target_list</ span >< span class = "p" > ,</ span > < span class = "n" > explicit_tables</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-704" name = "__codelineno-0-704" ></ a > < span class = "k" > if</ span > < span class = "n" > explicit_tables</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-705" name = "__codelineno-0-705" ></ a > < span class = "k" > else</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-706" name = "__codelineno-0-706" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-707" name = "__codelineno-0-707" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > should_close</ span > < span class = "o" > =</ span > < span class = "n" > _open_existing_sqlite_database</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-708" name = "__codelineno-0-708" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-709" name = "__codelineno-0-709" ></ a > < span class = "n" > resolved_tables</ span > < span class = "o" > =</ span > < span class = "n" > tables</ span > < span class = "ow" > or</ span > < span class = "n" > resolve_rate_tables</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-710" name = "__codelineno-0-710" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-711" name = "__codelineno-0-711" ></ a > < span class = "n" > target_list</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-712" name = "__codelineno-0-712" ></ a > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-713" name = "__codelineno-0-713" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-714" name = "__codelineno-0-714" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-715" name = "__codelineno-0-715" ></ a > < span class = "p" > (</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > timeframe_int</ span >< span class = "p" > ):</ span > < span class = "n" > load_rate_data_from_connection</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-716" name = "__codelineno-0-716" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-717" name = "__codelineno-0-717" ></ a > < span class = "n" > table</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-718" name = "__codelineno-0-718" ></ a > < span class = "n" > count</ span >< span class = "o" > =</ span >< span class = "n" > count</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-719" name = "__codelineno-0-719" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-720" name = "__codelineno-0-720" ></ a > < span class = "k" > for</ span > < span class = "n" > target</ span >< span class = "p" > ,</ span > < span class = "n" > table</ span > < span class = "ow" > in</ span > < span class = "nb" > zip</ span >< span class = "p" > (</ span >< span class = "n" > target_list</ span >< span class = "p" > ,</ span > < span class = "n" > resolved_tables</ span >< span class = "p" > ,</ span > < span class = "n" > strict</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-721" name = "__codelineno-0-721" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-722" name = "__codelineno-0-722" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-723" name = "__codelineno-0-723" ></ a > < span class = "k" > if</ span > < span class = "n" > should_close</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-724" name = "__codelineno-0-724" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > close</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.parse_sqlite_timestamp" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > parse_sqlite_timestamp</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.parse_sqlite_timestamp" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "object" > object</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Parse a SQLite history timestamp value.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "datetime.datetime" > datetime</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Parsed timezone-aware datetime, or None when parsing fails.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-794" > 794</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-795" > 795</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-796" > 796</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-797" > 797</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-798" > 798</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-799" > 799</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-800" > 800</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-801" > 801</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-802" > 802</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-803" > 803</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-804" > 804</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-805" > 805</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-806" > 806</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-807" > 807</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-808" > 808</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-809" > 809</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-794" name = "__codelineno-0-794" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > parse_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > :</ span > < span class = "nb" > object</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > datetime</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-795" name = "__codelineno-0-795" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Parse a SQLite history timestamp value.</ span >
< a id = "__codelineno-0-796" name = "__codelineno-0-796" ></ a >
< a id = "__codelineno-0-797" name = "__codelineno-0-797" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-798" name = "__codelineno-0-798" ></ a >< span class = "sd" > Parsed timezone-aware datetime, or None when parsing fails.</ span >
< a id = "__codelineno-0-799" name = "__codelineno-0-799" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-800" name = "__codelineno-0-800" ></ a > < span class = "k" > if</ span > < span class = "n" > value</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-801" name = "__codelineno-0-801" ></ a > < span class = "k" > return</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-802" name = "__codelineno-0-802" ></ a > < 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 = "n" > datetime</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-803" name = "__codelineno-0-803" ></ a > < span class = "k" > return</ span > < span class = "n" > value</ span > < span class = "k" > if</ span > < span class = "n" > value</ span >< span class = "o" > .</ span >< span class = "n" > tzinfo</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "n" > value</ span >< span class = "o" > .</ span >< span class = "n" > replace</ span >< span class = "p" > (</ span >< span class = "n" > tzinfo</ span >< span class = "o" > =</ span >< span class = "n" > UTC</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-804" name = "__codelineno-0-804" ></ a > < 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 = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-805" name = "__codelineno-0-805" ></ a > < span class = "k" > return</ span > < span class = "n" > datetime</ span >< span class = "o" > .</ span >< span class = "n" > fromtimestamp</ span >< span class = "p" > (</ span >< span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ),</ span > < span class = "n" > tz</ span >< span class = "o" > =</ span >< span class = "n" > UTC</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-806" name = "__codelineno-0-806" ></ a > < 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" > str</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-807" name = "__codelineno-0-807" ></ a > < span class = "k" > return</ span > < span class = "n" > _parse_string_sqlite_timestamp</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-808" name = "__codelineno-0-808" ></ a > < span class = "n" > logger</ span >< span class = "o" > .</ span >< span class = "n" > warning</ span >< span class = "p" > (</ span >< span class = "s2" > " Ignoring unsupported history timestamp type: </ span >< span class = "si" > %s</ span >< span class = "s2" > " </ span >< span class = "p" > ,</ span > < span class = "nb" > type</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-809" name = "__codelineno-0-809" ></ a > < span class = "k" > return</ span > < span class = "kc" > None</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.quote_sqlite_identifier" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > quote_sqlite_identifier</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.quote_sqlite_identifier" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > quote_sqlite_identifier</ span >< span class = "p" > (</ span >< span class = "n" > identifier</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return a safely quoted SQLite identifier using double quotes.</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-56" > 56</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-57" > 57</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-58" > 58</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-56" name = "__codelineno-0-56" ></ 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" > -> </ span > < span class = "nb" > str</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-57" name = "__codelineno-0-57" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return a safely quoted SQLite identifier using double quotes.""" </ span >
< a id = "__codelineno-0-58" name = "__codelineno-0-58" ></ a > < span class = "k" > return</ span > < span class = "s1" > '"' </ 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" > '"' </ span >< span class = "p" > ,</ span > < span class = "s1" > '""' </ span >< span class = "p" > )</ span > < span class = "o" > +</ span > < span class = "s1" > '"' </ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.record_written_columns" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > record_written_columns</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.record_written_columns" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > record_written_columns</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Remember columns for datasets written during collection.</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-974" > 974</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-975" > 975</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-976" > 976</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-977" > 977</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-978" > 978</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-979" > 979</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-980" > 980</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-981" > 981</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-982" > 982</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-983" > 983</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-984" > 984</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-974" name = "__codelineno-0-974" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > record_written_columns</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-975" name = "__codelineno-0-975" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-976" name = "__codelineno-0-976" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" > Dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-977" name = "__codelineno-0-977" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-978" name = "__codelineno-0-978" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-979" name = "__codelineno-0-979" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Remember columns for datasets written during collection.""" </ span >
< a id = "__codelineno-0-980" name = "__codelineno-0-980" ></ a > < span class = "n" > columns</ span > < span class = "o" > =</ span > < span class = "nb" > set</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-981" name = "__codelineno-0-981" ></ a > < span class = "k" > if</ span > < span class = "n" > dataset</ span > < span class = "ow" > in</ span > < span class = "n" > written_columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-982" name = "__codelineno-0-982" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > [</ span >< span class = "n" > dataset</ span >< span class = "p" > ]</ span >< span class = "o" > .</ span >< span class = "n" > update</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-983" name = "__codelineno-0-983" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-984" name = "__codelineno-0-984" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > [</ span >< span class = "n" > dataset</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > columns</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.resolve_granularity_name" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > resolve_granularity_name</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.resolve_granularity_name" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return a granularity name for a timeframe integer when known.</ p >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< 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 >
2026-06-08 16:28:50 +00:00
< span class = "normal" >< a href = "#__codelineno-0-102" > 102</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-103" > 103</ a ></ span >
2026-06-08 18:29:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-104" > 104</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-105" > 105</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-106" > 106</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-107" > 107</ 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" > -> </ 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" > """ Return a granularity name for a timeframe integer when known.""" </ span >
< a id = "__codelineno-0-103" name = "__codelineno-0-103" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-104" name = "__codelineno-0-104" ></ 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-105" name = "__codelineno-0-105" ></ a > < span class = "k" > except</ span > < span class = "ne" > ValueError</ span >< span class = "p" > :</ 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 >
< a id = "__codelineno-0-107" name = "__codelineno-0-107" ></ 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" > " TIMEFRAME_" </ span >< span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.resolve_history_datasets" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > resolve_history_datasets</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.resolve_history_datasets" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > resolve_history_datasets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > datasets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Resolve configured history datasets.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "set" > set</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > All supported datasets when < code > datasets</ code > is None, otherwise the</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "set" > set</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > configured selection (which may be empty).</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-61" > 61</ a ></ span >
2026-06-08 16:28:50 +00:00
< span class = "normal" >< a href = "#__codelineno-0-62" > 62</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-63" > 63</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-64" > 64</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-65" > 65</ a ></ span >
2026-06-08 18:29:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-66" > 66</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-67" > 67</ a ></ span >
2026-06-11 14:23:26 +00:00
< span class = "normal" >< a href = "#__codelineno-0-68" > 68</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-69" > 69</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-70" > 70</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-61" name = "__codelineno-0-61" ></ 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" > -> </ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-62" name = "__codelineno-0-62" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve configured history datasets.</ span >
< a id = "__codelineno-0-63" name = "__codelineno-0-63" ></ a >
< a id = "__codelineno-0-64" name = "__codelineno-0-64" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-65" name = "__codelineno-0-65" ></ a >< span class = "sd" > All supported datasets when ``datasets`` is None, otherwise the</ span >
< a id = "__codelineno-0-66" name = "__codelineno-0-66" ></ a >< span class = "sd" > configured selection (which may be empty).</ span >
< a id = "__codelineno-0-67" name = "__codelineno-0-67" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-68" name = "__codelineno-0-68" ></ 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-69" name = "__codelineno-0-69" ></ 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-70" name = "__codelineno-0-70" ></ a > < span class = "k" > return</ span > < span class = "nb" > set</ span >< span class = "p" > (</ span >< span class = "n" > datasets</ span >< span class = "p" > )</ span >
2026-06-08 18:29:32 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.resolve_history_tick_flags" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > resolve_history_tick_flags</ span >
< a href = "#mt5cli.history.resolve_history_tick_flags" 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" > resolve_history_tick_flags</ span >< span class = "p" > (</ span >< span class = "n" > flags</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "int" > int</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Resolve tick copy flags from an integer or name.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-09 06:37:58 +00:00
< code >< span title = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Integer tick flag value.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-92" > 92</ a ></ span >
2026-06-09 06:37:58 +00:00
< 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 >
2026-06-12 16:32:35 +00:00
< 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-92" name = "__codelineno-0-92" ></ 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" > -> </ span > < span class = "nb" > int</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-93" name = "__codelineno-0-93" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve tick copy flags from an integer or name.</ span >
< a id = "__codelineno-0-94" name = "__codelineno-0-94" ></ a >
< a id = "__codelineno-0-95" name = "__codelineno-0-95" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-96" name = "__codelineno-0-96" ></ a >< span class = "sd" > Integer tick flag value.</ span >
< a id = "__codelineno-0-97" name = "__codelineno-0-97" ></ a >< span class = "sd" > """ </ 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 >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.resolve_history_timeframes" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > resolve_history_timeframes</ span >
< a href = "#mt5cli.history.resolve_history_timeframes" 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" > resolve_history_timeframes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > timeframes</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Resolve rate timeframes, deduplicating aliases for the same integer.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "list" > list</ span > [< span title = "int" > int</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Ordered list of unique timeframe integers.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-73" > 73</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-74" > 74</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-75" > 75</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-76" > 76</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-77" > 77</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-78" > 78</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-79" > 79</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-80" > 80</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-81" > 81</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-82" > 82</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-83" > 83</ a ></ span >
< 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 >
2026-06-11 14:23:26 +00:00
< span class = "normal" >< a href = "#__codelineno-0-87" > 87</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-88" > 88</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-89" > 89</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-73" name = "__codelineno-0-73" ></ 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-74" name = "__codelineno-0-74" ></ 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-75" name = "__codelineno-0-75" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > int</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-76" name = "__codelineno-0-76" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve rate timeframes, deduplicating aliases for the same integer.</ span >
< a id = "__codelineno-0-77" name = "__codelineno-0-77" ></ a >
< a id = "__codelineno-0-78" name = "__codelineno-0-78" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-79" name = "__codelineno-0-79" ></ a >< span class = "sd" > Ordered list of unique timeframe integers.</ span >
< a id = "__codelineno-0-80" name = "__codelineno-0-80" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-81" name = "__codelineno-0-81" ></ 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-82" name = "__codelineno-0-82" ></ 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-83" name = "__codelineno-0-83" ></ 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-84" name = "__codelineno-0-84" ></ 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-85" name = "__codelineno-0-85" ></ 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-86" name = "__codelineno-0-86" ></ 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-87" name = "__codelineno-0-87" ></ 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-88" name = "__codelineno-0-88" ></ 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-89" name = "__codelineno-0-89" ></ a > < span class = "k" > return</ span > < span class = "n" > resolved</ span >
2026-06-09 06:37:58 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.resolve_rate_tables" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > resolve_rate_tables</ span >
< a href = "#mt5cli.history.resolve_rate_tables" 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" > resolve_rate_tables</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > targets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ 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 = "kc" > None</ 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 = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > require_existing</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Resolve SQLite table or view names for rate targets.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQLite database path or open connection. May be None when
< code > explicit_tables</ code > is provided, or when < code > require_existing</ code > is
False and deterministic default view names are sufficient.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > targets</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< a class = "autorefs autorefs-internal" title = "RateTarget
dataclass
(mt5cli.history.RateTarget)" href = "#mt5cli.history.RateTarget" > RateTarget</ a > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Rate targets to resolve.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > explicit_tables</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ] | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional explicit table or view names. When provided,
they are used as-is and must match the number of targets.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > require_existing</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > When True, require the database and managed views to
exist for each symbol target. Ignored when < code > explicit_tables</ code > is
provided.</ p >
</ div >
</ td >
< td >
< code > False</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "list" > list</ span > [< span title = "str" > str</ span > ]</ code >
2026-06-08 18:29:32 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > Table or view names aligned with < code > targets</ code > .</ p >
2026-06-08 18:29:32 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
2026-06-09 06:37:58 +00:00
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
2026-06-08 18:29:32 +00:00
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-09 06:37:58 +00:00
< code >< span title = "ValueError" > ValueError</ span ></ code >
2026-06-08 18:29:32 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > If < code > targets</ code > is empty, < code > explicit_tables</ code > length does not
match the target count, a target without a symbol is resolved
without an explicit table, or < code > require_existing</ code > is True and the
database or a managed view is missing.</ p >
2026-06-08 18:29:32 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-572" > 572</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-573" > 573</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-574" > 574</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-575" > 575</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-576" > 576</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-577" > 577</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-578" > 578</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-579" > 579</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-580" > 580</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-581" > 581</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-582" > 582</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-583" > 583</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-584" > 584</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-585" > 585</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-586" > 586</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-587" > 587</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-588" > 588</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-589" > 589</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-590" > 590</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-591" > 591</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-592" > 592</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-593" > 593</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-594" > 594</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-595" > 595</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-596" > 596</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-597" > 597</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-598" > 598</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-599" > 599</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-600" > 600</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-601" > 601</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-602" > 602</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-603" > 603</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-604" > 604</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-605" > 605</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-606" > 606</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-607" > 607</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-608" > 608</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-609" > 609</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-610" > 610</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-611" > 611</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-612" > 612</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-613" > 613</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-614" > 614</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-615" > 615</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-616" > 616</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-617" > 617</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-618" > 618</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-619" > 619</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-620" > 620</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-621" > 621</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-622" > 622</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-623" > 623</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-624" > 624</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-625" > 625</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-626" > 626</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-627" > 627</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-628" > 628</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-629" > 629</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-630" > 630</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-631" > 631</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-632" > 632</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-633" > 633</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-634" > 634</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-635" > 635</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-636" > 636</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-637" > 637</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-638" > 638</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-639" > 639</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-640" > 640</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-641" > 641</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-642" > 642</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-643" > 643</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-644" > 644</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-645" > 645</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-646" > 646</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-647" > 647</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-648" > 648</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-649" > 649</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-650" > 650</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-651" > 651</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-652" > 652</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-653" > 653</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-572" name = "__codelineno-0-572" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > resolve_rate_tables</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-573" name = "__codelineno-0-573" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-574" name = "__codelineno-0-574" ></ a > < span class = "n" > targets</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "n" > RateTarget</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-575" name = "__codelineno-0-575" ></ a > < span class = "n" > explicit_tables</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ 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 = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-576" name = "__codelineno-0-576" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-577" name = "__codelineno-0-577" ></ a > < span class = "n" > require_existing</ 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-578" name = "__codelineno-0-578" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-579" name = "__codelineno-0-579" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve SQLite table or view names for rate targets.</ span >
< a id = "__codelineno-0-580" name = "__codelineno-0-580" ></ a >
< a id = "__codelineno-0-581" name = "__codelineno-0-581" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-582" name = "__codelineno-0-582" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection. May be None when</ span >
< a id = "__codelineno-0-583" name = "__codelineno-0-583" ></ a >< span class = "sd" > ``explicit_tables`` is provided, or when ``require_existing`` is</ span >
< a id = "__codelineno-0-584" name = "__codelineno-0-584" ></ a >< span class = "sd" > False and deterministic default view names are sufficient.</ span >
< a id = "__codelineno-0-585" name = "__codelineno-0-585" ></ a >< span class = "sd" > targets: Rate targets to resolve.</ span >
< a id = "__codelineno-0-586" name = "__codelineno-0-586" ></ a >< span class = "sd" > explicit_tables: Optional explicit table or view names. When provided,</ span >
< a id = "__codelineno-0-587" name = "__codelineno-0-587" ></ a >< span class = "sd" > they are used as-is and must match the number of targets.</ span >
< a id = "__codelineno-0-588" name = "__codelineno-0-588" ></ a >< span class = "sd" > require_existing: When True, require the database and managed views to</ span >
< a id = "__codelineno-0-589" name = "__codelineno-0-589" ></ a >< span class = "sd" > exist for each symbol target. Ignored when ``explicit_tables`` is</ span >
< a id = "__codelineno-0-590" name = "__codelineno-0-590" ></ a >< span class = "sd" > provided.</ span >
< a id = "__codelineno-0-591" name = "__codelineno-0-591" ></ a >
< a id = "__codelineno-0-592" name = "__codelineno-0-592" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-593" name = "__codelineno-0-593" ></ a >< span class = "sd" > Table or view names aligned with ``targets``.</ span >
< a id = "__codelineno-0-594" name = "__codelineno-0-594" ></ a >
< a id = "__codelineno-0-595" name = "__codelineno-0-595" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-596" name = "__codelineno-0-596" ></ a >< span class = "sd" > ValueError: If ``targets`` is empty, ``explicit_tables`` length does not</ span >
< a id = "__codelineno-0-597" name = "__codelineno-0-597" ></ a >< span class = "sd" > match the target count, a target without a symbol is resolved</ span >
< a id = "__codelineno-0-598" name = "__codelineno-0-598" ></ a >< span class = "sd" > without an explicit table, or ``require_existing`` is True and the</ span >
< a id = "__codelineno-0-599" name = "__codelineno-0-599" ></ a >< span class = "sd" > database or a managed view is missing.</ span >
< a id = "__codelineno-0-600" name = "__codelineno-0-600" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-601" name = "__codelineno-0-601" ></ a > < span class = "n" > target_list</ span > < span class = "o" > =</ span > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > targets</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-602" name = "__codelineno-0-602" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > target_list</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-603" name = "__codelineno-0-603" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " At least one rate target is required." </ span >
< a id = "__codelineno-0-604" name = "__codelineno-0-604" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-605" name = "__codelineno-0-605" ></ a > < span class = "k" > if</ span > < span class = "n" > explicit_tables</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-606" name = "__codelineno-0-606" ></ a > < span class = "n" > tables</ span > < span class = "o" > =</ span > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > explicit_tables</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-607" name = "__codelineno-0-607" ></ a > < span class = "k" > if</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > tables</ span >< span class = "p" > )</ span > < span class = "o" > !=</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > target_list</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-608" name = "__codelineno-0-608" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-609" name = "__codelineno-0-609" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Expected </ span >< span class = "si" > {</ span >< span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > target_list</ span >< span class = "p" > )</ span >< span class = "si" > }</ span >< span class = "s2" > explicit table(s) " </ span >
< a id = "__codelineno-0-610" name = "__codelineno-0-610" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " to match the targets, got </ span >< span class = "si" > {</ span >< span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > tables</ span >< span class = "p" > )</ span >< span class = "si" > }</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-611" name = "__codelineno-0-611" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-612" name = "__codelineno-0-612" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-613" name = "__codelineno-0-613" ></ a > < span class = "k" > return</ span > < span class = "n" > tables</ span >
< a id = "__codelineno-0-614" name = "__codelineno-0-614" ></ a > < span class = "k" > if</ span > < span class = "nb" > any</ span >< span class = "p" > (</ span >< span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "k" > for</ span > < span class = "n" > target</ span > < span class = "ow" > in</ span > < span class = "n" > target_list</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-615" name = "__codelineno-0-615" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-616" name = "__codelineno-0-616" ></ a > < span class = "s2" > " Cannot resolve a rate table for a target without a symbol; " </ span >
< a id = "__codelineno-0-617" name = "__codelineno-0-617" ></ a > < span class = "s2" > " provide explicit_tables." </ span >
< a id = "__codelineno-0-618" name = "__codelineno-0-618" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-619" name = "__codelineno-0-619" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-620" name = "__codelineno-0-620" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > should_close</ span > < span class = "o" > =</ span > < span class = "n" > _open_history_connection</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-621" name = "__codelineno-0-621" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-622" name = "__codelineno-0-622" ></ a > < span class = "k" > if</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-623" name = "__codelineno-0-623" ></ a > < span class = "k" > if</ span > < span class = "n" > require_existing</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-624" name = "__codelineno-0-624" ></ a > < span class = "n" > path</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-625" name = "__codelineno-0-625" ></ a > < span class = "n" > conn_or_path</ span >
< a id = "__codelineno-0-626" name = "__codelineno-0-626" ></ a > < span class = "k" > if</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > ,</ span > < span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-627" name = "__codelineno-0-627" ></ a > < span class = "k" > else</ span > < span class = "s2" > " database" </ span >
< a id = "__codelineno-0-628" name = "__codelineno-0-628" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-629" name = "__codelineno-0-629" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " SQLite database not found: </ span >< span class = "si" > {</ span >< span class = "n" > path</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-630" name = "__codelineno-0-630" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-631" name = "__codelineno-0-631" ></ a > < span class = "n" > timeframe_counts</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-632" name = "__codelineno-0-632" ></ a > < span class = "n" > existing_views</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "nb" > set</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-633" name = "__codelineno-0-633" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-634" name = "__codelineno-0-634" ></ a > < span class = "n" > timeframe_counts</ span > < span class = "o" > =</ span > < span class = "n" > _load_rates_timeframe_counts</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-635" name = "__codelineno-0-635" ></ a > < span class = "n" > existing_views</ span > < span class = "o" > =</ span > < span class = "n" > _load_existing_rate_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-636" name = "__codelineno-0-636" ></ a > < span class = "n" > resolved</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > []</ span >
< a id = "__codelineno-0-637" name = "__codelineno-0-637" ></ a > < span class = "k" > for</ span > < span class = "n" > target</ span > < span class = "ow" > in</ span > < span class = "n" > target_list</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-638" name = "__codelineno-0-638" ></ a > < span class = "n" > symbol</ span > < span class = "o" > =</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " str" </ span >< span class = "p" > ,</ span > < span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-639" name = "__codelineno-0-639" ></ a > < span class = "n" > timeframe</ span > < span class = "o" > =</ span > < span class = "n" > target</ span >< span class = "o" > .</ span >< span class = "n" > timeframe_int</ span >
< a id = "__codelineno-0-640" name = "__codelineno-0-640" ></ a > < span class = "n" > resolved</ span >< span class = "o" > .</ span >< span class = "n" > append</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-641" name = "__codelineno-0-641" ></ a > < span class = "n" > _resolve_rate_view_name_from_context</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-642" name = "__codelineno-0-642" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-643" name = "__codelineno-0-643" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-644" name = "__codelineno-0-644" ></ a > < span class = "n" > granularity_name</ span >< span class = "o" > =</ span >< span class = "n" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-645" name = "__codelineno-0-645" ></ a > < span class = "n" > timeframe_counts</ span >< span class = "o" > =</ span >< span class = "n" > timeframe_counts</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-646" name = "__codelineno-0-646" ></ a > < span class = "n" > existing_views</ span >< span class = "o" > =</ span >< span class = "n" > existing_views</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-647" name = "__codelineno-0-647" ></ a > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "n" > require_existing</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-648" name = "__codelineno-0-648" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-649" name = "__codelineno-0-649" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-650" name = "__codelineno-0-650" ></ a > < span class = "k" > return</ span > < span class = "n" > resolved</ span >
< a id = "__codelineno-0-651" name = "__codelineno-0-651" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-652" name = "__codelineno-0-652" ></ a > < span class = "k" > if</ span > < span class = "n" > should_close</ span > < span class = "ow" > and</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-653" name = "__codelineno-0-653" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > close</ span >< span class = "p" > ()</ span >
2026-06-08 18:29:32 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.history.resolve_rate_view_name" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > resolve_rate_view_name</ span >
< a href = "#mt5cli.history.resolve_rate_view_name" 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" > resolve_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
2026-06-09 06:37:58 +00:00
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
2026-06-08 18:29:32 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > granularity</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > require_existing</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Resolve the mt5cli-managed rate compatibility view name.</ p >
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
< table >
< thead >
< tr >
< th > Name</ th >
< th > Type</ th >
< th > Description</ th >
< th > Default</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
2026-06-09 06:37:58 +00:00
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a > | None</ code >
2026-06-08 18:29:32 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > SQLite database path or open connection. When None or a
non-existing path and < code > require_existing</ code > is False, the deterministic
default view name is returned without creating a database file.</ p >
2026-06-08 18:29:32 +00:00
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > symbol</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Symbol stored in the normalized < code > rates</ code > table.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > granularity</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Timeframe name (for example < code > M1</ code > ) or integer string.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > require_existing</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > When True, require the database and a managed view to exist.</ p >
</ div >
</ td >
< td >
< code > False</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > View name such as < code > rate_EURUSD__1</ code > or < code > rate_EURUSD__M1_1</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If < code > require_existing</ code > is True and the database or view is missing.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-400" > 400</ a ></ span >
2026-06-09 02:27:54 +00:00
< span class = "normal" >< a href = "#__codelineno-0-401" > 401</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-402" > 402</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-403" > 403</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-404" > 404</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-405" > 405</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-406" > 406</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-407" > 407</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-408" > 408</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-409" > 409</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-410" > 410</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-411" > 411</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-412" > 412</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-413" > 413</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-414" > 414</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-415" > 415</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-416" > 416</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-417" > 417</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-418" > 418</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-419" > 419</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-420" > 420</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-421" > 421</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-422" > 422</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-423" > 423</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-424" > 424</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-425" > 425</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-426" > 426</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-427" > 427</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-428" > 428</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-429" > 429</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-430" > 430</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-431" > 431</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-432" > 432</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-433" > 433</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-434" > 434</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-435" > 435</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-436" > 436</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-437" > 437</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-438" > 438</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-439" > 439</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-440" > 440</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-441" > 441</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-442" > 442</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-443" > 443</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-444" > 444</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-445" > 445</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-446" > 446</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-447" > 447</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-448" > 448</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-449" > 449</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-450" > 450</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-451" > 451</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-452" > 452</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-400" name = "__codelineno-0-400" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > resolve_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-401" name = "__codelineno-0-401" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-402" name = "__codelineno-0-402" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-403" name = "__codelineno-0-403" ></ a > < span class = "n" > granularity</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-404" name = "__codelineno-0-404" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-405" name = "__codelineno-0-405" ></ a > < span class = "n" > require_existing</ 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-406" name = "__codelineno-0-406" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > str</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-407" name = "__codelineno-0-407" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve the mt5cli-managed rate compatibility view name.</ span >
< a id = "__codelineno-0-408" name = "__codelineno-0-408" ></ a >
< a id = "__codelineno-0-409" name = "__codelineno-0-409" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-410" name = "__codelineno-0-410" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection. When None or a</ span >
< a id = "__codelineno-0-411" name = "__codelineno-0-411" ></ a >< span class = "sd" > non-existing path and ``require_existing`` is False, the deterministic</ span >
< a id = "__codelineno-0-412" name = "__codelineno-0-412" ></ a >< span class = "sd" > default view name is returned without creating a database file.</ span >
< a id = "__codelineno-0-413" name = "__codelineno-0-413" ></ a >< span class = "sd" > symbol: Symbol stored in the normalized ``rates`` table.</ span >
< a id = "__codelineno-0-414" name = "__codelineno-0-414" ></ a >< span class = "sd" > granularity: Timeframe name (for example ``M1``) or integer string.</ span >
< a id = "__codelineno-0-415" name = "__codelineno-0-415" ></ a >< span class = "sd" > require_existing: When True, require the database and a managed view to exist.</ span >
< a id = "__codelineno-0-416" name = "__codelineno-0-416" ></ a >
< a id = "__codelineno-0-417" name = "__codelineno-0-417" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-418" name = "__codelineno-0-418" ></ a >< span class = "sd" > View name such as ``rate_EURUSD__1`` or ``rate_EURUSD__M1_1``.</ span >
< a id = "__codelineno-0-419" name = "__codelineno-0-419" ></ a >
< a id = "__codelineno-0-420" name = "__codelineno-0-420" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-421" name = "__codelineno-0-421" ></ a >< span class = "sd" > ValueError: If ``require_existing`` is True and the database or view is missing.</ span >
< a id = "__codelineno-0-422" name = "__codelineno-0-422" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-423" name = "__codelineno-0-423" ></ a > < span class = "n" > timeframe</ span > < span class = "o" > =</ span > < span class = "n" > parse_timeframe</ span >< span class = "p" > (</ span >< span class = "n" > granularity</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-424" name = "__codelineno-0-424" ></ a > < span class = "n" > granularity_name</ span > < span class = "o" > =</ span > < span class = "n" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-425" name = "__codelineno-0-425" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > should_close</ span > < span class = "o" > =</ span > < span class = "n" > _open_history_connection</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-426" name = "__codelineno-0-426" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-427" name = "__codelineno-0-427" ></ a > < span class = "k" > if</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-428" name = "__codelineno-0-428" ></ a > < span class = "k" > if</ span > < span class = "n" > require_existing</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-429" name = "__codelineno-0-429" ></ a > < span class = "n" > path</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-430" name = "__codelineno-0-430" ></ a > < span class = "n" > conn_or_path</ span >
< a id = "__codelineno-0-431" name = "__codelineno-0-431" ></ a > < span class = "k" > if</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > ,</ span > < span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-432" name = "__codelineno-0-432" ></ a > < span class = "k" > else</ span > < span class = "s2" > " database" </ span >
< a id = "__codelineno-0-433" name = "__codelineno-0-433" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-434" name = "__codelineno-0-434" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " SQLite database not found: </ span >< span class = "si" > {</ span >< span class = "n" > path</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-435" name = "__codelineno-0-435" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-436" name = "__codelineno-0-436" ></ a > < span class = "k" > return</ span > < span class = "n" > build_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-437" name = "__codelineno-0-437" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-438" name = "__codelineno-0-438" ></ a > < span class = "n" > granularity</ span >< span class = "o" > =</ span >< span class = "n" > granularity_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-439" name = "__codelineno-0-439" ></ a > < span class = "n" > granularity_count</ span >< span class = "o" > =</ span >< span class = "mi" > 1</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-440" name = "__codelineno-0-440" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-441" name = "__codelineno-0-441" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-442" name = "__codelineno-0-442" ></ a > < span class = "k" > return</ span > < span class = "n" > _resolve_rate_view_name_from_context</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-443" name = "__codelineno-0-443" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-444" name = "__codelineno-0-444" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-445" name = "__codelineno-0-445" ></ a > < span class = "n" > granularity_name</ span >< span class = "o" > =</ span >< span class = "n" > granularity_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-446" name = "__codelineno-0-446" ></ a > < span class = "n" > timeframe_counts</ span >< span class = "o" > =</ span >< span class = "n" > _load_rates_timeframe_counts</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-447" name = "__codelineno-0-447" ></ a > < span class = "n" > existing_views</ span >< span class = "o" > =</ span >< span class = "n" > _load_existing_rate_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-448" name = "__codelineno-0-448" ></ a > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "n" > require_existing</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-449" name = "__codelineno-0-449" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-450" name = "__codelineno-0-450" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-451" name = "__codelineno-0-451" ></ a > < span class = "k" > if</ span > < span class = "n" > should_close</ span > < span class = "ow" > and</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-452" name = "__codelineno-0-452" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > close</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 18:29:32 +00:00
< h3 id = "mt5cli.history.resolve_rate_view_names" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > resolve_rate_view_names</ span >
2026-06-08 16:28:50 +00:00
2026-06-08 18:29:32 +00:00
< a href = "#mt5cli.history.resolve_rate_view_names" 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" > resolve_rate_view_names</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
2026-06-09 06:37:58 +00:00
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
2026-06-08 18:29:32 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > granularities</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > require_existing</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-08 18:29:32 +00:00
< p > Resolve rate compatibility view names for symbol and granularity pairs.</ p >
2026-06-08 16:28:50 +00:00
2026-06-08 18:29:32 +00:00
< p >< span class = "doc-section-title" > Parameters:</ span ></ p >
2026-06-08 16:28:50 +00:00
< table >
< thead >
< tr >
2026-06-08 18:29:32 +00:00
< th > Name</ th >
2026-06-08 16:28:50 +00:00
< th > Type</ th >
< th > Description</ th >
2026-06-08 18:29:32 +00:00
< th > Default</ th >
2026-06-08 16:28:50 +00:00
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-08 18:29:32 +00:00
< code > conn_or_path</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "SqliteConnOrPath
module-attribute
2026-06-09 06:37:58 +00:00
(mt5cli.history.SqliteConnOrPath)" href = "#mt5cli.history.SqliteConnOrPath" > SqliteConnOrPath</ a > | None</ code >
2026-06-08 16:28:50 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-09 06:37:58 +00:00
< p > SQLite database path or open connection. When None or a
non-existing path and < code > require_existing</ code > is False, deterministic
default view names are returned without creating a database file.</ p >
2026-06-08 18:29:32 +00:00
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > symbols</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Symbols stored in the normalized < code > rates</ code > table.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > granularities</ code >
</ td >
< td >
< code >< span title = "collections.abc.Sequence" > Sequence</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Timeframe names (for example < code > M1</ code > ) or integer strings.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > require_existing</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > When True, require the database and managed views to exist.</ p >
2026-06-08 16:28:50 +00:00
</ div >
</ td >
2026-06-08 18:29:32 +00:00
< td >
< code > False</ code >
</ td >
2026-06-08 16:28:50 +00:00
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-08 18:29:32 +00:00
< code >< span title = "list" > list</ span > [< span title = "str" > str</ span > ]</ code >
2026-06-08 16:28:50 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-08 18:29:32 +00:00
< p > View names in row-major order: every < code > granularity</ code > for the first</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< span title = "list" > list</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > symbol, then every granularity for the next symbol, and so on.</ p >
2026-06-08 16:28:50 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-455" > 455</ a ></ span >
2026-06-09 02:27:54 +00:00
< span class = "normal" >< a href = "#__codelineno-0-456" > 456</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-457" > 457</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-458" > 458</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-459" > 459</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-460" > 460</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-461" > 461</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-462" > 462</ a ></ span >
< 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 >
< span class = "normal" >< a href = "#__codelineno-0-468" > 468</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-469" > 469</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-470" > 470</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-471" > 471</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-472" > 472</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-473" > 473</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-474" > 474</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-475" > 475</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-476" > 476</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-477" > 477</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-478" > 478</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-479" > 479</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-480" > 480</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-481" > 481</ a ></ span >
2026-06-09 06:37:58 +00:00
< span class = "normal" >< a href = "#__codelineno-0-482" > 482</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-483" > 483</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-484" > 484</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-485" > 485</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-486" > 486</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-487" > 487</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-488" > 488</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-489" > 489</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-490" > 490</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-491" > 491</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-492" > 492</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-493" > 493</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-494" > 494</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-495" > 495</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-496" > 496</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-497" > 497</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-498" > 498</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-499" > 499</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-500" > 500</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-501" > 501</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-502" > 502</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-503" > 503</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-504" > 504</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-505" > 505</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-506" > 506</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-507" > 507</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-508" > 508</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-455" name = "__codelineno-0-455" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > resolve_rate_view_names</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-456" name = "__codelineno-0-456" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > :</ span > < span class = "n" > SqliteConnOrPath</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-457" name = "__codelineno-0-457" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-458" name = "__codelineno-0-458" ></ a > < span class = "n" > granularities</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-459" name = "__codelineno-0-459" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-460" name = "__codelineno-0-460" ></ a > < span class = "n" > require_existing</ 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-461" name = "__codelineno-0-461" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-462" name = "__codelineno-0-462" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Resolve rate compatibility view names for symbol and granularity pairs.</ span >
< a id = "__codelineno-0-463" name = "__codelineno-0-463" ></ a >
< a id = "__codelineno-0-464" name = "__codelineno-0-464" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-465" name = "__codelineno-0-465" ></ a >< span class = "sd" > conn_or_path: SQLite database path or open connection. When None or a</ span >
< a id = "__codelineno-0-466" name = "__codelineno-0-466" ></ a >< span class = "sd" > non-existing path and ``require_existing`` is False, deterministic</ span >
< a id = "__codelineno-0-467" name = "__codelineno-0-467" ></ a >< span class = "sd" > default view names are returned without creating a database file.</ span >
< a id = "__codelineno-0-468" name = "__codelineno-0-468" ></ a >< span class = "sd" > symbols: Symbols stored in the normalized ``rates`` table.</ span >
< a id = "__codelineno-0-469" name = "__codelineno-0-469" ></ a >< span class = "sd" > granularities: Timeframe names (for example ``M1``) or integer strings.</ span >
< a id = "__codelineno-0-470" name = "__codelineno-0-470" ></ a >< span class = "sd" > require_existing: When True, require the database and managed views to exist.</ span >
< a id = "__codelineno-0-471" name = "__codelineno-0-471" ></ a >
< a id = "__codelineno-0-472" name = "__codelineno-0-472" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-473" name = "__codelineno-0-473" ></ a >< span class = "sd" > View names in row-major order: every ``granularity`` for the first</ span >
< a id = "__codelineno-0-474" name = "__codelineno-0-474" ></ a >< span class = "sd" > symbol, then every granularity for the next symbol, and so on.</ span >
< a id = "__codelineno-0-475" name = "__codelineno-0-475" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-476" name = "__codelineno-0-476" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > should_close</ span > < span class = "o" > =</ span > < span class = "n" > _open_history_connection</ span >< span class = "p" > (</ span >< span class = "n" > conn_or_path</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-477" name = "__codelineno-0-477" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-478" name = "__codelineno-0-478" ></ a > < span class = "k" > if</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-479" name = "__codelineno-0-479" ></ a > < span class = "k" > return</ span > < span class = "p" > [</ span >
< a id = "__codelineno-0-480" name = "__codelineno-0-480" ></ a > < span class = "n" > resolve_rate_view_name</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-481" name = "__codelineno-0-481" ></ a > < span class = "n" > conn_or_path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-482" name = "__codelineno-0-482" ></ a > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-483" name = "__codelineno-0-483" ></ a > < span class = "n" > granularity</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-484" name = "__codelineno-0-484" ></ a > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "n" > require_existing</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-485" name = "__codelineno-0-485" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-486" name = "__codelineno-0-486" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >
< a id = "__codelineno-0-487" name = "__codelineno-0-487" ></ a > < span class = "k" > for</ span > < span class = "n" > granularity</ span > < span class = "ow" > in</ span > < span class = "n" > granularities</ span >
< a id = "__codelineno-0-488" name = "__codelineno-0-488" ></ a > < span class = "p" > ]</ span >
< a id = "__codelineno-0-489" name = "__codelineno-0-489" ></ a > < span class = "n" > timeframe_counts</ span > < span class = "o" > =</ span > < span class = "n" > _load_rates_timeframe_counts</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-490" name = "__codelineno-0-490" ></ a > < span class = "n" > existing_views</ span > < span class = "o" > =</ span > < span class = "n" > _load_existing_rate_views</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-491" name = "__codelineno-0-491" ></ a > < span class = "n" > resolved</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > []</ span >
< a id = "__codelineno-0-492" name = "__codelineno-0-492" ></ a > < span class = "k" > for</ span > < span class = "n" > symbol</ span > < span class = "ow" > in</ span > < span class = "n" > symbols</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-493" name = "__codelineno-0-493" ></ a > < span class = "k" > for</ span > < span class = "n" > granularity</ span > < span class = "ow" > in</ span > < span class = "n" > granularities</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-494" name = "__codelineno-0-494" ></ a > < span class = "n" > timeframe</ span > < span class = "o" > =</ span > < span class = "n" > parse_timeframe</ span >< span class = "p" > (</ span >< span class = "n" > granularity</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-495" name = "__codelineno-0-495" ></ a > < span class = "n" > resolved</ span >< span class = "o" > .</ span >< span class = "n" > append</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-496" name = "__codelineno-0-496" ></ a > < span class = "n" > _resolve_rate_view_name_from_context</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-497" name = "__codelineno-0-497" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-498" name = "__codelineno-0-498" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-499" name = "__codelineno-0-499" ></ a > < span class = "n" > granularity_name</ span >< span class = "o" > =</ span >< span class = "n" > resolve_granularity_name</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-500" name = "__codelineno-0-500" ></ a > < span class = "n" > timeframe_counts</ span >< span class = "o" > =</ span >< span class = "n" > timeframe_counts</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-501" name = "__codelineno-0-501" ></ a > < span class = "n" > existing_views</ span >< span class = "o" > =</ span >< span class = "n" > existing_views</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-502" name = "__codelineno-0-502" ></ a > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "n" > require_existing</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-503" name = "__codelineno-0-503" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-504" name = "__codelineno-0-504" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-505" name = "__codelineno-0-505" ></ a > < span class = "k" > return</ span > < span class = "n" > resolved</ span >
< a id = "__codelineno-0-506" name = "__codelineno-0-506" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-507" name = "__codelineno-0-507" ></ a > < span class = "k" > if</ span > < span class = "n" > should_close</ span > < span class = "ow" > and</ span > < span class = "n" > conn</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-508" name = "__codelineno-0-508" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > close</ span >< span class = "p" > ()</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_collected_datasets" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_collected_datasets</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_collected_datasets" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_collected_datasets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5DataClient" > Mt5DataClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
2026-06-09 15:15:52 +00:00
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > datasets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > flags</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]]]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Collect selected datasets and stream each symbol frame into SQLite.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "tuple" > tuple</ span > [< span title = "set" > set</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > ], < span title = "dict" > dict</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > , < span title = "set" > set</ span > [< span title = "str" > str</ span > ]]]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Written datasets and their columns.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1838" > 1838</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1839" > 1839</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1840" > 1840</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1841" > 1841</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1842" > 1842</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1843" > 1843</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1844" > 1844</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1845" > 1845</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1846" > 1846</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1847" > 1847</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1848" > 1848</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1849" > 1849</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1850" > 1850</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1851" > 1851</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1852" > 1852</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1853" > 1853</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1854" > 1854</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1855" > 1855</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1856" > 1856</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1857" > 1857</ a ></ span >
2026-06-12 14:15:10 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1858" > 1858</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1859" > 1859</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1860" > 1860</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1861" > 1861</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1862" > 1862</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1863" > 1863</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1864" > 1864</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1865" > 1865</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1866" > 1866</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1867" > 1867</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1868" > 1868</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1869" > 1869</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1870" > 1870</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1871" > 1871</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1872" > 1872</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1873" > 1873</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1874" > 1874</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1875" > 1875</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1876" > 1876</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1877" > 1877</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1878" > 1878</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1879" > 1879</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1880" > 1880</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1881" > 1881</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1882" > 1882</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1883" > 1883</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1884" > 1884</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1885" > 1885</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1886" > 1886</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1887" > 1887</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1888" > 1888</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1889" > 1889</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1890" > 1890</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1891" > 1891</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1892" > 1892</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1893" > 1893</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1894" > 1894</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1895" > 1895</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1896" > 1896</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1897" > 1897</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1898" > 1898</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1899" > 1899</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1900" > 1900</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1901" > 1901</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1902" > 1902</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1838" name = "__codelineno-0-1838" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_collected_datasets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1839" name = "__codelineno-0-1839" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1840" name = "__codelineno-0-1840" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5DataClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1841" name = "__codelineno-0-1841" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1842" name = "__codelineno-0-1842" ></ a > < span class = "n" > datasets</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1843" name = "__codelineno-0-1843" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1844" name = "__codelineno-0-1844" ></ a > < span class = "n" > flags</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1845" name = "__codelineno-0-1845" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1846" name = "__codelineno-0-1846" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1847" name = "__codelineno-0-1847" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1848" name = "__codelineno-0-1848" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > tuple</ 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 = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]]]:</ span >
< a id = "__codelineno-0-1849" name = "__codelineno-0-1849" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Collect selected datasets and stream each symbol frame into SQLite.</ span >
< a id = "__codelineno-0-1850" name = "__codelineno-0-1850" ></ a >
< a id = "__codelineno-0-1851" name = "__codelineno-0-1851" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1852" name = "__codelineno-0-1852" ></ a >< span class = "sd" > Written datasets and their columns.</ span >
< a id = "__codelineno-0-1853" name = "__codelineno-0-1853" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1854" name = "__codelineno-0-1854" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {}</ span >
< a id = "__codelineno-0-1855" name = "__codelineno-0-1855" ></ a > < span class = "n" > written_tables</ 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 = "nb" > set</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1856" name = "__codelineno-0-1856" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span > < span class = "ow" > in</ span > < span class = "n" > datasets</ span > < span class = "ow" > and</ span > < span class = "n" > write_rates_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1857" name = "__codelineno-0-1857" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1858" name = "__codelineno-0-1858" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1859" name = "__codelineno-0-1859" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1860" name = "__codelineno-0-1860" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1861" name = "__codelineno-0-1861" ></ a > < span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1862" name = "__codelineno-0-1862" ></ a > < span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1863" name = "__codelineno-0-1863" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1864" name = "__codelineno-0-1864" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1865" name = "__codelineno-0-1865" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1866" name = "__codelineno-0-1866" ></ a > < span class = "n" > written_tables</ span >< span class = "o" > .</ span >< span class = "n" > add</ 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-0-1867" name = "__codelineno-0-1867" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > ticks</ span > < span class = "ow" > in</ span > < span class = "n" > datasets</ span > < span class = "ow" > and</ span > < span class = "n" > write_ticks_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1868" name = "__codelineno-0-1868" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1869" name = "__codelineno-0-1869" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1870" name = "__codelineno-0-1870" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1871" name = "__codelineno-0-1871" ></ a > < span class = "n" > flags</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1872" name = "__codelineno-0-1872" ></ a > < span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1873" name = "__codelineno-0-1873" ></ a > < span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1874" name = "__codelineno-0-1874" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1875" name = "__codelineno-0-1875" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1876" name = "__codelineno-0-1876" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1877" name = "__codelineno-0-1877" ></ a > < span class = "n" > written_tables</ span >< span class = "o" > .</ span >< span class = "n" > add</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > ticks</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1878" name = "__codelineno-0-1878" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_orders</ span > < span class = "ow" > in</ span > < span class = "n" > datasets</ span > < span class = "ow" > and</ span > < span class = "n" > write_history_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1879" name = "__codelineno-0-1879" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1880" name = "__codelineno-0-1880" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > history_orders_get_as_df</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1881" name = "__codelineno-0-1881" ></ a > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_orders</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1882" name = "__codelineno-0-1882" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1883" name = "__codelineno-0-1883" ></ a > < span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1884" name = "__codelineno-0-1884" ></ a > < span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1885" name = "__codelineno-0-1885" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1886" name = "__codelineno-0-1886" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1887" name = "__codelineno-0-1887" ></ a > < span class = "n" > include_account_events</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1888" name = "__codelineno-0-1888" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1889" name = "__codelineno-0-1889" ></ a > < span class = "n" > written_tables</ span >< span class = "o" > .</ span >< span class = "n" > add</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_orders</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1890" name = "__codelineno-0-1890" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span > < span class = "ow" > in</ span > < span class = "n" > datasets</ span > < span class = "ow" > and</ span > < span class = "n" > write_history_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1891" name = "__codelineno-0-1891" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1892" name = "__codelineno-0-1892" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > history_deals_get_as_df</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1893" name = "__codelineno-0-1893" ></ a > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1894" name = "__codelineno-0-1894" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1895" name = "__codelineno-0-1895" ></ a > < span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1896" name = "__codelineno-0-1896" ></ a > < span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1897" name = "__codelineno-0-1897" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1898" name = "__codelineno-0-1898" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1899" name = "__codelineno-0-1899" ></ a > < span class = "n" > include_account_events</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1900" name = "__codelineno-0-1900" ></ a > < span class = "p" > ):</ span >
< a id = "__codelineno-0-1901" name = "__codelineno-0-1901" ></ a > < span class = "n" > written_tables</ span >< span class = "o" > .</ span >< span class = "n" > add</ span >< span class = "p" > (</ span >< span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1902" name = "__codelineno-0-1902" ></ a > < span class = "k" > return</ span > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span > < span class = "n" > written_columns</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_history_dataset" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_history_dataset</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_history_dataset" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_history_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > fetch</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Callable" > Callable</ span ></ span >< span class = "p" > [</ span >< span class = "o" > ...</ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Stream a history dataset into SQLite.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the target table was written.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1455" > 1455</ a ></ span >
2026-06-12 14:15:10 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1456" > 1456</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1457" > 1457</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1458" > 1458</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1459" > 1459</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1460" > 1460</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1461" > 1461</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1462" > 1462</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1463" > 1463</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1464" > 1464</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1465" > 1465</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1466" > 1466</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1467" > 1467</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1468" > 1468</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1469" > 1469</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1470" > 1470</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1471" > 1471</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1472" > 1472</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1473" > 1473</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1474" > 1474</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1475" > 1475</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1476" > 1476</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1477" > 1477</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1478" > 1478</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1479" > 1479</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1480" > 1480</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1481" > 1481</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1482" > 1482</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1483" > 1483</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1484" > 1484</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1485" > 1485</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1486" > 1486</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1487" > 1487</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1488" > 1488</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1489" > 1489</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1490" > 1490</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1491" > 1491</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1492" > 1492</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1493" > 1493</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1494" > 1494</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1495" > 1495</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1496" > 1496</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1497" > 1497</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1498" > 1498</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1499" > 1499</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1500" > 1500</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1501" > 1501</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1502" > 1502</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1455" name = "__codelineno-0-1455" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_history_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1456" name = "__codelineno-0-1456" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1457" name = "__codelineno-0-1457" ></ a > < span class = "n" > fetch</ span >< span class = "p" > :</ span > < span class = "n" > Callable</ span >< span class = "p" > [</ span >< span class = "o" > ...</ span >< span class = "p" > ,</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1458" name = "__codelineno-0-1458" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" > Dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1459" name = "__codelineno-0-1459" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1460" name = "__codelineno-0-1460" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1461" name = "__codelineno-0-1461" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1462" name = "__codelineno-0-1462" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1463" name = "__codelineno-0-1463" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1464" name = "__codelineno-0-1464" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1465" name = "__codelineno-0-1465" ></ a > < span class = "n" > include_account_events</ 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-1466" name = "__codelineno-0-1466" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1467" name = "__codelineno-0-1467" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Stream a history dataset into SQLite.</ span >
< a id = "__codelineno-0-1468" name = "__codelineno-0-1468" ></ a >
< a id = "__codelineno-0-1469" name = "__codelineno-0-1469" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1470" name = "__codelineno-0-1470" ></ a >< span class = "sd" > True if the target table was written.</ span >
< a id = "__codelineno-0-1471" name = "__codelineno-0-1471" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1472" name = "__codelineno-0-1472" ></ a > < span class = "n" > table_exists</ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >
< a id = "__codelineno-0-1473" name = "__codelineno-0-1473" ></ a > < span class = "k" > if</ span > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1474" name = "__codelineno-0-1474" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > filter_trade_history_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1475" name = "__codelineno-0-1475" ></ a > < span class = "n" > fetch</ span >< span class = "p" > (</ span >< span class = "n" > date_from</ span >< span class = "o" > =</ span >< span class = "n" > date_from</ span >< span class = "p" > ,</ span > < span class = "n" > date_to</ span >< span class = "o" > =</ span >< span class = "n" > date_to</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-1476" name = "__codelineno-0-1476" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1477" name = "__codelineno-0-1477" ></ a > < span class = "n" > include_account_events</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1478" name = "__codelineno-0-1478" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1479" name = "__codelineno-0-1479" ></ a > < span class = "k" > return</ span > < span class = "n" > write_streamed_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1480" name = "__codelineno-0-1480" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1481" name = "__codelineno-0-1481" ></ a > < span class = "n" > frame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1482" name = "__codelineno-0-1482" ></ a > < span class = "n" > dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1483" name = "__codelineno-0-1483" ></ a > < span class = "n" > table_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1484" name = "__codelineno-0-1484" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1485" name = "__codelineno-0-1485" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1486" name = "__codelineno-0-1486" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1487" name = "__codelineno-0-1487" ></ a >
< a id = "__codelineno-0-1488" name = "__codelineno-0-1488" ></ a > < span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > _fetch_history_frame</ span >< span class = "p" > (</ span >< span class = "n" > sym</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1489" name = "__codelineno-0-1489" ></ a > < span class = "k" > return</ span > < span class = "n" > filter_trade_history_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1490" name = "__codelineno-0-1490" ></ a > < span class = "n" > fetch</ span >< span class = "p" > (</ span >< span class = "n" > date_from</ span >< span class = "o" > =</ span >< span class = "n" > date_from</ span >< span class = "p" > ,</ span > < span class = "n" > date_to</ span >< span class = "o" > =</ span >< span class = "n" > date_to</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > sym</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-1491" name = "__codelineno-0-1491" ></ a > < span class = "p" > [</ span >< span class = "n" > sym</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1492" name = "__codelineno-0-1492" ></ a > < span class = "n" > include_account_events</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1493" name = "__codelineno-0-1493" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1494" name = "__codelineno-0-1494" ></ a >
< a id = "__codelineno-0-1495" name = "__codelineno-0-1495" ></ a > < span class = "k" > return</ span > < span class = "n" > _stream_symbol_frames</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1496" name = "__codelineno-0-1496" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1497" name = "__codelineno-0-1497" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1498" name = "__codelineno-0-1498" ></ a > < span class = "n" > dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1499" name = "__codelineno-0-1499" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1500" name = "__codelineno-0-1500" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1501" name = "__codelineno-0-1501" ></ a > < span class = "n" > _fetch_history_frame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1502" name = "__codelineno-0-1502" ></ a > < span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_incremental_datasets" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_incremental_datasets</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_incremental_datasets" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_incremental_datasets</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5DataClient" > Mt5DataClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > resolved_timeframes</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > resolved_tick_flags</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > end_date</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "n" > deduplicate</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "n" > create_rate_views</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > < span class = "n" > with_views</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ],</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]]]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Append selected datasets incrementally and refresh indexes and views.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "tuple" > tuple</ span > [< span title = "set" > set</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > ], < span title = "dict" > dict</ span > [< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a > , < span title = "set" > set</ span > [< span title = "str" > str</ span > ]]]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Written datasets and their columns.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1755" > 1755</ a ></ span >
2026-06-09 15:15:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1756" > 1756</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1757" > 1757</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1758" > 1758</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1759" > 1759</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1760" > 1760</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1761" > 1761</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1762" > 1762</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1763" > 1763</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1764" > 1764</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1765" > 1765</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1766" > 1766</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1767" > 1767</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1768" > 1768</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1769" > 1769</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1770" > 1770</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1771" > 1771</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1772" > 1772</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1773" > 1773</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1774" > 1774</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1775" > 1775</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1776" > 1776</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1777" > 1777</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1778" > 1778</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1779" > 1779</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1780" > 1780</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1781" > 1781</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1782" > 1782</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1783" > 1783</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1784" > 1784</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1785" > 1785</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1786" > 1786</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1787" > 1787</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1788" > 1788</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1789" > 1789</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1790" > 1790</ a ></ span >
2026-06-12 14:15:10 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1791" > 1791</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1792" > 1792</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1793" > 1793</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1794" > 1794</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1795" > 1795</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1796" > 1796</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1797" > 1797</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1798" > 1798</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1799" > 1799</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1800" > 1800</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1801" > 1801</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1802" > 1802</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1803" > 1803</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1804" > 1804</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1805" > 1805</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1806" > 1806</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1807" > 1807</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1808" > 1808</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1809" > 1809</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1810" > 1810</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1811" > 1811</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1812" > 1812</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1813" > 1813</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1814" > 1814</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1815" > 1815</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1816" > 1816</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1817" > 1817</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1818" > 1818</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1819" > 1819</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1820" > 1820</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1821" > 1821</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1822" > 1822</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1823" > 1823</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1824" > 1824</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1825" > 1825</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1826" > 1826</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1827" > 1827</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1828" > 1828</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1829" > 1829</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1830" > 1830</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1831" > 1831</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1832" > 1832</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1833" > 1833</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1834" > 1834</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1835" > 1835</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1755" name = "__codelineno-0-1755" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_incremental_datasets</ span >< span class = "p" > (</ span > < span class = "c1" > # noqa: PLR0913</ span >
< a id = "__codelineno-0-1756" name = "__codelineno-0-1756" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1757" name = "__codelineno-0-1757" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5DataClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1758" name = "__codelineno-0-1758" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1759" name = "__codelineno-0-1759" ></ a > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1760" name = "__codelineno-0-1760" ></ a > < span class = "n" > resolved_timeframes</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > int</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1761" name = "__codelineno-0-1761" ></ a > < span class = "n" > resolved_tick_flags</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1762" name = "__codelineno-0-1762" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1763" name = "__codelineno-0-1763" ></ a > < span class = "n" > end_date</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1764" name = "__codelineno-0-1764" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1765" name = "__codelineno-0-1765" ></ a > < span class = "n" > deduplicate</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1766" name = "__codelineno-0-1766" ></ a > < span class = "n" > create_rate_views</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1767" name = "__codelineno-0-1767" ></ a > < span class = "n" > with_views</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1768" name = "__codelineno-0-1768" ></ a > < span class = "n" > include_account_events</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1769" name = "__codelineno-0-1769" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > tuple</ 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 = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]]]:</ span >
< a id = "__codelineno-0-1770" name = "__codelineno-0-1770" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Append selected datasets incrementally and refresh indexes and views.</ span >
< a id = "__codelineno-0-1771" name = "__codelineno-0-1771" ></ a >
< a id = "__codelineno-0-1772" name = "__codelineno-0-1772" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1773" name = "__codelineno-0-1773" ></ a >< span class = "sd" > Written datasets and their columns.</ span >
< a id = "__codelineno-0-1774" name = "__codelineno-0-1774" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1775" name = "__codelineno-0-1775" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {}</ span >
< a id = "__codelineno-0-1776" name = "__codelineno-0-1776" ></ a > < span class = "n" > written_tables</ 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 = "nb" > set</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-1777" name = "__codelineno-0-1777" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > DedupScope</ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {}</ span >
< a id = "__codelineno-0-1778" name = "__codelineno-0-1778" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span > < span class = "ow" > in</ span > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1779" name = "__codelineno-0-1779" ></ a > < span class = "n" > _write_incremental_rates</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1780" name = "__codelineno-0-1780" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1781" name = "__codelineno-0-1781" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1782" name = "__codelineno-0-1782" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1783" name = "__codelineno-0-1783" ></ a > < span class = "n" > resolved_timeframes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1784" name = "__codelineno-0-1784" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1785" name = "__codelineno-0-1785" ></ a > < span class = "n" > end_date</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1786" name = "__codelineno-0-1786" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1787" name = "__codelineno-0-1787" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1788" name = "__codelineno-0-1788" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1789" name = "__codelineno-0-1789" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1790" name = "__codelineno-0-1790" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > ticks</ span > < span class = "ow" > in</ span > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1791" name = "__codelineno-0-1791" ></ a > < span class = "n" > _write_incremental_ticks</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1792" name = "__codelineno-0-1792" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1793" name = "__codelineno-0-1793" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1794" name = "__codelineno-0-1794" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1795" name = "__codelineno-0-1795" ></ a > < span class = "n" > resolved_tick_flags</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1796" name = "__codelineno-0-1796" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1797" name = "__codelineno-0-1797" ></ a > < span class = "n" > end_date</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1798" name = "__codelineno-0-1798" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1799" name = "__codelineno-0-1799" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1800" name = "__codelineno-0-1800" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1801" name = "__codelineno-0-1801" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1802" name = "__codelineno-0-1802" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_orders</ span > < span class = "ow" > in</ span > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1803" name = "__codelineno-0-1803" ></ a > < span class = "n" > _write_incremental_history_orders</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1804" name = "__codelineno-0-1804" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1805" name = "__codelineno-0-1805" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1806" name = "__codelineno-0-1806" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1807" name = "__codelineno-0-1807" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1808" name = "__codelineno-0-1808" ></ a > < span class = "n" > end_date</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1809" name = "__codelineno-0-1809" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1810" name = "__codelineno-0-1810" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1811" name = "__codelineno-0-1811" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1812" name = "__codelineno-0-1812" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1813" name = "__codelineno-0-1813" ></ a > < span class = "k" > if</ span > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > history_deals</ span > < span class = "ow" > in</ span > < span class = "n" > selected_datasets</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1814" name = "__codelineno-0-1814" ></ a > < span class = "n" > _write_incremental_history_deals</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1815" name = "__codelineno-0-1815" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1816" name = "__codelineno-0-1816" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1817" name = "__codelineno-0-1817" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1818" name = "__codelineno-0-1818" ></ a > < span class = "n" > fallback_start</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1819" name = "__codelineno-0-1819" ></ a > < span class = "n" > end_date</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1820" name = "__codelineno-0-1820" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1821" name = "__codelineno-0-1821" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1822" name = "__codelineno-0-1822" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1823" name = "__codelineno-0-1823" ></ a > < span class = "n" > include_account_events</ span >< span class = "o" > =</ span >< span class = "n" > include_account_events</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1824" name = "__codelineno-0-1824" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1825" name = "__codelineno-0-1825" ></ a > < span class = "n" > _finalize_incremental_writes</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1826" name = "__codelineno-0-1826" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1827" name = "__codelineno-0-1827" ></ a > < span class = "n" > selected_datasets</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1828" name = "__codelineno-0-1828" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1829" name = "__codelineno-0-1829" ></ a > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1830" name = "__codelineno-0-1830" ></ a > < span class = "n" > dedup_scopes</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1831" name = "__codelineno-0-1831" ></ a > < span class = "n" > deduplicate</ span >< span class = "o" > =</ span >< span class = "n" > deduplicate</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1832" name = "__codelineno-0-1832" ></ a > < span class = "n" > create_rate_views</ span >< span class = "o" > =</ span >< span class = "n" > create_rate_views</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1833" name = "__codelineno-0-1833" ></ a > < span class = "n" > with_views</ span >< span class = "o" > =</ span >< span class = "n" > with_views</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1834" name = "__codelineno-0-1834" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1835" name = "__codelineno-0-1835" ></ a > < span class = "k" > return</ span > < span class = "n" > written_tables</ span >< span class = "p" > ,</ span > < span class = "n" > written_columns</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_rates_dataset" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_rates_dataset</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_rates_dataset" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_rates_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5DataClient" > Mt5DataClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ 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 = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Stream rates frames into SQLite.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the rates table was written.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1380" > 1380</ a ></ span >
2026-06-12 14:15:10 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1381" > 1381</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1382" > 1382</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1383" > 1383</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1384" > 1384</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1385" > 1385</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1386" > 1386</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1387" > 1387</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1388" > 1388</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1389" > 1389</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1390" > 1390</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1391" > 1391</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1392" > 1392</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1393" > 1393</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1394" > 1394</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1395" > 1395</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1396" > 1396</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1397" > 1397</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1398" > 1398</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1399" > 1399</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1400" > 1400</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1401" > 1401</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1402" > 1402</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1403" > 1403</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1404" > 1404</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1405" > 1405</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1406" > 1406</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1407" > 1407</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1408" > 1408</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1409" > 1409</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1410" > 1410</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1411" > 1411</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1412" > 1412</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1413" > 1413</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1414" > 1414</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1415" > 1415</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1380" name = "__codelineno-0-1380" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_rates_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1381" name = "__codelineno-0-1381" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1382" name = "__codelineno-0-1382" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5DataClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1383" name = "__codelineno-0-1383" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1384" name = "__codelineno-0-1384" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1385" name = "__codelineno-0-1385" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1386" name = "__codelineno-0-1386" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1387" name = "__codelineno-0-1387" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1388" name = "__codelineno-0-1388" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1389" name = "__codelineno-0-1389" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1390" name = "__codelineno-0-1390" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Stream rates frames into SQLite.</ span >
< a id = "__codelineno-0-1391" name = "__codelineno-0-1391" ></ a >
< a id = "__codelineno-0-1392" name = "__codelineno-0-1392" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1393" name = "__codelineno-0-1393" ></ a >< span class = "sd" > True if the rates table was written.</ span >
< a id = "__codelineno-0-1394" name = "__codelineno-0-1394" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1395" name = "__codelineno-0-1395" ></ a >
< a id = "__codelineno-0-1396" name = "__codelineno-0-1396" ></ a > < span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > _fetch_rates_frame</ span >< span class = "p" > (</ span >< span class = "n" > sym</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1397" name = "__codelineno-0-1397" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > copy_rates_range_as_df</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1398" name = "__codelineno-0-1398" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > sym</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1399" name = "__codelineno-0-1399" ></ a > < span class = "n" > timeframe</ span >< span class = "o" > =</ span >< span class = "n" > timeframe</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1400" name = "__codelineno-0-1400" ></ a > < span class = "n" > date_from</ span >< span class = "o" > =</ span >< span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1401" name = "__codelineno-0-1401" ></ a > < span class = "n" > date_to</ span >< span class = "o" > =</ span >< span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1402" name = "__codelineno-0-1402" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > drop</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "o" > =</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ],</ span > < span class = "n" > errors</ span >< span class = "o" > =</ span >< span class = "s2" > " ignore" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1403" name = "__codelineno-0-1403" ></ a > < span class = "k" > if</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span > < span class = "o" > !=</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1404" name = "__codelineno-0-1404" ></ a > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > insert</ span >< span class = "p" > (</ span >< span class = "mi" > 0</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "n" > sym</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1405" name = "__codelineno-0-1405" ></ a > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > insert</ span >< span class = "p" > (</ span >< span class = "mi" > 1</ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "n" > timeframe</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1406" name = "__codelineno-0-1406" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >
< a id = "__codelineno-0-1407" name = "__codelineno-0-1407" ></ a >
< a id = "__codelineno-0-1408" name = "__codelineno-0-1408" ></ a > < span class = "k" > return</ span > < span class = "n" > _stream_symbol_frames</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1409" name = "__codelineno-0-1409" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1410" name = "__codelineno-0-1410" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1411" name = "__codelineno-0-1411" ></ a > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1412" name = "__codelineno-0-1412" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1413" name = "__codelineno-0-1413" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1414" name = "__codelineno-0-1414" ></ a > < span class = "n" > _fetch_rates_frame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1415" name = "__codelineno-0-1415" ></ a > < span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_streamed_frame" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_streamed_frame</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_streamed_frame" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_streamed_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > table_exists</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Write one streamed dataset frame and track table state.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the dataset table exists after this write attempt.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1003" > 1003</ a ></ span >
2026-06-10 17:31:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1004" > 1004</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1005" > 1005</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1006" > 1006</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1007" > 1007</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1008" > 1008</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1009" > 1009</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1010" > 1010</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1011" > 1011</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1012" > 1012</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1013" > 1013</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1014" > 1014</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1015" > 1015</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1016" > 1016</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1017" > 1017</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1018" > 1018</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1019" > 1019</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1020" > 1020</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1003" name = "__codelineno-0-1003" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_streamed_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1004" name = "__codelineno-0-1004" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1005" name = "__codelineno-0-1005" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1006" name = "__codelineno-0-1006" ></ a > < span class = "n" > dataset</ span >< span class = "p" > :</ span > < span class = "n" > Dataset</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1007" name = "__codelineno-0-1007" ></ a > < span class = "n" > table_exists</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1008" name = "__codelineno-0-1008" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1009" name = "__codelineno-0-1009" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1010" name = "__codelineno-0-1010" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1011" name = "__codelineno-0-1011" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Write one streamed dataset frame and track table state.</ span >
< a id = "__codelineno-0-1012" name = "__codelineno-0-1012" ></ a >
< a id = "__codelineno-0-1013" name = "__codelineno-0-1013" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1014" name = "__codelineno-0-1014" ></ a >< span class = "sd" > True if the dataset table exists after this write attempt.</ span >
< a id = "__codelineno-0-1015" name = "__codelineno-0-1015" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1016" name = "__codelineno-0-1016" ></ a > < span class = "n" > write_mode</ span > < span class = "o" > =</ span > < span class = "n" > IfExists</ span >< span class = "o" > .</ span >< span class = "n" > APPEND</ span > < span class = "k" > if</ span > < span class = "n" > table_exists</ span > < span class = "k" > else</ span > < span class = "n" > if_exists</ span >
< a id = "__codelineno-0-1017" name = "__codelineno-0-1017" ></ a > < span class = "k" > if</ span > < span class = "n" > append_dataframe</ span >< span class = "p" > (</ span >< span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > frame</ span >< span class = "p" > ,</ span > < span class = "n" > dataset</ span >< span class = "o" > .</ span >< span class = "n" > table_name</ span >< span class = "p" > ,</ span > < span class = "n" > write_mode</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-1018" name = "__codelineno-0-1018" ></ a > < span class = "n" > record_written_columns</ span >< span class = "p" > (</ span >< span class = "n" > written_columns</ span >< span class = "p" > ,</ span > < span class = "n" > dataset</ span >< span class = "p" > ,</ span > < span class = "n" > frame</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1019" name = "__codelineno-0-1019" ></ a > < span class = "k" > return</ span > < span class = "kc" > True</ span >
< a id = "__codelineno-0-1020" name = "__codelineno-0-1020" ></ a > < span class = "k" > return</ span > < span class = "n" > table_exists</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 17:40:53 +00:00
< h3 id = "mt5cli.history.write_ticks_dataset" class = "doc doc-heading" >
2026-06-08 16:28:50 +00:00
< span class = "doc doc-object-name doc-function-name" > write_ticks_dataset</ span >
2026-06-08 17:40:53 +00:00
< a href = "#mt5cli.history.write_ticks_dataset" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-08 16:28:50 +00:00
< 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" > write_ticks_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "sqlite3.Connection" > Connection</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5DataClient" > Mt5DataClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Sequence" > Sequence</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > flags</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "datetime.datetime" > datetime</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "../utils/#mt5cli.utils.IfExists" > IfExists</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "Dataset (mt5cli.utils.Dataset)" href = "../utils/#mt5cli.utils.Dataset" > Dataset</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "set" > set</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ 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 = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Stream ticks frames into SQLite.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > True if the ticks table was written.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
2026-06-08 17:40:53 +00:00
< summary > Source code in < code > mt5cli/history.py</ code ></ summary >
2026-06-12 16:32:35 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1418" > 1418</ a ></ span >
2026-06-12 14:15:10 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1419" > 1419</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1420" > 1420</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1421" > 1421</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1422" > 1422</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1423" > 1423</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1424" > 1424</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1425" > 1425</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1426" > 1426</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1427" > 1427</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1428" > 1428</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1429" > 1429</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1430" > 1430</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1431" > 1431</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1432" > 1432</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1433" > 1433</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1434" > 1434</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1435" > 1435</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1436" > 1436</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1437" > 1437</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1438" > 1438</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1439" > 1439</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1440" > 1440</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1441" > 1441</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1442" > 1442</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1443" > 1443</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1444" > 1444</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1445" > 1445</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1446" > 1446</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1447" > 1447</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1448" > 1448</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1449" > 1449</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1450" > 1450</ a ></ span >
2026-06-12 16:32:35 +00:00
< span class = "normal" >< a href = "#__codelineno-0-1451" > 1451</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1452" > 1452</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1418" name = "__codelineno-0-1418" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > write_ticks_dataset</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1419" name = "__codelineno-0-1419" ></ a > < span class = "n" > conn</ span >< span class = "p" > :</ span > < span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > Connection</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1420" name = "__codelineno-0-1420" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5DataClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1421" name = "__codelineno-0-1421" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" > Sequence</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-1422" name = "__codelineno-0-1422" ></ a > < span class = "n" > flags</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1423" name = "__codelineno-0-1423" ></ a > < span class = "n" > date_from</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1424" name = "__codelineno-0-1424" ></ a > < span class = "n" > date_to</ span >< span class = "p" > :</ span > < span class = "n" > datetime</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1425" name = "__codelineno-0-1425" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1426" name = "__codelineno-0-1426" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > :</ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "n" > Dataset</ span >< span class = "p" > ,</ span > < span class = "nb" > set</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]],</ span >
< a id = "__codelineno-0-1427" name = "__codelineno-0-1427" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > bool</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1428" name = "__codelineno-0-1428" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Stream ticks frames into SQLite.</ span >
< a id = "__codelineno-0-1429" name = "__codelineno-0-1429" ></ a >
< a id = "__codelineno-0-1430" name = "__codelineno-0-1430" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-1431" name = "__codelineno-0-1431" ></ a >< span class = "sd" > True if the ticks table was written.</ span >
< a id = "__codelineno-0-1432" name = "__codelineno-0-1432" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1433" name = "__codelineno-0-1433" ></ a >
< a id = "__codelineno-0-1434" name = "__codelineno-0-1434" ></ a > < span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > _fetch_ticks_frame</ span >< span class = "p" > (</ span >< span class = "n" > sym</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1435" name = "__codelineno-0-1435" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > copy_ticks_range_as_df</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1436" name = "__codelineno-0-1436" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > sym</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1437" name = "__codelineno-0-1437" ></ a > < span class = "n" > date_from</ span >< span class = "o" > =</ span >< span class = "n" > date_from</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1438" name = "__codelineno-0-1438" ></ a > < span class = "n" > date_to</ span >< span class = "o" > =</ span >< span class = "n" > date_to</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1439" name = "__codelineno-0-1439" ></ a > < span class = "n" > flags</ span >< span class = "o" > =</ span >< span class = "n" > flags</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1440" name = "__codelineno-0-1440" ></ a > < span class = "p" > )</ span >< span class = "o" > .</ span >< span class = "n" > drop</ span >< span class = "p" > (</ span >< span class = "n" > columns</ span >< span class = "o" > =</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ],</ span > < span class = "n" > errors</ span >< span class = "o" > =</ span >< span class = "s2" > " ignore" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1441" name = "__codelineno-0-1441" ></ a > < span class = "k" > if</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span > < span class = "o" > !=</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1442" name = "__codelineno-0-1442" ></ a > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > insert</ span >< span class = "p" > (</ span >< span class = "mi" > 0</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "n" > sym</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-1443" name = "__codelineno-0-1443" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >
< a id = "__codelineno-0-1444" name = "__codelineno-0-1444" ></ a >
< a id = "__codelineno-0-1445" name = "__codelineno-0-1445" ></ a > < span class = "k" > return</ span > < span class = "n" > _stream_symbol_frames</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1446" name = "__codelineno-0-1446" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1447" name = "__codelineno-0-1447" ></ a > < span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1448" name = "__codelineno-0-1448" ></ a > < span class = "n" > Dataset</ span >< span class = "o" > .</ span >< span class = "n" > ticks</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1449" name = "__codelineno-0-1449" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1450" name = "__codelineno-0-1450" ></ a > < span class = "n" > written_columns</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1451" name = "__codelineno-0-1451" ></ a > < span class = "n" > _fetch_ticks_frame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1452" name = "__codelineno-0-1452" ></ a > < span class = "p" > )</ span >
2026-06-08 16:28:50 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
</ div >
</ div >
</ div >< h2 id = "collect-history-schema" >< code > collect-history</ code > schema< a class = "headerlink" href = "#collect-history-schema" title = "Permanent link" > ¶ </ a ></ h2 >
< p > The < code > collect-history</ code > command (and the matching < code > collect_history</ code > SDK function) writes
selected MT5 datasets into one SQLite database. Each dataset becomes a table; column
names and types mirror the pdmt5 DataFrame schema for that export, with two additions:</ p >
< ul >
< li >< code > symbol</ code > is prepended on every table.</ li >
< li >< code > timeframe</ code > is prepended on < code > rates</ code > so appended runs at different bar sizes stay
distinguishable.</ li >
</ ul >
< p > SQLite does not declare foreign keys. Rows are linked logically by < code > symbol</ code > , time
windows, and (for deals) < code > position_id</ code > / < code > order</ code > . Duplicate rows are removed on
append using dataset-specific keys (for example < code > ticket</ code > on history tables, or
< code > (symbol, timeframe, time)</ code > on rates).</ p >
< p > Optional views are created when < code > --with-views</ code > is set and the < code > history-deals</ code > dataset
was written.</ p >
< h3 id = "entity-relationship-diagram" > Entity-relationship diagram< a class = "headerlink" href = "#entity-relationship-diagram" title = "Permanent link" > ¶ </ a ></ h3 >
< p > Sample layout for a full collection with < code > --with-views</ code > :</ p >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a > erDiagram
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > rates {
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > TEXT symbol " dedup key"
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > INTEGER timeframe " dedup key"
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > TEXT time " dedup key"
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > REAL open
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > REAL high
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > REAL low
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > REAL close
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > INTEGER tick_volume
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > INTEGER spread
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > INTEGER real_volume
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > }
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a > ticks {
< a id = "__codelineno-0-16" name = "__codelineno-0-16" href = "#__codelineno-0-16" ></ a > TEXT symbol " dedup key"
< a id = "__codelineno-0-17" name = "__codelineno-0-17" href = "#__codelineno-0-17" ></ a > TEXT time " dedup key"
< a id = "__codelineno-0-18" name = "__codelineno-0-18" href = "#__codelineno-0-18" ></ a > INTEGER time_msc " dedup key (preferred)"
< a id = "__codelineno-0-19" name = "__codelineno-0-19" href = "#__codelineno-0-19" ></ a > REAL bid
< a id = "__codelineno-0-20" name = "__codelineno-0-20" href = "#__codelineno-0-20" ></ a > REAL ask
< a id = "__codelineno-0-21" name = "__codelineno-0-21" href = "#__codelineno-0-21" ></ a > REAL last
< a id = "__codelineno-0-22" name = "__codelineno-0-22" href = "#__codelineno-0-22" ></ a > INTEGER volume
< a id = "__codelineno-0-23" name = "__codelineno-0-23" href = "#__codelineno-0-23" ></ a > INTEGER flags
< a id = "__codelineno-0-24" name = "__codelineno-0-24" href = "#__codelineno-0-24" ></ a > REAL volume_real
< a id = "__codelineno-0-25" name = "__codelineno-0-25" href = "#__codelineno-0-25" ></ a > }
< a id = "__codelineno-0-26" name = "__codelineno-0-26" href = "#__codelineno-0-26" ></ a >
< a id = "__codelineno-0-27" name = "__codelineno-0-27" href = "#__codelineno-0-27" ></ a > history_orders {
< a id = "__codelineno-0-28" name = "__codelineno-0-28" href = "#__codelineno-0-28" ></ a > INTEGER ticket " dedup key"
< a id = "__codelineno-0-29" name = "__codelineno-0-29" href = "#__codelineno-0-29" ></ a > TEXT symbol
< a id = "__codelineno-0-30" name = "__codelineno-0-30" href = "#__codelineno-0-30" ></ a > TEXT time
< a id = "__codelineno-0-31" name = "__codelineno-0-31" href = "#__codelineno-0-31" ></ a > INTEGER type
< a id = "__codelineno-0-32" name = "__codelineno-0-32" href = "#__codelineno-0-32" ></ a > INTEGER state
< a id = "__codelineno-0-33" name = "__codelineno-0-33" href = "#__codelineno-0-33" ></ a > REAL volume_initial
< a id = "__codelineno-0-34" name = "__codelineno-0-34" href = "#__codelineno-0-34" ></ a > REAL price_open
< a id = "__codelineno-0-35" name = "__codelineno-0-35" href = "#__codelineno-0-35" ></ a > REAL price_current
< a id = "__codelineno-0-36" name = "__codelineno-0-36" href = "#__codelineno-0-36" ></ a > INTEGER magic
< a id = "__codelineno-0-37" name = "__codelineno-0-37" href = "#__codelineno-0-37" ></ a > }
< a id = "__codelineno-0-38" name = "__codelineno-0-38" href = "#__codelineno-0-38" ></ a >
< a id = "__codelineno-0-39" name = "__codelineno-0-39" href = "#__codelineno-0-39" ></ a > history_deals {
< a id = "__codelineno-0-40" name = "__codelineno-0-40" href = "#__codelineno-0-40" ></ a > INTEGER ticket " dedup key"
< a id = "__codelineno-0-41" name = "__codelineno-0-41" href = "#__codelineno-0-41" ></ a > INTEGER order
< a id = "__codelineno-0-42" name = "__codelineno-0-42" href = "#__codelineno-0-42" ></ a > INTEGER position_id " groups position view"
< a id = "__codelineno-0-43" name = "__codelineno-0-43" href = "#__codelineno-0-43" ></ a > TEXT symbol
< a id = "__codelineno-0-44" name = "__codelineno-0-44" href = "#__codelineno-0-44" ></ a > TEXT time
< a id = "__codelineno-0-45" name = "__codelineno-0-45" href = "#__codelineno-0-45" ></ a > INTEGER type " 0/1 trade, else cash event"
< a id = "__codelineno-0-46" name = "__codelineno-0-46" href = "#__codelineno-0-46" ></ a > INTEGER entry " 0 IN, 1 OUT, 2 INOUT, 3 OUT_BY"
< a id = "__codelineno-0-47" name = "__codelineno-0-47" href = "#__codelineno-0-47" ></ a > REAL volume
< a id = "__codelineno-0-48" name = "__codelineno-0-48" href = "#__codelineno-0-48" ></ a > REAL price
< a id = "__codelineno-0-49" name = "__codelineno-0-49" href = "#__codelineno-0-49" ></ a > REAL profit
< a id = "__codelineno-0-50" name = "__codelineno-0-50" href = "#__codelineno-0-50" ></ a > REAL commission
< a id = "__codelineno-0-51" name = "__codelineno-0-51" href = "#__codelineno-0-51" ></ a > REAL swap
< a id = "__codelineno-0-52" name = "__codelineno-0-52" href = "#__codelineno-0-52" ></ a > REAL fee
< a id = "__codelineno-0-53" name = "__codelineno-0-53" href = "#__codelineno-0-53" ></ a > }
< a id = "__codelineno-0-54" name = "__codelineno-0-54" href = "#__codelineno-0-54" ></ a >
< a id = "__codelineno-0-55" name = "__codelineno-0-55" href = "#__codelineno-0-55" ></ a > cash_events {
< a id = "__codelineno-0-56" name = "__codelineno-0-56" href = "#__codelineno-0-56" ></ a > INTEGER ticket
< a id = "__codelineno-0-57" name = "__codelineno-0-57" href = "#__codelineno-0-57" ></ a > TEXT symbol
< a id = "__codelineno-0-58" name = "__codelineno-0-58" href = "#__codelineno-0-58" ></ a > TEXT time
< a id = "__codelineno-0-59" name = "__codelineno-0-59" href = "#__codelineno-0-59" ></ a > INTEGER type
< a id = "__codelineno-0-60" name = "__codelineno-0-60" href = "#__codelineno-0-60" ></ a > REAL profit
< a id = "__codelineno-0-61" name = "__codelineno-0-61" href = "#__codelineno-0-61" ></ a > }
< a id = "__codelineno-0-62" name = "__codelineno-0-62" href = "#__codelineno-0-62" ></ a >
< a id = "__codelineno-0-63" name = "__codelineno-0-63" href = "#__codelineno-0-63" ></ a > positions_reconstructed {
< a id = "__codelineno-0-64" name = "__codelineno-0-64" href = "#__codelineno-0-64" ></ a > INTEGER position_id
< a id = "__codelineno-0-65" name = "__codelineno-0-65" href = "#__codelineno-0-65" ></ a > TEXT symbol
< a id = "__codelineno-0-66" name = "__codelineno-0-66" href = "#__codelineno-0-66" ></ a > TEXT open_time
< a id = "__codelineno-0-67" name = "__codelineno-0-67" href = "#__codelineno-0-67" ></ a > TEXT close_time
< a id = "__codelineno-0-68" name = "__codelineno-0-68" href = "#__codelineno-0-68" ></ a > INTEGER direction
< a id = "__codelineno-0-69" name = "__codelineno-0-69" href = "#__codelineno-0-69" ></ a > REAL volume_open
< a id = "__codelineno-0-70" name = "__codelineno-0-70" href = "#__codelineno-0-70" ></ a > REAL volume_close
< a id = "__codelineno-0-71" name = "__codelineno-0-71" href = "#__codelineno-0-71" ></ a > REAL volume_reversal
< a id = "__codelineno-0-72" name = "__codelineno-0-72" href = "#__codelineno-0-72" ></ a > REAL open_price
< a id = "__codelineno-0-73" name = "__codelineno-0-73" href = "#__codelineno-0-73" ></ a > REAL close_price
< a id = "__codelineno-0-74" name = "__codelineno-0-74" href = "#__codelineno-0-74" ></ a > REAL total_profit
< a id = "__codelineno-0-75" name = "__codelineno-0-75" href = "#__codelineno-0-75" ></ a > INTEGER reversal_count
< a id = "__codelineno-0-76" name = "__codelineno-0-76" href = "#__codelineno-0-76" ></ a > INTEGER deals_count
< a id = "__codelineno-0-77" name = "__codelineno-0-77" href = "#__codelineno-0-77" ></ a > }
< a id = "__codelineno-0-78" name = "__codelineno-0-78" href = "#__codelineno-0-78" ></ a >
< a id = "__codelineno-0-79" name = "__codelineno-0-79" href = "#__codelineno-0-79" ></ a > rates ||--o{ history_deals : " symbol (logical)"
< a id = "__codelineno-0-80" name = "__codelineno-0-80" href = "#__codelineno-0-80" ></ a > ticks ||--o{ history_deals : " symbol (logical)"
< a id = "__codelineno-0-81" name = "__codelineno-0-81" href = "#__codelineno-0-81" ></ a > history_orders ||--o{ history_deals : " order ~ ticket (logical)"
< a id = "__codelineno-0-82" name = "__codelineno-0-82" href = "#__codelineno-0-82" ></ a > history_deals ||--|| cash_events : " VIEW: type NOT IN (0,1)"
< a id = "__codelineno-0-83" name = "__codelineno-0-83" href = "#__codelineno-0-83" ></ a > history_deals ||--o{ positions_reconstructed : " VIEW: GROUP BY position_id"
</ code ></ pre ></ div >
< h3 id = "tables-and-views" > Tables and views< a class = "headerlink" href = "#tables-and-views" title = "Permanent link" > ¶ </ a ></ h3 >
< table >
< thead >
< tr >
< th > Object</ th >
< th > Kind</ th >
< th > Source</ th >
< th > Notes</ th >
</ tr >
</ thead >
< tbody >
< tr >
< td >< code > rates</ code ></ td >
< td > table</ td >
< td >< code > copy_rates_range</ code ></ td >
< td > Indexed on < code > (symbol, timeframe, time)</ code > when columns exist.</ td >
</ tr >
< tr >
< td >< code > ticks</ code ></ td >
< td > table</ td >
< td >< code > copy_ticks_range</ code ></ td >
< td > Indexed on < code > (symbol, time)</ code > when columns exist.</ td >
</ tr >
< tr >
< td >< code > history_orders</ code ></ td >
< td > table</ td >
< td >< code > history_orders_get</ code ></ td >
< td > Fetched per < code > --symbol</ code > , then concatenated.</ td >
</ tr >
< tr >
< td >< code > history_deals</ code ></ td >
< td > table</ td >
< td >< code > history_deals_get</ code ></ td >
< td > Fetched per < code > --symbol</ code > , then concatenated. Indexed on < code > (position_id, symbol)</ code > when present.</ td >
</ tr >
< tr >
< td >< code > cash_events</ code ></ td >
< td > view</ td >
< td >< code > history_deals</ code ></ td >
< td > Non-trade deal types (deposits, balance ops, etc.). Requires < code > type</ code > column.</ td >
</ tr >
< tr >
< td >< code > positions_reconstructed</ code ></ td >
< td > view</ td >
< td >< code > history_deals</ code ></ td >
< td > One row per closed < code > position_id</ code > ; volume-weighted prices and reversal stats.</ td >
</ tr >
</ tbody >
</ table >
< p > Column sets can vary with terminal and pdmt5 version. Views are skipped with a warning
when required columns are missing.</ p >
< h3 id = "incremental-collection" > Incremental collection< a class = "headerlink" href = "#incremental-collection" title = "Permanent link" > ¶ </ a ></ h3 >
< p > The < code > update_history</ code > SDK path uses the same base tables and optional
< code > cash_events</ code > / < code > positions_reconstructed</ code > views. It additionally maintains
2026-06-08 18:29:32 +00:00
< code > rate_< symbol> __< timeframe> </ code > compatibility views when < code > create_rate_views=True</ code > .</ p >
< h3 id = "rate-view-resolution" > Rate view resolution< a class = "headerlink" href = "#rate-view-resolution" title = "Permanent link" > ¶ </ a ></ h3 >
< p > Downstream tools can resolve mt5cli-managed compatibility view names from an
2026-06-09 14:28:29 +00:00
existing SQLite history database without creating files or guessing naming
schemes:</ p >
2026-06-08 18:29:32 +00:00
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-1-1" name = "__codelineno-1-1" href = "#__codelineno-1-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > pathlib</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > Path</ span >
< a id = "__codelineno-1-2" name = "__codelineno-1-2" href = "#__codelineno-1-2" ></ a >
< a id = "__codelineno-1-3" name = "__codelineno-1-3" href = "#__codelineno-1-3" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > mt5cli.history</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > resolve_rate_view_name</ span >< span class = "p" > ,</ span > < span class = "n" > resolve_rate_view_names</ span >
< a id = "__codelineno-1-4" name = "__codelineno-1-4" href = "#__codelineno-1-4" ></ a >
< a id = "__codelineno-1-5" name = "__codelineno-1-5" href = "#__codelineno-1-5" ></ a >< span class = "c1" > # Single symbol and granularity</ span >
< a id = "__codelineno-1-6" name = "__codelineno-1-6" href = "#__codelineno-1-6" ></ a >< span class = "n" > view</ span > < span class = "o" > =</ span > < span class = "n" > resolve_rate_view_name</ span >< span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "s2" > " history.db" </ span >< span class = "p" > ),</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "s2" > " M1" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-7" name = "__codelineno-1-7" href = "#__codelineno-1-7" ></ a >
< a id = "__codelineno-1-8" name = "__codelineno-1-8" href = "#__codelineno-1-8" ></ a >< span class = "c1" > # Batch resolution in row-major order</ span >
< a id = "__codelineno-1-9" name = "__codelineno-1-9" href = "#__codelineno-1-9" ></ a >< span class = "n" > views</ span > < span class = "o" > =</ span > < span class = "n" > resolve_rate_view_names</ span >< span class = "p" > (</ span >
< a id = "__codelineno-1-10" name = "__codelineno-1-10" href = "#__codelineno-1-10" ></ a > < span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "s2" > " history.db" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-1-11" name = "__codelineno-1-11" href = "#__codelineno-1-11" ></ a > < span class = "p" > [</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "s2" > " GBPUSD" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-1-12" name = "__codelineno-1-12" href = "#__codelineno-1-12" ></ a > < span class = "p" > [</ span >< span class = "s2" > " M1" </ span >< span class = "p" > ,</ span > < span class = "s2" > " H1" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-1-13" name = "__codelineno-1-13" href = "#__codelineno-1-13" ></ a >< span class = "p" > )</ span >
</ code ></ pre ></ div >
< p > Resolution rules:</ p >
< ul >
< li > Returns < code > rate_< symbol> __< timeframe> </ code > when a symbol stores one timeframe.</ li >
< li > Returns < code > rate_< symbol> __< granularity> _< timeframe> </ code > when multiple timeframes
are stored for the same symbol.</ li >
< li > When multiple naming candidates apply, prefers an existing managed
< code > rate_*__*</ code > view from the candidate list.</ li >
< li > Falls back to single-timeframe naming when the database path is missing or
< code > rates</ code > metadata is unavailable.</ li >
< li > Pass < code > require_existing=True</ code > to raise < code > ValueError</ code > instead of returning a
best-guess name when the database or view is missing.</ li >
< li > Accepts either a SQLite path or an open < code > sqlite3.Connection</ code > .</ li >
2026-06-09 02:27:54 +00:00
</ ul >
< h3 id = "rate-data-loading" > Rate data loading< a class = "headerlink" href = "#rate-data-loading" title = "Permanent link" > ¶ </ a ></ h3 >
< p > Use < code > load_rate_data()</ code > to load a table or view from a SQLite path, or
< code > load_rate_data_from_connection()</ code > when you already have a connection:</ p >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-2-1" name = "__codelineno-2-1" href = "#__codelineno-2-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > pathlib</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > Path</ span >
< a id = "__codelineno-2-2" name = "__codelineno-2-2" href = "#__codelineno-2-2" ></ a >
< a id = "__codelineno-2-3" name = "__codelineno-2-3" href = "#__codelineno-2-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" > load_rate_data</ span >
< a id = "__codelineno-2-4" name = "__codelineno-2-4" href = "#__codelineno-2-4" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > mt5cli.history</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > resolve_rate_view_name</ span >
< a id = "__codelineno-2-5" name = "__codelineno-2-5" href = "#__codelineno-2-5" ></ a >
< a id = "__codelineno-2-6" name = "__codelineno-2-6" href = "#__codelineno-2-6" ></ a >< span class = "n" > view</ span > < span class = "o" > =</ span > < span class = "n" > resolve_rate_view_name</ span >< span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "s2" > " history.db" </ span >< span class = "p" > ),</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "s2" > " M1" </ span >< span class = "p" > ,</ span > < span class = "n" > require_existing</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > )</ span >
< a id = "__codelineno-2-7" name = "__codelineno-2-7" href = "#__codelineno-2-7" ></ a >< span class = "n" > rates</ span > < span class = "o" > =</ span > < span class = "n" > load_rate_data</ span >< span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "s2" > " history.db" </ span >< span class = "p" > ),</ span > < span class = "n" > view</ span >< span class = "p" > ,</ span > < span class = "n" > count</ span >< span class = "o" > =</ span >< span class = "mi" > 1000</ span >< span class = "p" > )</ span >
</ code ></ pre ></ div >
< p > The loader accepts close-based OHLC rate data or tick-like bid/ask data. It
validates that < code > time</ code > exists, parses timestamps with pandas, and returns a
2026-06-09 06:37:58 +00:00
DataFrame indexed by ascending < code > DatetimeIndex</ code > named < code > time</ code > .</ p >
< h3 id = "multi-series-rate-loading" > Multi-series rate loading< a class = "headerlink" href = "#multi-series-rate-loading" title = "Permanent link" > ¶ </ a ></ h3 >
< p > For loading many rate series at once, build neutral < code > RateTarget</ code > pairs and load
them from SQLite in one call. View names are resolved via the same
compatibility-view rules, or you can pass < code > explicit_tables</ code > to bypass resolution:</ p >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-3-1" name = "__codelineno-3-1" href = "#__codelineno-3-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > pathlib</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > Path</ span >
< a id = "__codelineno-3-2" name = "__codelineno-3-2" href = "#__codelineno-3-2" ></ a >
< a id = "__codelineno-3-3" name = "__codelineno-3-3" href = "#__codelineno-3-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" > build_rate_targets</ span >< span class = "p" > ,</ span > < span class = "n" > load_rate_series_from_sqlite</ span >
< a id = "__codelineno-3-4" name = "__codelineno-3-4" href = "#__codelineno-3-4" ></ a >
< a id = "__codelineno-3-5" name = "__codelineno-3-5" href = "#__codelineno-3-5" ></ a >< span class = "n" > targets</ span > < span class = "o" > =</ span > < span class = "n" > build_rate_targets</ span >< span class = "p" > ([</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "s2" > " GBPUSD" </ span >< span class = "p" > ],</ span > < span class = "p" > [</ span >< span class = "s2" > " M1" </ span >< span class = "p" > ,</ span > < span class = "s2" > " H1" </ span >< span class = "p" > ])</ span >
< a id = "__codelineno-3-6" name = "__codelineno-3-6" href = "#__codelineno-3-6" ></ a >< span class = "n" > series</ span > < span class = "o" > =</ span > < span class = "n" > load_rate_series_from_sqlite</ span >< span class = "p" > (</ span >< span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "s2" > " history.db" </ span >< span class = "p" > ),</ span > < span class = "n" > targets</ span >< span class = "p" > ,</ span > < span class = "n" > count</ span >< span class = "o" > =</ span >< span class = "mi" > 1000</ span >< span class = "p" > )</ span >
< a id = "__codelineno-3-7" name = "__codelineno-3-7" href = "#__codelineno-3-7" ></ a >< span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > series</ span >< span class = "p" > [</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "mi" > 1</ span >< span class = "p" > ]</ span > < span class = "c1" > # keyed by (symbol, integer timeframe)</ span >
</ code ></ pre ></ div >
< ul >
< li >< code > build_rate_targets()</ code > returns < code > RateTarget(symbol, timeframe)</ code > pairs in
row-major order, normalizing timeframe names such as < code > "M1"</ code > to their integer
values; set < code > allow_missing_symbol=True</ code > to address series solely by
< code > explicit_tables</ code > (targets carry < code > symbol=None</ code > ).</ li >
< li >< code > resolve_rate_tables()</ code > maps targets to table or view names and validates that
any < code > explicit_tables</ code > count matches the target count. Pass
< code > require_existing=True</ code > to raise < code > ValueError</ code > instead of returning a
best-guess name when the database or managed view is missing. When
< code > explicit_tables</ code > is provided, names are returned as-is and
< code > require_existing</ code > is ignored.</ li >
< li >< code > load_rate_series_from_sqlite()</ code > returns a mapping keyed by
< code > (symbol, integer timeframe)</ code > . Unless < code > explicit_tables</ code > is supplied, it
requires existing managed < code > rate_*</ code > compatibility views and raises
< code > ValueError</ code > when they are missing. Duplicate < code > (symbol, timeframe)</ code > targets
are rejected.</ li >
2026-06-09 15:15:52 +00:00
< li >< code > load_rate_series_by_granularity()</ code > is a thin wrapper that builds the targets,
loads the series, and rekeys the result by granularity name to avoid
converting integer timeframes downstream:</ li >
</ ul >
< 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" > mt5cli</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > load_rate_series_by_granularity</ 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 = "n" > series</ span > < span class = "o" > =</ span > < span class = "n" > load_rate_series_by_granularity</ span >< span class = "p" > (</ span >
< a id = "__codelineno-4-4" name = "__codelineno-4-4" href = "#__codelineno-4-4" ></ a > < span class = "s2" > " history.db" </ span >< span class = "p" > ,</ span > < span class = "p" > [</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ],</ span > < span class = "p" > [</ span >< span class = "s2" > " M1" </ span >< span class = "p" > ,</ span > < span class = "s2" > " H1" </ span >< span class = "p" > ],</ span > < span class = "n" > count</ span >< span class = "o" > =</ span >< span class = "mi" > 1000</ span >
< a id = "__codelineno-4-5" name = "__codelineno-4-5" href = "#__codelineno-4-5" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-4-6" name = "__codelineno-4-6" href = "#__codelineno-4-6" ></ a >< span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > series</ span >< span class = "p" > [</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "s2" > " M1" </ span >< span class = "p" > ]</ span > < span class = "c1" > # keyed by (symbol | None, granularity_name)</ span >
</ code ></ pre ></ div ></ div >
2026-06-08 16:28:50 +00:00
</ div >
</ div >
< footer class = "col-md-12" >
< hr >
< p > Documentation built with < a href = "https://www.mkdocs.org/" > MkDocs</ a > .</ p >
</ footer >
< script src = "../../js/bootstrap.bundle.min.js" ></ script >
< script >
var base_url = "../.." ,
shortcuts = { "help" : 191 , "next" : 78 , "previous" : 80 , "search" : 83 };
</ script >
< script src = "../../js/base.js" ></ script >
< script src = "../../search/main.js" ></ script >
< div class = "modal" id = "mkdocs_search_modal" tabindex = "-1" role = "dialog" aria-labelledby = "searchModalLabel" aria-hidden = "true" >
< div class = "modal-dialog modal-lg" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "searchModalLabel" > Search</ h4 >
< button type = "button" class = "btn-close" data-bs-dismiss = "modal" aria-label = "Close" ></ button >
</ div >
< div class = "modal-body" >
< p > From here you can search these documents. Enter your search terms below.</ p >
< form >
< div class = "form-group" >
< input type = "search" class = "form-control" placeholder = "Search..." id = "mkdocs-search-query" title = "Type search term here" >
</ div >
</ form >
< div id = "mkdocs-search-results" data-no-results-text = "No results found" ></ div >
</ div >
< div class = "modal-footer" >
</ div >
</ div >
</ div >
</ div >< div class = "modal" id = "mkdocs_keyboard_modal" tabindex = "-1" role = "dialog" aria-labelledby = "keyboardModalLabel" aria-hidden = "true" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" id = "keyboardModalLabel" > Keyboard Shortcuts</ h4 >
< button type = "button" class = "btn-close" data-bs-dismiss = "modal" aria-label = "Close" ></ button >
</ div >
< div class = "modal-body" >
< table class = "table" >
< thead >
< tr >
< th style = "width: 20%;" > Keys</ th >
< th > Action</ th >
</ tr >
</ thead >
< tbody >
< tr >
< td class = "help shortcut" >< kbd > ?</ kbd ></ td >
< td > Open this help</ td >
</ tr >
< tr >
< td class = "next shortcut" >< kbd > n</ kbd ></ td >
< td > Next page</ td >
</ tr >
< tr >
< td class = "prev shortcut" >< kbd > p</ kbd ></ td >
< td > Previous page</ td >
</ tr >
< tr >
< td class = "search shortcut" >< kbd > s</ kbd ></ td >
< td > Search</ td >
</ tr >
</ tbody >
</ table >
</ div >
< div class = "modal-footer" >
</ div >
</ div >
</ div >
</ div >
</ body >
</ html >