2026-06-08 13:55:22 +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" >
< link rel = "canonical" href = "https://github.com/dceoy/mt5cli/api/utils/" >
< link rel = "shortcut icon" href = "../../img/favicon.ico" >
< title > Utils - mt5cli API Documentation</ title >
< 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-18 10:12:55 +00:00
< li >
< a href = "../public-contract/" class = "dropdown-item" > Public API Contract</ 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 = "../converters/" class = "dropdown-item" > Converters</ a >
</ li >
< li >
< a href = "../exceptions/" class = "dropdown-item" > Exceptions</ a >
</ li >
2026-06-08 13:55:22 +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 = "../history/" class = "dropdown-item" > History Collection (SQLite)</ a >
2026-06-08 16:28:50 +00:00
</ li >
2026-07-03 16:04:05 +00:00
< li >
< a href = "../telemetry/" class = "dropdown-item" > Telemetry</ a >
</ li >
< li >
< a href = "../grafana/" class = "dropdown-item" > Grafana</ a >
</ li >
2026-06-08 13:55:22 +00:00
< li >
< a href = "./" class = "dropdown-item active" aria-current = "page" > 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-07-03 16:04:05 +00:00
< a rel = "prev" href = "../grafana/" class = "nav-link" >
2026-06-08 13:55:22 +00:00
< i class = "fa fa-arrow-left" ></ i > Previous
</ a >
</ li >
< li class = "nav-item" >
< a rel = "next" class = "nav-link disabled" >
Next < i class = "fa fa-arrow-right" ></ i >
</ a >
</ li >
< li class = "nav-item" >
< a href = "https://github.com/dceoy/mt5cli/edit/master/docs/api/utils.md" class = "nav-link" > Edit on dceoy/mt5cli
</ 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" >
< li class = "nav-item" data-bs-level = "1" >< a href = "#utils-module" class = "nav-link" > Utils Module</ a >
< ul class = "nav flex-column" >
< li class = "nav-item" data-bs-level = "2" >< a href = "#mt5cli.utils" class = "nav-link" > utils</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
</ ul >
</ li >
</ ul >
</ div >
</ div ></ div >
< div class = "col-md-9" role = "main" >
< h1 id = "utils-module" > Utils Module< a class = "headerlink" href = "#utils-module" title = "Permanent link" > ¶ </ a ></ h1 >
< div class = "doc doc-object doc-module" >
< h2 id = "mt5cli.utils" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-module-name" > mt5cli.utils</ span >
< a href = "#mt5cli.utils" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h2 >
< div class = "doc doc-contents first" >
< p > Utility constants, types, and functions for the mt5cli package.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.utils.DATETIME_TYPE" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > DATETIME_TYPE</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.DATETIME_TYPE" 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" > DATETIME_TYPE</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "mt5cli.utils._DateTimeType" > _DateTimeType</ span ></ span >< span class = "p" > ()</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.utils.REQUEST_TYPE" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > REQUEST_TYPE</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.REQUEST_TYPE" 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" > REQUEST_TYPE</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "mt5cli.utils._RequestType" > _RequestType</ span ></ span >< span class = "p" > ()</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.utils.TICK_FLAGS_TYPE" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > TICK_FLAGS_TYPE</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.TICK_FLAGS_TYPE" 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" > TICK_FLAGS_TYPE</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "mt5cli.utils._TickFlagsType" > _TickFlagsType</ span ></ span >< span class = "p" > ()</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
2026-06-11 14:23:26 +00:00
< h3 id = "mt5cli.utils.TIMEFRAME_NAMES" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > TIMEFRAME_NAMES</ span >
2026-06-08 13:55:22 +00:00
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
2026-06-11 14:23:26 +00:00
< a href = "#mt5cli.utils.TIMEFRAME_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 = "n" > TIMEFRAME_NAMES</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "o" > ...</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" >< span title = "name" > name</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "k" > for</ span > < span class = "n" >< span title = "name" > name</ span ></ span > < span class = "ow" > in</ span > < span class = "n" >< span title = "pdmt5.TIMEFRAME_MAP" > TIMEFRAME_MAP</ span ></ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" >< span title = "name.startswith" > startswith</ span ></ span >< span class = "p" > (</ span >< span class = "s2" > " TIMEFRAME_" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "p" > )</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.utils.TIMEFRAME_TYPE" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > TIMEFRAME_TYPE</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.TIMEFRAME_TYPE" 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" > TIMEFRAME_TYPE</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "mt5cli.utils._TimeframeType" > _TimeframeType</ span ></ span >< span class = "p" > ()</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.utils.Dataset" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > Dataset</ span >
< a href = "#mt5cli.utils.Dataset" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "enum.StrEnum" > StrEnum</ span ></ code ></ p >
< p > Datasets supported by the < code > collect-history</ code > command.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.Dataset.history_deals" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > history_deals</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.Dataset.history_deals" 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" > history_deals</ span > < span class = "o" > =</ span > < span class = "s1" > ' history-deals' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.Dataset.history_orders" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > history_orders</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.Dataset.history_orders" 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" > history_orders</ span > < span class = "o" > =</ span > < span class = "s1" > ' history-orders' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.Dataset.rates" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > rates</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.Dataset.rates" 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" > rates</ span > < span class = "o" > =</ span > < span class = "s1" > ' rates' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.Dataset.table_name" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > table_name</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-property" >< code > property</ code ></ small >
</ span >
< a href = "#mt5cli.utils.Dataset.table_name" 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" > table_name</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return the SQLite table name for this dataset.</ p >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.Dataset.ticks" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > ticks</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.Dataset.ticks" 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" > ticks</ span > < span class = "o" > =</ span > < span class = "s1" > ' ticks' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.utils.IfExists" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > IfExists</ span >
< a href = "#mt5cli.utils.IfExists" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "enum.StrEnum" > StrEnum</ span ></ code ></ p >
< p > SQLite table conflict behavior for the < code > collect-history</ code > command.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.IfExists.APPEND" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > APPEND</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.IfExists.APPEND" 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" > APPEND</ span > < span class = "o" > =</ span > < span class = "s1" > ' append' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.IfExists.FAIL" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > FAIL</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.IfExists.FAIL" 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" > FAIL</ span > < span class = "o" > =</ span > < span class = "s1" > ' fail' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.IfExists.REPLACE" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > REPLACE</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.IfExists.REPLACE" 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" > REPLACE</ span > < span class = "o" > =</ span > < span class = "s1" > ' replace' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.utils.LogLevel" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > LogLevel</ span >
< a href = "#mt5cli.utils.LogLevel" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "enum.StrEnum" > StrEnum</ span ></ code ></ p >
< p > Logging verbosity levels.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.LogLevel.DEBUG" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > DEBUG</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.LogLevel.DEBUG" 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" > DEBUG</ span > < span class = "o" > =</ span > < span class = "s1" > ' DEBUG' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.LogLevel.ERROR" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > ERROR</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.LogLevel.ERROR" 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" > ERROR</ span > < span class = "o" > =</ span > < span class = "s1" > ' ERROR' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.LogLevel.INFO" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > INFO</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.LogLevel.INFO" 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" > INFO</ span > < span class = "o" > =</ span > < span class = "s1" > ' INFO' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.LogLevel.WARNING" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > WARNING</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.LogLevel.WARNING" 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" > WARNING</ span > < span class = "o" > =</ span > < span class = "s1" > ' WARNING' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.utils.OutputFormat" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > OutputFormat</ span >
< a href = "#mt5cli.utils.OutputFormat" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "enum.StrEnum" > StrEnum</ span ></ code ></ p >
< p > Supported output file formats.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.OutputFormat.csv" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > csv</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.OutputFormat.csv" 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" > csv</ span > < span class = "o" > =</ span > < span class = "s1" > ' csv' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.OutputFormat.json" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > json</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.OutputFormat.json" 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" > json</ span > < span class = "o" > =</ span > < span class = "s1" > ' json' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.OutputFormat.parquet" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > parquet</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.OutputFormat.parquet" 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" > parquet</ span > < span class = "o" > =</ span > < span class = "s1" > ' parquet' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.utils.OutputFormat.sqlite3" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > sqlite3</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-class-attribute" >< code > class-attribute</ code ></ small >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.utils.OutputFormat.sqlite3" 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" > sqlite3</ span > < span class = "o" > =</ span > < span class = "s1" > ' sqlite3' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-14 17:47:52 +00:00
< h3 id = "mt5cli.utils.coerce_login" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > coerce_login</ span >
< a href = "#mt5cli.utils.coerce_login" 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" > coerce_login</ span >< span class = "p" > (</ span >< span class = "n" > login</ 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 = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Coerce a login value to int, treating empty strings as unset.</ 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 = "int" > int</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Integer login, or None when unset or an empty string.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-243" > 243</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-244" > 244</ a ></ span >
2026-06-14 17:47:52 +00:00
< 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 >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-253" > 253</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-254" > 254</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-243" name = "__codelineno-0-243" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > coerce_login</ span >< span class = "p" > (</ span >< span class = "n" > login</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-244" name = "__codelineno-0-244" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Coerce a login value to int, treating empty strings as unset.</ 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" > Integer login, or None when unset or an empty string.</ span >
< a id = "__codelineno-0-248" name = "__codelineno-0-248" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-249" name = "__codelineno-0-249" ></ a > < span class = "k" > if</ span > < span class = "n" > login</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "ow" > or</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > login</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-250" name = "__codelineno-0-250" ></ a > < span class = "k" > return</ span > < span class = "n" > login</ span >
< a id = "__codelineno-0-251" name = "__codelineno-0-251" ></ a > < span class = "n" > text</ span > < span class = "o" > =</ span > < span class = "n" > login</ span >< span class = "o" > .</ span >< span class = "n" > strip</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-252" name = "__codelineno-0-252" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > text</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-253" name = "__codelineno-0-253" ></ a > < span class = "k" > return</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-254" name = "__codelineno-0-254" ></ a > < span class = "k" > return</ span > < span class = "nb" > int</ span >< span class = "p" > (</ span >< span class = "n" > text</ span >< span class = "p" > )</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-08 13:55:22 +00:00
< h3 id = "mt5cli.utils.detect_format" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > detect_format</ span >
< a href = "#mt5cli.utils.detect_format" 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" > detect_format</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > output_path</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pathlib.Path" > Path</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > explicit_format</ 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 >
< 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 = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Detect the output format from a file extension or explicit format string.</ 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 > output_path</ code >
</ td >
< td >
< code >< span title = "pathlib.Path" > Path</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Path to the output file.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > explicit_format</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Explicitly specified format, if any.</ 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 = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > The detected format string.</ 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 the format cannot be determined.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-215" > 215</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-216" > 216</ a ></ span >
2026-06-11 14:23:26 +00:00
< span class = "normal" >< a href = "#__codelineno-0-217" > 217</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-218" > 218</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-219" > 219</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-220" > 220</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-221" > 221</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-222" > 222</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-223" > 223</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-224" > 224</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-225" > 225</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-226" > 226</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-227" > 227</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-228" > 228</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-229" > 229</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-230" > 230</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-231" > 231</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-232" > 232</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-233" > 233</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-234" > 234</ a ></ span >
< 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 >
2026-06-08 13:55:22 +00:00
< span class = "normal" >< a href = "#__codelineno-0-238" > 238</ a ></ span >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-239" > 239</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-240" > 240</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-215" name = "__codelineno-0-215" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > detect_format</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-216" name = "__codelineno-0-216" ></ a > < span class = "n" > output_path</ span >< span class = "p" > :</ span > < span class = "n" > Path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-217" name = "__codelineno-0-217" ></ a > < span class = "n" > explicit_format</ 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-218" name = "__codelineno-0-218" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > str</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-219" name = "__codelineno-0-219" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Detect the output format from a file extension or explicit format string.</ span >
< a id = "__codelineno-0-220" name = "__codelineno-0-220" ></ a >
< a id = "__codelineno-0-221" name = "__codelineno-0-221" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-222" name = "__codelineno-0-222" ></ a >< span class = "sd" > output_path: Path to the output file.</ span >
< a id = "__codelineno-0-223" name = "__codelineno-0-223" ></ a >< span class = "sd" > explicit_format: Explicitly specified format, if any.</ span >
< a id = "__codelineno-0-224" name = "__codelineno-0-224" ></ a >
< a id = "__codelineno-0-225" name = "__codelineno-0-225" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-226" name = "__codelineno-0-226" ></ a >< span class = "sd" > The detected format string.</ span >
< a id = "__codelineno-0-227" name = "__codelineno-0-227" ></ a >
< a id = "__codelineno-0-228" name = "__codelineno-0-228" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-229" name = "__codelineno-0-229" ></ a >< span class = "sd" > ValueError: If the format cannot be determined.</ span >
< a id = "__codelineno-0-230" name = "__codelineno-0-230" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-231" name = "__codelineno-0-231" ></ a > < span class = "k" > if</ span > < span class = "n" > explicit_format</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-232" name = "__codelineno-0-232" ></ a > < span class = "k" > return</ span > < span class = "n" > explicit_format</ span >
< a id = "__codelineno-0-233" name = "__codelineno-0-233" ></ a > < span class = "n" > suffix</ span > < span class = "o" > =</ span > < span class = "n" > output_path</ span >< span class = "o" > .</ span >< span class = "n" > suffix</ span >< span class = "o" > .</ span >< span class = "n" > lower</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-234" name = "__codelineno-0-234" ></ a > < span class = "k" > if</ span > < span class = "n" > suffix</ span > < span class = "ow" > in</ span > < span class = "n" > _FORMAT_EXTENSIONS</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-235" name = "__codelineno-0-235" ></ a > < span class = "k" > return</ span > < span class = "n" > _FORMAT_EXTENSIONS</ span >< span class = "p" > [</ span >< span class = "n" > suffix</ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-236" name = "__codelineno-0-236" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-237" name = "__codelineno-0-237" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Cannot detect format from extension ' </ span >< span class = "si" > {</ span >< span class = "n" > suffix</ span >< span class = "si" > }</ span >< span class = "s2" > ' ." </ span >
< a id = "__codelineno-0-238" name = "__codelineno-0-238" ></ a > < span class = "s2" > " Use --format to specify the output format." </ span >
< a id = "__codelineno-0-239" name = "__codelineno-0-239" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-240" name = "__codelineno-0-240" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.utils.export_dataframe" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > export_dataframe</ span >
< a href = "#mt5cli.utils.export_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" > export_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > df</ 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" > output_path</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pathlib.Path" > Path</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > output_format</ 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" > table_name</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > =</ span > < span class = "s2" > " data" </ 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 = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Export a pandas DataFrame to the specified file format.</ 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</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame to export.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > output_path</ code >
</ td >
< td >
< code >< span title = "pathlib.Path" > Path</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Path to the output file.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > output_format</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Output format (csv, json, parquet, or sqlite3).</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > table_name</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Table name for SQLite3 output.</ p >
</ div >
</ td >
< td >
< code > ' data' </ code >
</ 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 >
2026-06-25 05:04:06 +00:00
< tr class = "doc-section-item" >
< td >
< code >< span title = "ImportError" > ImportError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If the parquet format is requested but pyarrow is not installed.</ p >
</ div >
</ td >
</ tr >
2026-06-08 13:55:22 +00:00
< tr class = "doc-section-item" >
< td >
< code >< span title = "ValueError" > ValueError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If the output format is not supported.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-301" > 301</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-302" > 302</ a ></ span >
2026-06-11 14:23:26 +00:00
< span class = "normal" >< a href = "#__codelineno-0-303" > 303</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-304" > 304</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-305" > 305</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-306" > 306</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-307" > 307</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-308" > 308</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-309" > 309</ a ></ span >
2026-06-08 18:29:32 +00:00
< span class = "normal" >< a href = "#__codelineno-0-310" > 310</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-311" > 311</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-312" > 312</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-313" > 313</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-314" > 314</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-315" > 315</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-316" > 316</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-317" > 317</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-318" > 318</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-319" > 319</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-320" > 320</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-321" > 321</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-322" > 322</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-323" > 323</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-324" > 324</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-325" > 325</ a ></ span >
2026-06-14 17:47:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-326" > 326</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-327" > 327</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-328" > 328</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-329" > 329</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-330" > 330</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-331" > 331</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-332" > 332</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-333" > 333</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-334" > 334</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-335" > 335</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-336" > 336</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-337" > 337</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-338" > 338</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-339" > 339</ a ></ span >
2026-06-25 05:04:06 +00:00
< span class = "normal" >< a href = "#__codelineno-0-340" > 340</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-341" > 341</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-342" > 342</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-343" > 343</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-344" > 344</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-345" > 345</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-346" > 346</ a ></ span >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-347" > 347</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-348" > 348</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-301" name = "__codelineno-0-301" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > export_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-302" name = "__codelineno-0-302" ></ a > < span class = "n" > df</ 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-303" name = "__codelineno-0-303" ></ a > < span class = "n" > output_path</ span >< span class = "p" > :</ span > < span class = "n" > Path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-304" name = "__codelineno-0-304" ></ a > < span class = "n" > output_format</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-305" name = "__codelineno-0-305" ></ a > < span class = "n" > table_name</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span > < span class = "o" > =</ span > < span class = "s2" > " data" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-306" name = "__codelineno-0-306" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-307" name = "__codelineno-0-307" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Export a pandas DataFrame to the specified file format.</ span >
< a id = "__codelineno-0-308" name = "__codelineno-0-308" ></ a >
< a id = "__codelineno-0-309" name = "__codelineno-0-309" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-310" name = "__codelineno-0-310" ></ a >< span class = "sd" > df: DataFrame to export.</ span >
< a id = "__codelineno-0-311" name = "__codelineno-0-311" ></ a >< span class = "sd" > output_path: Path to the output file.</ span >
< a id = "__codelineno-0-312" name = "__codelineno-0-312" ></ a >< span class = "sd" > output_format: Output format (csv, json, parquet, or sqlite3).</ span >
< a id = "__codelineno-0-313" name = "__codelineno-0-313" ></ a >< span class = "sd" > table_name: Table name for SQLite3 output.</ span >
< a id = "__codelineno-0-314" name = "__codelineno-0-314" ></ a >
< a id = "__codelineno-0-315" name = "__codelineno-0-315" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-316" name = "__codelineno-0-316" ></ a >< span class = "sd" > ImportError: If the parquet format is requested but pyarrow is not installed.</ span >
< a id = "__codelineno-0-317" name = "__codelineno-0-317" ></ a >< span class = "sd" > ValueError: If the output format is not supported.</ span >
< a id = "__codelineno-0-318" name = "__codelineno-0-318" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-319" name = "__codelineno-0-319" ></ a > < span class = "k" > if</ span > < span class = "n" > output_format</ span > < span class = "o" > ==</ span > < span class = "s2" > " csv" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-320" name = "__codelineno-0-320" ></ a > < span class = "n" > df</ span >< span class = "o" > .</ span >< span class = "n" > to_csv</ span >< span class = "p" > (</ span >< span class = "n" > output_path</ span >< span class = "p" > ,</ span > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-321" name = "__codelineno-0-321" ></ a > < span class = "k" > elif</ span > < span class = "n" > output_format</ span > < span class = "o" > ==</ span > < span class = "s2" > " json" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-322" name = "__codelineno-0-322" ></ a > < span class = "n" > df</ span >< span class = "o" > .</ span >< span class = "n" > to_json</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-323" name = "__codelineno-0-323" ></ a > < span class = "n" > output_path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-324" name = "__codelineno-0-324" ></ a > < span class = "n" > orient</ span >< span class = "o" > =</ span >< span class = "s2" > " records" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-325" name = "__codelineno-0-325" ></ a > < span class = "n" > date_format</ span >< span class = "o" > =</ span >< span class = "s2" > " iso" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-326" name = "__codelineno-0-326" ></ a > < span class = "n" > indent</ span >< span class = "o" > =</ span >< span class = "mi" > 2</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-327" name = "__codelineno-0-327" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-328" name = "__codelineno-0-328" ></ a > < span class = "k" > elif</ span > < span class = "n" > output_format</ span > < span class = "o" > ==</ span > < span class = "s2" > " parquet" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-329" name = "__codelineno-0-329" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-330" name = "__codelineno-0-330" ></ a > < span class = "nb" > __import__</ span >< span class = "p" > (</ span >< span class = "s2" > " pyarrow" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-331" name = "__codelineno-0-331" ></ a > < span class = "k" > except</ span > < span class = "ne" > ImportError</ span > < span class = "k" > as</ span > < span class = "n" > exc</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-332" name = "__codelineno-0-332" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-333" name = "__codelineno-0-333" ></ a > < span class = "s2" > " Parquet export requires the optional dependency pyarrow. " </ span >
< a id = "__codelineno-0-334" name = "__codelineno-0-334" ></ a > < span class = "s1" > ' Install it with: pip install " mt5cli[parquet]"' </ span >
< a id = "__codelineno-0-335" name = "__codelineno-0-335" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-336" name = "__codelineno-0-336" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ImportError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > exc</ span >
< a id = "__codelineno-0-337" name = "__codelineno-0-337" ></ a > < span class = "n" > df</ span >< span class = "o" > .</ span >< span class = "n" > to_parquet</ span >< span class = "p" > (</ span >< span class = "n" > output_path</ span >< span class = "p" > ,</ span > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-338" name = "__codelineno-0-338" ></ a > < span class = "k" > elif</ span > < span class = "n" > output_format</ span > < span class = "o" > ==</ span > < span class = "s2" > " sqlite3" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-339" name = "__codelineno-0-339" ></ a > < span class = "n" > export_dataframe_to_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-340" name = "__codelineno-0-340" ></ a > < span class = "n" > df</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-341" name = "__codelineno-0-341" ></ a > < span class = "n" > output_path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-342" name = "__codelineno-0-342" ></ a > < span class = "n" > table_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-343" name = "__codelineno-0-343" ></ a > < span class = "n" > if_exists</ span >< span class = "o" > =</ span >< span class = "n" > IfExists</ span >< span class = "o" > .</ span >< span class = "n" > REPLACE</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-344" name = "__codelineno-0-344" ></ a > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-345" name = "__codelineno-0-345" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-346" name = "__codelineno-0-346" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-347" name = "__codelineno-0-347" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Unsupported output format: </ span >< span class = "si" > {</ span >< span class = "n" > output_format</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-348" name = "__codelineno-0-348" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ 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.utils.export_dataframe_to_sqlite" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > export_dataframe_to_sqlite</ span >
< a href = "#mt5cli.utils.export_dataframe_to_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" > export_dataframe_to_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > df</ 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" > output_path</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pathlib.Path" > Path</ 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 = "o" > =</ span > < span class = "s2" > " data" </ 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" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "#mt5cli.utils.IfExists" > IfExists</ a ></ span > < span class = "o" > =</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "APPEND
class-attribute
instance-attribute
(mt5cli.utils.IfExists.APPEND)" href = "#mt5cli.utils.IfExists.APPEND" > APPEND</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > index</ 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-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > index_label</ 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-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > deduplicate_on</ 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-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Write a DataFrame to SQLite with configurable append and deduplication.</ 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</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame to export.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > output_path</ code >
</ td >
< td >
< code >< span title = "pathlib.Path" > Path</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > SQLite database path.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > table_name</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Target table name.</ p >
</ div >
</ td >
< td >
< code > ' data' </ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > if_exists</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "IfExists (mt5cli.utils.IfExists)" href = "#mt5cli.utils.IfExists" > IfExists</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Conflict behavior when the table already exists.</ p >
</ div >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "APPEND
class-attribute
instance-attribute
(mt5cli.utils.IfExists.APPEND)" href = "#mt5cli.utils.IfExists.APPEND" > APPEND</ a ></ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > index</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Whether to write the DataFrame index as a column.</ p >
</ div >
</ td >
< td >
< code > False</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > index_label</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Column name for the index when < code > index=True</ code > .</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > deduplicate_on</ 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 key columns to deduplicate after writing,
keeping the latest < code > ROWID</ code > per key group. Deduplication scans the
full table, so repeated appends cost O(table size); index the key
columns when appending frequently.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-257" > 257</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-258" > 258</ a ></ span >
2026-06-11 14:23:26 +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 >
2026-06-08 13:55:22 +00:00
< 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 >
< span class = "normal" >< a href = "#__codelineno-0-276" > 276</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-277" > 277</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-278" > 278</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-279" > 279</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-280" > 280</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-281" > 281</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-282" > 282</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-283" > 283</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-284" > 284</ a ></ span >
2026-06-14 17:47:52 +00:00
< 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 >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-297" > 297</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-298" > 298</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-257" name = "__codelineno-0-257" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > export_dataframe_to_sqlite</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-258" name = "__codelineno-0-258" ></ a > < span class = "n" > df</ 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-259" name = "__codelineno-0-259" ></ a > < span class = "n" > output_path</ span >< span class = "p" > :</ span > < span class = "n" > Path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-260" name = "__codelineno-0-260" ></ a > < span class = "n" > table_name</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span > < span class = "o" > =</ span > < span class = "s2" > " data" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-261" name = "__codelineno-0-261" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-262" name = "__codelineno-0-262" ></ a > < span class = "n" > if_exists</ span >< span class = "p" > :</ span > < span class = "n" > IfExists</ span > < span class = "o" > =</ span > < span class = "n" > IfExists</ span >< span class = "o" > .</ span >< span class = "n" > APPEND</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-263" name = "__codelineno-0-263" ></ a > < span class = "n" > index</ 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-264" name = "__codelineno-0-264" ></ a > < span class = "n" > index_label</ 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-265" name = "__codelineno-0-265" ></ a > < span class = "n" > deduplicate_on</ 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-266" name = "__codelineno-0-266" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-267" name = "__codelineno-0-267" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Write a DataFrame to SQLite with configurable append and deduplication.</ span >
< a id = "__codelineno-0-268" name = "__codelineno-0-268" ></ a >
< a id = "__codelineno-0-269" name = "__codelineno-0-269" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-270" name = "__codelineno-0-270" ></ a >< span class = "sd" > df: DataFrame to export.</ span >
< a id = "__codelineno-0-271" name = "__codelineno-0-271" ></ a >< span class = "sd" > output_path: SQLite database path.</ span >
< a id = "__codelineno-0-272" name = "__codelineno-0-272" ></ a >< span class = "sd" > table_name: Target table name.</ span >
< a id = "__codelineno-0-273" name = "__codelineno-0-273" ></ a >< span class = "sd" > if_exists: Conflict behavior when the table already exists.</ span >
< a id = "__codelineno-0-274" name = "__codelineno-0-274" ></ a >< span class = "sd" > index: Whether to write the DataFrame index as a column.</ span >
< a id = "__codelineno-0-275" name = "__codelineno-0-275" ></ a >< span class = "sd" > index_label: Column name for the index when ``index=True``.</ span >
< a id = "__codelineno-0-276" name = "__codelineno-0-276" ></ a >< span class = "sd" > deduplicate_on: Optional key columns to deduplicate after writing,</ span >
< a id = "__codelineno-0-277" name = "__codelineno-0-277" ></ a >< span class = "sd" > keeping the latest ``ROWID`` per key group. Deduplication scans the</ span >
< a id = "__codelineno-0-278" name = "__codelineno-0-278" ></ a >< span class = "sd" > full table, so repeated appends cost O(table size); index the key</ span >
< a id = "__codelineno-0-279" name = "__codelineno-0-279" ></ a >< span class = "sd" > columns when appending frequently.</ span >
< a id = "__codelineno-0-280" name = "__codelineno-0-280" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-281" name = "__codelineno-0-281" ></ a > < span class = "k" > with</ span > < span class = "n" > closing</ span >< span class = "p" > (</ span >< span class = "n" > sqlite3</ span >< span class = "o" > .</ span >< span class = "n" > connect</ span >< span class = "p" > (</ span >< span class = "n" > output_path</ span >< span class = "p" > ))</ span > < span class = "k" > as</ span > < span class = "n" > conn</ span >< span class = "p" > ,</ span > < span class = "n" > conn</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-282" name = "__codelineno-0-282" ></ a > < span class = "n" > df</ 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-283" name = "__codelineno-0-283" ></ a > < span class = "n" > table_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-284" name = "__codelineno-0-284" ></ a > < span class = "n" > conn</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-285" name = "__codelineno-0-285" ></ 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-286" name = "__codelineno-0-286" ></ a > < span class = "n" > index</ span >< span class = "o" > =</ span >< span class = "n" > index</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-287" name = "__codelineno-0-287" ></ a > < span class = "n" > index_label</ span >< span class = "o" > =</ span >< span class = "n" > index_label</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-288" name = "__codelineno-0-288" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-289" name = "__codelineno-0-289" ></ a > < span class = "k" > if</ span > < span class = "n" > deduplicate_on</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-290" name = "__codelineno-0-290" ></ a > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > .history</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > drop_duplicates_in_table</ span > < span class = "c1" > # noqa: PLC0415</ span >
< a id = "__codelineno-0-291" name = "__codelineno-0-291" ></ a >
< a id = "__codelineno-0-292" name = "__codelineno-0-292" ></ a > < span class = "n" > drop_duplicates_in_table</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-293" name = "__codelineno-0-293" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > cursor</ span >< span class = "p" > (),</ span >
< a id = "__codelineno-0-294" name = "__codelineno-0-294" ></ a > < span class = "n" > table_name</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-295" name = "__codelineno-0-295" ></ a > < span class = "nb" > list</ span >< span class = "p" > (</ span >< span class = "n" > deduplicate_on</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-296" name = "__codelineno-0-296" ></ a > < span class = "n" > keep</ span >< span class = "o" > =</ span >< span class = "s2" > " last" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-297" name = "__codelineno-0-297" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-298" name = "__codelineno-0-298" ></ a > < span class = "n" > conn</ span >< span class = "o" > .</ span >< span class = "n" > commit</ span >< span class = "p" > ()</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.utils.parse_datetime" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > parse_datetime</ span >
< a href = "#mt5cli.utils.parse_datetime" 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" > parse_datetime</ span >< span class = "p" > (</ span >< span class = "n" > value</ 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 = "datetime.datetime" > datetime</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Parse an ISO 8601 datetime string to a timezone-aware datetime.</ 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 > value</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > ISO 8601 datetime string (e.g., '2024-01-01' or
'2024-01-01T12:00:00+00:00').</ 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 = "datetime.datetime" > datetime</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Parsed datetime with UTC timezone if no timezone is specified.</ 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 the string cannot be parsed.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-351" > 351</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-352" > 352</ a ></ span >
2026-06-14 17:47:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-353" > 353</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-354" > 354</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-355" > 355</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-356" > 356</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-357" > 357</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-358" > 358</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-359" > 359</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-360" > 360</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-361" > 361</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-362" > 362</ a ></ span >
2026-06-25 05:04:06 +00:00
< span class = "normal" >< a href = "#__codelineno-0-363" > 363</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-364" > 364</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-365" > 365</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-366" > 366</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-367" > 367</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-368" > 368</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-369" > 369</ a ></ span >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-370" > 370</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-371" > 371</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-351" name = "__codelineno-0-351" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > parse_datetime</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > datetime</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-352" name = "__codelineno-0-352" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Parse an ISO 8601 datetime string to a timezone-aware datetime.</ span >
< a id = "__codelineno-0-353" name = "__codelineno-0-353" ></ a >
< a id = "__codelineno-0-354" name = "__codelineno-0-354" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-355" name = "__codelineno-0-355" ></ a >< span class = "sd" > value: ISO 8601 datetime string (e.g., ' 2024-01-01' or</ span >
< a id = "__codelineno-0-356" name = "__codelineno-0-356" ></ a >< span class = "sd" > ' 2024-01-01T12:00:00+00:00' ).</ span >
< a id = "__codelineno-0-357" name = "__codelineno-0-357" ></ a >
< a id = "__codelineno-0-358" name = "__codelineno-0-358" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-359" name = "__codelineno-0-359" ></ a >< span class = "sd" > Parsed datetime with UTC timezone if no timezone is specified.</ span >
< a id = "__codelineno-0-360" name = "__codelineno-0-360" ></ a >
< a id = "__codelineno-0-361" name = "__codelineno-0-361" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-362" name = "__codelineno-0-362" ></ a >< span class = "sd" > ValueError: If the string cannot be parsed.</ span >
< a id = "__codelineno-0-363" name = "__codelineno-0-363" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-364" name = "__codelineno-0-364" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-365" name = "__codelineno-0-365" ></ a > < span class = "n" > dt</ span > < span class = "o" > =</ span > < span class = "n" > datetime</ span >< span class = "o" > .</ span >< span class = "n" > fromisoformat</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-366" name = "__codelineno-0-366" ></ a > < span class = "k" > except</ span > < span class = "ne" > ValueError</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-367" name = "__codelineno-0-367" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Invalid datetime format: ' </ span >< span class = "si" > {</ span >< span class = "n" > value</ span >< span class = "si" > }</ span >< span class = "s2" > ' . Use ISO 8601 format." </ span >
< a id = "__codelineno-0-368" name = "__codelineno-0-368" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "kc" > None</ span >
< a id = "__codelineno-0-369" name = "__codelineno-0-369" ></ a > < span class = "k" > if</ span > < span class = "n" > dt</ span >< span class = "o" > .</ span >< span class = "n" > tzinfo</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-370" name = "__codelineno-0-370" ></ a > < span class = "n" > dt</ span > < span class = "o" > =</ span > < span class = "n" > dt</ 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-371" name = "__codelineno-0-371" ></ a > < span class = "k" > return</ span > < span class = "n" > dt</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.utils.parse_request" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > parse_request</ span >
< a href = "#mt5cli.utils.parse_request" 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" > parse_request</ span >< span class = "p" > (</ span >< span class = "n" > value</ 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 = "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 = "typing.Any" > Any</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Parse a JSON-formatted order request string or file reference.</ 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 > value</ code >
</ td >
< td >
< code >< span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > JSON object string, or '@path' to read JSON from a file.</ 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 = "dict" > dict</ span > [< span title = "str" > str</ span > , < span title = "typing.Any" > Any</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Parsed request dictionary.</ 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 the request file cannot be read or the value is not a
JSON object.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-426" > 426</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-427" > 427</ a ></ span >
2026-06-08 18:29:32 +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-14 17:47:52 +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 >
2026-06-25 05:04:06 +00:00
< 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 >
< span class = "normal" >< a href = "#__codelineno-0-451" > 451</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-452" > 452</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-453" > 453</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-454" > 454</ a ></ span >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-455" > 455</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-456" > 456</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-426" name = "__codelineno-0-426" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > parse_request</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "n" > Any</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-427" name = "__codelineno-0-427" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Parse a JSON-formatted order request string or file reference.</ span >
< a id = "__codelineno-0-428" name = "__codelineno-0-428" ></ a >
< a id = "__codelineno-0-429" name = "__codelineno-0-429" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-430" name = "__codelineno-0-430" ></ a >< span class = "sd" > value: JSON object string, or ' @path' to read JSON from a file.</ span >
< a id = "__codelineno-0-431" name = "__codelineno-0-431" ></ a >
< a id = "__codelineno-0-432" name = "__codelineno-0-432" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-433" name = "__codelineno-0-433" ></ a >< span class = "sd" > Parsed request dictionary.</ span >
< a id = "__codelineno-0-434" name = "__codelineno-0-434" ></ a >
< a id = "__codelineno-0-435" name = "__codelineno-0-435" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-436" name = "__codelineno-0-436" ></ a >< span class = "sd" > ValueError: If the request file cannot be read or the value is not a</ span >
< a id = "__codelineno-0-437" name = "__codelineno-0-437" ></ a >< span class = "sd" > JSON object.</ span >
< a id = "__codelineno-0-438" name = "__codelineno-0-438" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-439" name = "__codelineno-0-439" ></ a > < span class = "k" > if</ span > < span class = "n" > value</ span >< span class = "o" > .</ span >< span class = "n" > startswith</ span >< span class = "p" > (</ span >< span class = "s2" > " @" </ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-440" name = "__codelineno-0-440" ></ a > < span class = "n" > path</ span > < span class = "o" > =</ span > < span class = "n" > Path</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > [</ span >< span class = "mi" > 1</ span >< span class = "p" > :])</ span >
< a id = "__codelineno-0-441" name = "__codelineno-0-441" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-442" name = "__codelineno-0-442" ></ a > < span class = "n" > text</ span > < span class = "o" > =</ span > < span class = "n" > path</ span >< span class = "o" > .</ span >< span class = "n" > read_text</ span >< span class = "p" > (</ span >< span class = "n" > encoding</ span >< span class = "o" > =</ span >< span class = "s2" > " utf-8" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-443" name = "__codelineno-0-443" ></ a > < span class = "k" > except</ span > < span class = "p" > (</ span >< span class = "ne" > OSError</ span >< span class = "p" > ,</ span > < span class = "ne" > UnicodeDecodeError</ span >< span class = "p" > )</ span > < span class = "k" > as</ span > < span class = "n" > exc</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-444" name = "__codelineno-0-444" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Failed to read JSON request file ' </ span >< span class = "si" > {</ span >< span class = "n" > path</ span >< span class = "si" > }</ span >< span class = "s2" > ' : </ span >< span class = "si" > {</ span >< span class = "n" > exc</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-445" name = "__codelineno-0-445" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > exc</ span >
< a id = "__codelineno-0-446" name = "__codelineno-0-446" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-447" name = "__codelineno-0-447" ></ a > < span class = "n" > text</ span > < span class = "o" > =</ span > < span class = "n" > value</ span >
< a id = "__codelineno-0-448" name = "__codelineno-0-448" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-449" name = "__codelineno-0-449" ></ a > < span class = "n" > parsed</ span >< span class = "p" > :</ span > < span class = "nb" > object</ span > < span class = "o" > =</ span > < span class = "n" > json</ span >< span class = "o" > .</ span >< span class = "n" > loads</ span >< span class = "p" > (</ span >< span class = "n" > text</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-450" name = "__codelineno-0-450" ></ a > < span class = "k" > except</ span > < span class = "n" > json</ span >< span class = "o" > .</ span >< span class = "n" > JSONDecodeError</ span > < span class = "k" > as</ span > < span class = "n" > exc</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-451" name = "__codelineno-0-451" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Invalid JSON request: </ span >< span class = "si" > {</ span >< span class = "n" > exc</ span >< span class = "si" > }</ span >< span class = "s2" > " </ span >
< a id = "__codelineno-0-452" name = "__codelineno-0-452" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > exc</ span >
< a id = "__codelineno-0-453" name = "__codelineno-0-453" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > _is_request_dict</ span >< span class = "p" > (</ span >< span class = "n" > parsed</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-454" name = "__codelineno-0-454" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " Order request must be a JSON object." </ span >
< a id = "__codelineno-0-455" name = "__codelineno-0-455" ></ 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-456" name = "__codelineno-0-456" ></ a > < span class = "k" > return</ span > < span class = "n" > parsed</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.utils.parse_tick_flags" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > parse_tick_flags</ span >
< a href = "#mt5cli.utils.parse_tick_flags" 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 = "nf" > parse_tick_flags</ 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 = "int" > int</ span ></ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Parse tick flags string or integer value.</ 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 > value</ code >
</ td >
< td >
2026-06-11 14:23:26 +00:00
< code >< span title = "object" > object</ span ></ code >
2026-06-08 13:55:22 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-11 14:23:26 +00:00
< p > Tick flag name (ALL, INFO, TRADE, COPY_TICKS_*) or integer value.</ p >
2026-06-08 13:55:22 +00:00
</ 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 = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
2026-06-11 14:23:26 +00:00
< p > Integer tick flag value compatible with MetaTrader 5 < code > COPY_TICKS_*</ code > .</ p >
2026-06-08 13:55:22 +00:00
</ 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 the flag is invalid.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-398" > 398</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-399" > 399</ a ></ span >
2026-06-14 17:47:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-400" > 400</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-401" > 401</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-402" > 402</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-403" > 403</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-404" > 404</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-405" > 405</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-406" > 406</ a ></ span >
< 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 >
2026-06-25 05:04:06 +00:00
< 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 >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-418" > 418</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-419" > 419</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-398" name = "__codelineno-0-398" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > parse_tick_flags</ 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 = "nb" > int</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-399" name = "__codelineno-0-399" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Parse tick flags string or integer value.</ span >
< a id = "__codelineno-0-400" name = "__codelineno-0-400" ></ a >
< a id = "__codelineno-0-401" name = "__codelineno-0-401" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-402" name = "__codelineno-0-402" ></ a >< span class = "sd" > value: Tick flag name (ALL, INFO, TRADE, COPY_TICKS_*) or integer value.</ span >
< a id = "__codelineno-0-403" name = "__codelineno-0-403" ></ a >
< a id = "__codelineno-0-404" name = "__codelineno-0-404" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-405" name = "__codelineno-0-405" ></ a >< span class = "sd" > Integer tick flag value compatible with MetaTrader 5 ``COPY_TICKS_*``.</ span >
< a id = "__codelineno-0-406" name = "__codelineno-0-406" ></ a >
< a id = "__codelineno-0-407" name = "__codelineno-0-407" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-408" name = "__codelineno-0-408" ></ a >< span class = "sd" > ValueError: If the flag is invalid.</ span >
< a id = "__codelineno-0-409" name = "__codelineno-0-409" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-410" name = "__codelineno-0-410" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-411" name = "__codelineno-0-411" ></ a > < span class = "k" > return</ span > < span class = "n" > _parse_copy_ticks</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-412" name = "__codelineno-0-412" ></ a > < span class = "k" > except</ span > < span class = "ne" > ValueError</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-413" name = "__codelineno-0-413" ></ a > < span class = "n" > display</ span > < span class = "o" > =</ span > < span class = "n" > value</ span > < span class = "k" > if</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "k" > else</ span > < span class = "nb" > repr</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-414" name = "__codelineno-0-414" ></ a > < span class = "n" > valid</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "n" > _TICK_FLAG_NAMES</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-415" name = "__codelineno-0-415" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-416" name = "__codelineno-0-416" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Invalid tick flags: ' </ span >< span class = "si" > {</ span >< span class = "n" > display</ span >< span class = "si" > }</ span >< span class = "s2" > ' . " </ span >
< a id = "__codelineno-0-417" name = "__codelineno-0-417" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Use one of: </ span >< span class = "si" > {</ span >< span class = "n" > valid</ span >< span class = "si" > }</ span >< span class = "s2" > , or a supported integer." </ span >
< a id = "__codelineno-0-418" name = "__codelineno-0-418" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-419" name = "__codelineno-0-419" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "kc" > None</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.utils.parse_timeframe" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > parse_timeframe</ span >
< a href = "#mt5cli.utils.parse_timeframe" 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 = "nf" > parse_timeframe</ 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 = "int" > int</ span ></ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Parse a timeframe string or integer value.</ 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 > value</ code >
</ td >
< td >
2026-06-11 14:23:26 +00:00
< code >< span title = "object" > object</ span ></ code >
2026-06-08 13:55:22 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Timeframe name (e.g., 'M1', 'H1', 'D1') or integer value.</ 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 = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Integer timeframe value.</ 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 the timeframe is invalid.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/utils.py</ code ></ summary >
2026-06-27 22:56:08 +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-374" > 374</ a ></ span >
2026-06-26 03:08:57 +00:00
< span class = "normal" >< a href = "#__codelineno-0-375" > 375</ a ></ span >
2026-06-14 17:47:52 +00:00
< span class = "normal" >< a href = "#__codelineno-0-376" > 376</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-377" > 377</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-378" > 378</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-379" > 379</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-380" > 380</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-381" > 381</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-382" > 382</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-383" > 383</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-384" > 384</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-385" > 385</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-386" > 386</ a ></ span >
2026-06-25 05:04:06 +00:00
< span class = "normal" >< a href = "#__codelineno-0-387" > 387</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-388" > 388</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-389" > 389</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-390" > 390</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-391" > 391</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-392" > 392</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-393" > 393</ a ></ span >
2026-06-27 22:56:08 +00:00
< span class = "normal" >< a href = "#__codelineno-0-394" > 394</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-395" > 395</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-374" name = "__codelineno-0-374" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > parse_timeframe</ 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 = "nb" > int</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-375" name = "__codelineno-0-375" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Parse a timeframe string or integer value.</ span >
< a id = "__codelineno-0-376" name = "__codelineno-0-376" ></ a >
< a id = "__codelineno-0-377" name = "__codelineno-0-377" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-378" name = "__codelineno-0-378" ></ a >< span class = "sd" > value: Timeframe name (e.g., ' M1' , ' H1' , ' D1' ) or integer value.</ span >
< a id = "__codelineno-0-379" name = "__codelineno-0-379" ></ a >
< a id = "__codelineno-0-380" name = "__codelineno-0-380" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-381" name = "__codelineno-0-381" ></ a >< span class = "sd" > Integer timeframe value.</ span >
< a id = "__codelineno-0-382" name = "__codelineno-0-382" ></ a >
< a id = "__codelineno-0-383" name = "__codelineno-0-383" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-384" name = "__codelineno-0-384" ></ a >< span class = "sd" > ValueError: If the timeframe is invalid.</ span >
< a id = "__codelineno-0-385" name = "__codelineno-0-385" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-386" name = "__codelineno-0-386" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-387" name = "__codelineno-0-387" ></ a > < span class = "k" > return</ span > < span class = "n" > _parse_timeframe</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-388" name = "__codelineno-0-388" ></ a > < span class = "k" > except</ span > < span class = "ne" > ValueError</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-389" name = "__codelineno-0-389" ></ a > < span class = "n" > display</ span > < span class = "o" > =</ span > < span class = "n" > value</ span > < span class = "k" > if</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "k" > else</ span > < span class = "nb" > repr</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-390" name = "__codelineno-0-390" ></ a > < span class = "n" > valid</ span > < span class = "o" > =</ span > < span class = "s2" > " , " </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "n" > TIMEFRAME_NAMES</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-391" name = "__codelineno-0-391" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-392" name = "__codelineno-0-392" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Invalid timeframe: ' </ span >< span class = "si" > {</ span >< span class = "n" > display</ span >< span class = "si" > }</ span >< span class = "s2" > ' . " </ span >
< a id = "__codelineno-0-393" name = "__codelineno-0-393" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " Use one of: </ span >< span class = "si" > {</ span >< span class = "n" > valid</ span >< span class = "si" > }</ span >< span class = "s2" > , or a supported integer." </ span >
< a id = "__codelineno-0-394" name = "__codelineno-0-394" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-395" name = "__codelineno-0-395" ></ a > < span class = "k" > raise</ span > < span class = "ne" > ValueError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span > < span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "kc" > None</ span >
2026-06-08 13:55:22 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
</ div >
</ div >
</ div ></ div >
</ 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 >