2026-06-12 16:32:35 +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/schemas/" >
< link rel = "shortcut icon" href = "../../img/favicon.ico" >
< title > Schemas - 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 = "./" class = "dropdown-item active" aria-current = "page" > Schemas</ a >
</ li >
< li >
< a href = "../storage/" class = "dropdown-item" > Storage</ a >
</ li >
< li >
< a href = "../converters/" class = "dropdown-item" > Converters</ a >
</ li >
< li >
< a href = "../exceptions/" class = "dropdown-item" > Exceptions</ a >
</ li >
< li >
< a href = "../cli/" class = "dropdown-item" > CLI</ a >
</ li >
< li >
< a href = "../sdk/" class = "dropdown-item" > SDK</ a >
</ li >
< li >
< a href = "../trading/" class = "dropdown-item" > Trading</ a >
</ li >
< li >
< a href = "../history/" class = "dropdown-item" > History Collection (SQLite)</ a >
</ li >
< li >
< a href = "../utils/" class = "dropdown-item" > Utils</ a >
</ li >
</ ul >
</ li >
</ ul >
< ul class = "nav navbar-nav ms-md-auto" >
< li class = "nav-item" >
< a href = "#" class = "nav-link" data-bs-toggle = "modal" data-bs-target = "#mkdocs_search_modal" >
< i class = "fa fa-search" ></ i > Search
</ a >
</ li >
< li class = "nav-item" >
< a rel = "prev" href = "../client/" class = "nav-link" >
< i class = "fa fa-arrow-left" ></ i > Previous
</ a >
</ li >
< li class = "nav-item" >
< a rel = "next" href = "../storage/" class = "nav-link" >
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/schemas.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 = "#schemas" class = "nav-link" > Schemas</ a >
< ul class = "nav flex-column" >
< li class = "nav-item" data-bs-level = "2" >< a href = "#mt5cli.schemas" class = "nav-link" > schemas</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
</ ul >
</ li >
</ ul >
</ div >
</ div ></ div >
< div class = "col-md-9" role = "main" >
< h1 id = "schemas" > Schemas< a class = "headerlink" href = "#schemas" title = "Permanent link" > ¶ </ a ></ h1 >
< div class = "doc doc-object doc-module" >
< h2 id = "mt5cli.schemas" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-module-name" > mt5cli.schemas</ span >
< a href = "#mt5cli.schemas" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h2 >
< div class = "doc doc-contents first" >
< p > Canonical DataFrame schemas for MT5 market and account datasets.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.schemas.DEDUP_KEYS" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > DEDUP_KEYS</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.schemas.DEDUP_KEYS" 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" > DEDUP_KEYS</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "tuple" > tuple</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "o" > ...</ span >< span class = "p" > ],</ span > < span class = "o" > ...</ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "rates
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.rates)" href = "#mt5cli.schemas.DataKind.rates" > rates</ a ></ span >< span class = "p" > :</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "ticks
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.ticks)" href = "#mt5cli.schemas.DataKind.ticks" > ticks</ a ></ span >< span class = "p" > :</ span > < span class = "p" > ((</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time_msc" </ span >< span class = "p" > ),</ span > < span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > )),</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "history_orders
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.history_orders)" href = "#mt5cli.schemas.DataKind.history_orders" > history_orders</ a ></ span >< span class = "p" > :</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "p" > (</ span >< span class = "s2" > " ticket" </ span >< span class = "p" > ,),</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span > < span class = "s2" > " type" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "history_deals
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.history_deals)" href = "#mt5cli.schemas.DataKind.history_deals" > history_deals</ a ></ span >< span class = "p" > :</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "p" > (</ span >< span class = "s2" > " ticket" </ span >< span class = "p" > ,),</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > < span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span > < span class = "s2" > " entry" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a >< span class = "p" > }</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.schemas.KNOWN_MT5_TIME_COLUMNS" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > KNOWN_MT5_TIME_COLUMNS</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.schemas.KNOWN_MT5_TIME_COLUMNS" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "n" > KNOWN_MT5_TIME_COLUMNS</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "typing.Final" > Final</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "s2" > " time_setup" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "s2" > " time_setup_msc" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "s2" > " time_done" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "s2" > " time_done_msc" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "s2" > " time_msc" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a >< span class = "p" > })</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.schemas.REQUIRED_COLUMNS" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > REQUIRED_COLUMNS</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.schemas.REQUIRED_COLUMNS" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "n" > REQUIRED_COLUMNS</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "rates
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.rates)" href = "#mt5cli.schemas.DataKind.rates" > rates</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "s2" > " open" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "s2" > " high" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "s2" > " low" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "s2" > " close" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "s2" > " tick_volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "s2" > " spread" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "s2" > " real_volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "ticks
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.ticks)" href = "#mt5cli.schemas.DataKind.ticks" > ticks</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a > < span class = "s2" > " bid" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a > < span class = "s2" > " ask" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-16" name = "__codelineno-0-16" href = "#__codelineno-0-16" ></ a > < span class = "s2" > " last" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-17" name = "__codelineno-0-17" href = "#__codelineno-0-17" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-18" name = "__codelineno-0-18" href = "#__codelineno-0-18" ></ a > < span class = "s2" > " time_msc" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-19" name = "__codelineno-0-19" href = "#__codelineno-0-19" ></ a > < span class = "s2" > " flags" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-20" name = "__codelineno-0-20" href = "#__codelineno-0-20" ></ a > < span class = "s2" > " volume_real" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-21" name = "__codelineno-0-21" href = "#__codelineno-0-21" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-22" name = "__codelineno-0-22" href = "#__codelineno-0-22" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "orders
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.orders)" href = "#mt5cli.schemas.DataKind.orders" > orders</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-23" name = "__codelineno-0-23" href = "#__codelineno-0-23" ></ a > < span class = "s2" > " ticket" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-24" name = "__codelineno-0-24" href = "#__codelineno-0-24" ></ a > < span class = "s2" > " time_setup" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-25" name = "__codelineno-0-25" href = "#__codelineno-0-25" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-26" name = "__codelineno-0-26" href = "#__codelineno-0-26" ></ a > < span class = "s2" > " state" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-27" name = "__codelineno-0-27" href = "#__codelineno-0-27" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-28" name = "__codelineno-0-28" href = "#__codelineno-0-28" ></ a > < span class = "s2" > " volume_current" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-29" name = "__codelineno-0-29" href = "#__codelineno-0-29" ></ a > < span class = "s2" > " price_open" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-30" name = "__codelineno-0-30" href = "#__codelineno-0-30" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-31" name = "__codelineno-0-31" href = "#__codelineno-0-31" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "positions
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.positions)" href = "#mt5cli.schemas.DataKind.positions" > positions</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-32" name = "__codelineno-0-32" href = "#__codelineno-0-32" ></ a > < span class = "s2" > " ticket" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-33" name = "__codelineno-0-33" href = "#__codelineno-0-33" ></ a > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-34" name = "__codelineno-0-34" href = "#__codelineno-0-34" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-35" name = "__codelineno-0-35" href = "#__codelineno-0-35" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-36" name = "__codelineno-0-36" href = "#__codelineno-0-36" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-37" name = "__codelineno-0-37" href = "#__codelineno-0-37" ></ a > < span class = "s2" > " price_open" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-38" name = "__codelineno-0-38" href = "#__codelineno-0-38" ></ a > < span class = "s2" > " price_current" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-39" name = "__codelineno-0-39" href = "#__codelineno-0-39" ></ a > < span class = "s2" > " profit" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-40" name = "__codelineno-0-40" href = "#__codelineno-0-40" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-41" name = "__codelineno-0-41" href = "#__codelineno-0-41" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "history_orders
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.history_orders)" href = "#mt5cli.schemas.DataKind.history_orders" > history_orders</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-42" name = "__codelineno-0-42" href = "#__codelineno-0-42" ></ a > < span class = "s2" > " ticket" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-43" name = "__codelineno-0-43" href = "#__codelineno-0-43" ></ a > < span class = "s2" > " time_setup" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-44" name = "__codelineno-0-44" href = "#__codelineno-0-44" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-45" name = "__codelineno-0-45" href = "#__codelineno-0-45" ></ a > < span class = "s2" > " state" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-46" name = "__codelineno-0-46" href = "#__codelineno-0-46" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-47" name = "__codelineno-0-47" href = "#__codelineno-0-47" ></ a > < span class = "s2" > " volume_initial" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-48" name = "__codelineno-0-48" href = "#__codelineno-0-48" ></ a > < span class = "s2" > " price_open" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-49" name = "__codelineno-0-49" href = "#__codelineno-0-49" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-50" name = "__codelineno-0-50" href = "#__codelineno-0-50" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "history_deals
class-attribute
instance-attribute
(mt5cli.schemas.DataKind.history_deals)" href = "#mt5cli.schemas.DataKind.history_deals" > history_deals</ a ></ span >< span class = "p" > :</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ({</ span >
< a id = "__codelineno-0-51" name = "__codelineno-0-51" href = "#__codelineno-0-51" ></ a > < span class = "s2" > " ticket" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-52" name = "__codelineno-0-52" href = "#__codelineno-0-52" ></ a > < span class = "s2" > " order" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-53" name = "__codelineno-0-53" href = "#__codelineno-0-53" ></ a > < span class = "s2" > " time" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-54" name = "__codelineno-0-54" href = "#__codelineno-0-54" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-55" name = "__codelineno-0-55" href = "#__codelineno-0-55" ></ a > < span class = "s2" > " entry" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-56" name = "__codelineno-0-56" href = "#__codelineno-0-56" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-57" name = "__codelineno-0-57" href = "#__codelineno-0-57" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-58" name = "__codelineno-0-58" href = "#__codelineno-0-58" ></ a > < span class = "s2" > " price" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-59" name = "__codelineno-0-59" href = "#__codelineno-0-59" ></ a > < span class = "s2" > " profit" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-60" name = "__codelineno-0-60" href = "#__codelineno-0-60" ></ a > < span class = "p" > }),</ span >
< a id = "__codelineno-0-61" name = "__codelineno-0-61" href = "#__codelineno-0-61" ></ a >< span class = "p" > }</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.schemas.TIME_COLUMNS" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > TIME_COLUMNS</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.schemas.TIME_COLUMNS" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "n" > TIME_COLUMNS</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]]</ span > < span class = "o" > =</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" >< span title = "kind" > kind</ span ></ span >< span class = "p" > :</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" >< a class = "autorefs autorefs-internal" title = "REQUIRED_COLUMNS
module-attribute
(mt5cli.schemas.REQUIRED_COLUMNS)" href = "#mt5cli.schemas.REQUIRED_COLUMNS" > REQUIRED_COLUMNS</ a ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "kind" > kind</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > & </ span > < span class = "n" >< span title = "mt5cli.schemas._TIME_COLUMN_NAMES" > _TIME_COLUMN_NAMES</ span ></ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > |</ span > < span class = "n" >< span title = "mt5cli.schemas._OPTIONAL_TIME_COLUMNS_BY_KIND.get" > get</ span ></ span >< span class = "p" > (</ span >< span class = "n" >< span title = "kind" > kind</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > ())</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "k" > for</ span > < span class = "n" >< span title = "kind" > kind</ span ></ span > < span class = "ow" > in</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > }</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.schemas.__all__" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > __all__</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.schemas.__all__" 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" > __all__</ span > < span class = "o" > =</ span > < span class = "p" > [</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "s2" > " DEDUP_KEYS" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "s2" > " KNOWN_MT5_TIME_COLUMNS" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "s2" > " REQUIRED_COLUMNS" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "s2" > " TIME_COLUMNS" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "s2" > " DataKind" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "s2" > " normalize_dataframe" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "s2" > " normalize_time_columns" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "s2" > " schema_columns" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "s2" > " validate_schema" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.schemas.DataKind" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > DataKind</ span >
< a href = "#mt5cli.schemas.DataKind" 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 MT5 dataset kinds with canonical column contracts.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.schemas.DataKind.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.schemas.DataKind.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.schemas.DataKind.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.schemas.DataKind.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.schemas.DataKind.orders" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > 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.schemas.DataKind.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" > orders</ span > < span class = "o" > =</ span > < span class = "s1" > ' orders' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.schemas.DataKind.positions" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > positions</ 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.schemas.DataKind.positions" 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" > positions</ span > < span class = "o" > =</ span > < span class = "s1" > ' positions' </ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.schemas.DataKind.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.schemas.DataKind.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.schemas.DataKind.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.schemas.DataKind.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-function" >
< h3 id = "mt5cli.schemas.ensure_utc_columns" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > ensure_utc_columns</ span >
< a href = "#mt5cli.schemas.ensure_utc_columns" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > ensure_utc_columns</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Iterable" > Iterable</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return a copy with selected columns coerced to UTC datetimes.</ 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 > frame</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Source DataFrame.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > columns</ code >
</ td >
< td >
< code >< span title = "collections.abc.Iterable" > Iterable</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Column names to coerce.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame copy with UTC-aware datetime columns.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/schemas.py</ code ></ summary >
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-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 >
< 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 ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-271" name = "__codelineno-0-271" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > ensure_utc_columns</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span > < span class = "n" > Iterable</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ])</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-272" name = "__codelineno-0-272" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return a copy with selected columns coerced to UTC datetimes.</ span >
< a id = "__codelineno-0-273" name = "__codelineno-0-273" ></ a >
< a id = "__codelineno-0-274" name = "__codelineno-0-274" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-275" name = "__codelineno-0-275" ></ a >< span class = "sd" > frame: Source DataFrame.</ span >
< a id = "__codelineno-0-276" name = "__codelineno-0-276" ></ a >< span class = "sd" > columns: Column names to coerce.</ span >
< a id = "__codelineno-0-277" name = "__codelineno-0-277" ></ a >
< a id = "__codelineno-0-278" name = "__codelineno-0-278" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-279" name = "__codelineno-0-279" ></ a >< span class = "sd" > DataFrame copy with UTC-aware datetime columns.</ 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 = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-282" name = "__codelineno-0-282" ></ a > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-283" name = "__codelineno-0-283" ></ a > < span class = "k" > if</ span > < span class = "n" > column</ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-284" name = "__codelineno-0-284" ></ a > < span class = "k" > continue</ span >
< a id = "__codelineno-0-285" name = "__codelineno-0-285" ></ a > < span class = "k" > if</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > _TIME_COLUMN_NAMES</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-286" name = "__codelineno-0-286" ></ a > < span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > _coerce_mt5_time_column</ span >< span class = "p" > (</ span >< span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ],</ span > < span class = "n" > column</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-287" name = "__codelineno-0-287" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-288" name = "__codelineno-0-288" ></ a > < span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > to_datetime</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-289" name = "__codelineno-0-289" ></ a > < span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ],</ span > < span class = "n" > utc</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span > < span class = "n" > errors</ span >< span class = "o" > =</ span >< span class = "s2" > " coerce" </ span >
< a id = "__codelineno-0-290" name = "__codelineno-0-290" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-291" name = "__codelineno-0-291" ></ a > < span class = "k" > return</ span > < span class = "n" > normalized</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.schemas.normalize_dataframe" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > normalize_dataframe</ span >
< a href = "#mt5cli.schemas.normalize_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" > normalize_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > sort</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Normalize MT5 DataFrame columns, timestamps, and storage metadata.</ p >
< p > Ensures UTC timestamps, optionally injects < code > symbol</ code > / < code > timeframe</ code > for
storage-oriented datasets, and sorts chronologically when a < code > time</ code > column
exists.</ 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 > frame</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Source DataFrame from MT5 or pdmt5.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > kind</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Dataset kind guiding normalization rules.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > symbol</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional symbol to inject when missing.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > timeframe</ code >
</ td >
< td >
< code >< span title = "int" > int</ span > | < span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional timeframe integer or name to inject for rates.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > sort</ code >
</ td >
< td >
< code >< span title = "bool" > bool</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Whether to sort by < code > time</ code > or < code > time_msc</ code > when present.</ p >
</ div >
</ td >
< td >
< code > True</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Normalized DataFrame copy.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/schemas.py</ code ></ summary >
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-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 >
< span class = "normal" >< a href = "#__codelineno-0-238" > 238</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-239" > 239</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-240" > 240</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-241" > 241</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-242" > 242</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-243" > 243</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-244" > 244</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-245" > 245</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-246" > 246</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-247" > 247</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-248" > 248</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-249" > 249</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-250" > 250</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-251" > 251</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-252" > 252</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-253" > 253</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-254" > 254</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-255" > 255</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-256" > 256</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-257" > 257</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-258" > 258</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-259" > 259</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-260" > 260</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-261" > 261</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-262" > 262</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-263" > 263</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-264" > 264</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-265" > 265</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-266" > 266</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-267" > 267</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-268" > 268</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-221" name = "__codelineno-0-221" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > normalize_dataframe</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-222" name = "__codelineno-0-222" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-223" name = "__codelineno-0-223" ></ a > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" > DataKind</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-224" name = "__codelineno-0-224" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-225" name = "__codelineno-0-225" ></ a > < span class = "n" > symbol</ 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-226" name = "__codelineno-0-226" ></ a > < span class = "n" > timeframe</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-227" name = "__codelineno-0-227" ></ a > < span class = "n" > sort</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span > < span class = "o" > =</ span > < span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-228" name = "__codelineno-0-228" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-229" name = "__codelineno-0-229" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Normalize MT5 DataFrame columns, timestamps, and storage metadata.</ span >
< a id = "__codelineno-0-230" name = "__codelineno-0-230" ></ a >
< a id = "__codelineno-0-231" name = "__codelineno-0-231" ></ a >< span class = "sd" > Ensures UTC timestamps, optionally injects ``symbol`` / ``timeframe`` for</ span >
< a id = "__codelineno-0-232" name = "__codelineno-0-232" ></ a >< span class = "sd" > storage-oriented datasets, and sorts chronologically when a ``time`` column</ span >
< a id = "__codelineno-0-233" name = "__codelineno-0-233" ></ a >< span class = "sd" > exists.</ span >
< a id = "__codelineno-0-234" name = "__codelineno-0-234" ></ a >
< a id = "__codelineno-0-235" name = "__codelineno-0-235" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-236" name = "__codelineno-0-236" ></ a >< span class = "sd" > frame: Source DataFrame from MT5 or pdmt5.</ span >
< a id = "__codelineno-0-237" name = "__codelineno-0-237" ></ a >< span class = "sd" > kind: Dataset kind guiding normalization rules.</ span >
< a id = "__codelineno-0-238" name = "__codelineno-0-238" ></ a >< span class = "sd" > symbol: Optional symbol to inject when missing.</ span >
< a id = "__codelineno-0-239" name = "__codelineno-0-239" ></ a >< span class = "sd" > timeframe: Optional timeframe integer or name to inject for rates.</ span >
< a id = "__codelineno-0-240" name = "__codelineno-0-240" ></ a >< span class = "sd" > sort: Whether to sort by ``time`` or ``time_msc`` when present.</ span >
< a id = "__codelineno-0-241" name = "__codelineno-0-241" ></ a >
< a id = "__codelineno-0-242" name = "__codelineno-0-242" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-243" name = "__codelineno-0-243" ></ a >< span class = "sd" > Normalized DataFrame copy.</ span >
< a id = "__codelineno-0-244" name = "__codelineno-0-244" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-245" name = "__codelineno-0-245" ></ a > < span class = "k" > if</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > empty</ span > < span class = "ow" > and</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-246" name = "__codelineno-0-246" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-247" name = "__codelineno-0-247" ></ a >
< a id = "__codelineno-0-248" name = "__codelineno-0-248" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > normalize_time_columns</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-249" name = "__codelineno-0-249" ></ a >
< a id = "__codelineno-0-250" name = "__codelineno-0-250" ></ a > < span class = "k" > if</ span > < span class = "n" > symbol</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "ow" > and</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-251" name = "__codelineno-0-251" ></ a > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > insert</ span >< span class = "p" > (</ span >< span class = "mi" > 0</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol" </ span >< span class = "p" > ,</ span > < span class = "n" > normalize_symbol</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-252" name = "__codelineno-0-252" ></ a >
< a id = "__codelineno-0-253" name = "__codelineno-0-253" ></ a > < span class = "k" > if</ span > < span class = "n" > timeframe</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "ow" > and</ span > < span class = "n" > kind</ span > < span class = "ow" > is</ span > < span class = "n" > DataKind</ span >< span class = "o" > .</ span >< span class = "n" > rates</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-254" name = "__codelineno-0-254" ></ a > < span class = "n" > tf</ span > < span class = "o" > =</ span > < span class = "n" > parse_timeframe</ span >< span class = "p" > (</ span >< span class = "n" > timeframe</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-255" name = "__codelineno-0-255" ></ a > < span class = "k" > if</ span > < span class = "s2" > " timeframe" </ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-256" name = "__codelineno-0-256" ></ a > < span class = "n" > insert_at</ span > < span class = "o" > =</ span > < span class = "mi" > 1</ span > < span class = "k" > if</ span > < span class = "s2" > " symbol" </ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span > < span class = "k" > else</ span > < span class = "mi" > 0</ span >
< a id = "__codelineno-0-257" name = "__codelineno-0-257" ></ a > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > insert</ span >< span class = "p" > (</ span >< span class = "n" > insert_at</ span >< span class = "p" > ,</ span > < span class = "s2" > " timeframe" </ span >< span class = "p" > ,</ span > < span class = "n" > tf</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-258" name = "__codelineno-0-258" ></ a >
< a id = "__codelineno-0-259" name = "__codelineno-0-259" ></ a > < span class = "n" > validate_schema</ span >< span class = "p" > (</ span >< span class = "n" > normalized</ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-260" name = "__codelineno-0-260" ></ a >
< a id = "__codelineno-0-261" name = "__codelineno-0-261" ></ a > < span class = "k" > if</ span > < span class = "n" > sort</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-262" name = "__codelineno-0-262" ></ a > < span class = "k" > if</ span > < span class = "s2" > " time" </ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-263" name = "__codelineno-0-263" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > sort_values</ span >< span class = "p" > (</ span >< span class = "s2" > " time" </ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "o" > =</ span >< span class = "s2" > " stable" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-264" name = "__codelineno-0-264" ></ a > < span class = "k" > elif</ span > < span class = "s2" > " time_msc" </ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-265" name = "__codelineno-0-265" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > sort_values</ span >< span class = "p" > (</ span >< span class = "s2" > " time_msc" </ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "o" > =</ span >< span class = "s2" > " stable" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-266" name = "__codelineno-0-266" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > reset_index</ span >< span class = "p" > (</ span >< span class = "n" > drop</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-267" name = "__codelineno-0-267" ></ a >
< a id = "__codelineno-0-268" name = "__codelineno-0-268" ></ a > < span class = "k" > return</ span > < span class = "n" > normalized</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.schemas.normalize_time_columns" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > normalize_time_columns</ span >
< a href = "#mt5cli.schemas.normalize_time_columns" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > normalize_time_columns</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ 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 = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Coerce dataset time columns to UTC-aware datetimes when present.</ p >
< p > Any column in :data:< code > KNOWN_MT5_TIME_COLUMNS</ code > that is present in < code > frame</ code >
is normalized. Numeric MT5 epoch values use seconds for < code > time</ code > ,
< code > time_setup</ code > , and < code > time_done</ code > , and milliseconds for < code > *_msc</ code > columns.</ 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 > frame</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Source DataFrame from MT5 or pdmt5.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > kind</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Dataset kind (retained for API compatibility).</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame copy with normalized time columns.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/schemas.py</ code ></ summary >
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-198" > 198</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-199" > 199</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-200" > 200</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-201" > 201</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-202" > 202</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-203" > 203</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-204" > 204</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-205" > 205</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-206" > 206</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-207" > 207</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-208" > 208</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-209" > 209</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-210" > 210</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-211" > 211</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-212" > 212</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-213" > 213</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-214" > 214</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-215" > 215</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-216" > 216</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-217" > 217</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-218" > 218</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-198" name = "__codelineno-0-198" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > normalize_time_columns</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" > DataKind</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-199" name = "__codelineno-0-199" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Coerce dataset time columns to UTC-aware datetimes when present.</ span >
< a id = "__codelineno-0-200" name = "__codelineno-0-200" ></ a >
< a id = "__codelineno-0-201" name = "__codelineno-0-201" ></ a >< span class = "sd" > Any column in :data:`KNOWN_MT5_TIME_COLUMNS` that is present in ``frame``</ span >
< a id = "__codelineno-0-202" name = "__codelineno-0-202" ></ a >< span class = "sd" > is normalized. Numeric MT5 epoch values use seconds for ``time``,</ span >
< a id = "__codelineno-0-203" name = "__codelineno-0-203" ></ a >< span class = "sd" > ``time_setup``, and ``time_done``, and milliseconds for ``*_msc`` columns.</ span >
< a id = "__codelineno-0-204" name = "__codelineno-0-204" ></ a >
< a id = "__codelineno-0-205" name = "__codelineno-0-205" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-206" name = "__codelineno-0-206" ></ a >< span class = "sd" > frame: Source DataFrame from MT5 or pdmt5.</ span >
< a id = "__codelineno-0-207" name = "__codelineno-0-207" ></ a >< span class = "sd" > kind: Dataset kind (retained for API compatibility).</ span >
< a id = "__codelineno-0-208" name = "__codelineno-0-208" ></ a >
< a id = "__codelineno-0-209" name = "__codelineno-0-209" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-210" name = "__codelineno-0-210" ></ a >< span class = "sd" > DataFrame copy with normalized time columns.</ span >
< a id = "__codelineno-0-211" name = "__codelineno-0-211" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-212" name = "__codelineno-0-212" ></ a > < span class = "k" > del</ span > < span class = "n" > kind</ span >
< a id = "__codelineno-0-213" name = "__codelineno-0-213" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > copy</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-214" name = "__codelineno-0-214" ></ a > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > normalized</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-215" name = "__codelineno-0-215" ></ a > < span class = "k" > if</ span > < span class = "n" > column</ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > _TIME_COLUMN_NAMES</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-216" name = "__codelineno-0-216" ></ a > < span class = "k" > continue</ span >
< a id = "__codelineno-0-217" name = "__codelineno-0-217" ></ a > < span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > _coerce_mt5_time_column</ span >< span class = "p" > (</ span >< span class = "n" > normalized</ span >< span class = "p" > [</ span >< span class = "n" > column</ span >< span class = "p" > ],</ span > < span class = "n" > column</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-218" name = "__codelineno-0-218" ></ a > < span class = "k" > return</ span > < span class = "n" > normalized</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.schemas.schema_columns" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > schema_columns</ span >
< a href = "#mt5cli.schemas.schema_columns" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > schema_columns</ span >< span class = "p" > (</ span >< span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "frozenset" > frozenset</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return required column names for a dataset kind.</ 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 > kind</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Dataset kind.</ 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 = "frozenset" > frozenset</ span > [< span title = "str" > str</ span > ]</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Required column names for < code > kind</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/schemas.py</ code ></ summary >
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-141" > 141</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-142" > 142</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-143" > 143</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-144" > 144</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-145" > 145</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-146" > 146</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-147" > 147</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-148" > 148</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-149" > 149</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-150" > 150</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-141" name = "__codelineno-0-141" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > schema_columns</ span >< span class = "p" > (</ span >< span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" > DataKind</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > frozenset</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-142" name = "__codelineno-0-142" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return required column names for a dataset kind.</ span >
< a id = "__codelineno-0-143" name = "__codelineno-0-143" ></ a >
< a id = "__codelineno-0-144" name = "__codelineno-0-144" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-145" name = "__codelineno-0-145" ></ a >< span class = "sd" > kind: Dataset kind.</ span >
< a id = "__codelineno-0-146" name = "__codelineno-0-146" ></ a >
< a id = "__codelineno-0-147" name = "__codelineno-0-147" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-148" name = "__codelineno-0-148" ></ a >< span class = "sd" > Required column names for ``kind``.</ span >
< a id = "__codelineno-0-149" name = "__codelineno-0-149" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-150" name = "__codelineno-0-150" ></ a > < span class = "k" > return</ span > < span class = "n" > REQUIRED_COLUMNS</ span >< span class = "p" > [</ span >< span class = "n" > kind</ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.schemas.validate_schema" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > validate_schema</ span >
< a href = "#mt5cli.schemas.validate_schema" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > validate_schema</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > extra_required</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "collections.abc.Iterable" > Iterable</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Validate that a DataFrame includes required columns for a dataset kind.</ 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 > frame</ code >
</ td >
< td >
< code >< span title = "pandas.DataFrame" > DataFrame</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > DataFrame to validate.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > kind</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "DataKind (mt5cli.schemas.DataKind)" href = "#mt5cli.schemas.DataKind" > DataKind</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Expected dataset kind.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > extra_required</ code >
</ td >
< td >
< code >< span title = "collections.abc.Iterable" > Iterable</ span > [< span title = "str" > str</ span > ] | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Additional columns that must be present (for example
< code > symbol</ code > and < code > timeframe</ code > on stored rate history).</ p >
</ div >
</ td >
< td >
< code > None</ 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 >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "Mt5SchemaError (mt5cli.exceptions.Mt5SchemaError)" href = "../exceptions/#mt5cli.exceptions.Mt5SchemaError" > Mt5SchemaError</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If required columns are missing.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/schemas.py</ code ></ summary >
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-153" > 153</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-154" > 154</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-155" > 155</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-156" > 156</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-157" > 157</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-158" > 158</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-159" > 159</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-160" > 160</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-161" > 161</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-162" > 162</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-163" > 163</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-164" > 164</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-165" > 165</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-166" > 166</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-167" > 167</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-168" > 168</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-169" > 169</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-170" > 170</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-171" > 171</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-172" > 172</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-173" > 173</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-174" > 174</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-175" > 175</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-176" > 176</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-177" > 177</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-178" > 178</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-179" > 179</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-180" > 180</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-181" > 181</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-153" name = "__codelineno-0-153" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > validate_schema</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-154" name = "__codelineno-0-154" ></ a > < span class = "n" > frame</ span >< span class = "p" > :</ span > < span class = "n" > pd</ span >< span class = "o" > .</ span >< span class = "n" > DataFrame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-155" name = "__codelineno-0-155" ></ a > < span class = "n" > kind</ span >< span class = "p" > :</ span > < span class = "n" > DataKind</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-156" name = "__codelineno-0-156" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-157" name = "__codelineno-0-157" ></ a > < span class = "n" > extra_required</ span >< span class = "p" > :</ span > < span class = "n" > Iterable</ 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-158" name = "__codelineno-0-158" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-159" name = "__codelineno-0-159" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Validate that a DataFrame includes required columns for a dataset kind.</ span >
< a id = "__codelineno-0-160" name = "__codelineno-0-160" ></ a >
< a id = "__codelineno-0-161" name = "__codelineno-0-161" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-162" name = "__codelineno-0-162" ></ a >< span class = "sd" > frame: DataFrame to validate.</ span >
< a id = "__codelineno-0-163" name = "__codelineno-0-163" ></ a >< span class = "sd" > kind: Expected dataset kind.</ span >
< a id = "__codelineno-0-164" name = "__codelineno-0-164" ></ a >< span class = "sd" > extra_required: Additional columns that must be present (for example</ span >
< a id = "__codelineno-0-165" name = "__codelineno-0-165" ></ a >< span class = "sd" > ``symbol`` and ``timeframe`` on stored rate history).</ span >
< a id = "__codelineno-0-166" name = "__codelineno-0-166" ></ a >
< a id = "__codelineno-0-167" name = "__codelineno-0-167" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-168" name = "__codelineno-0-168" ></ a >< span class = "sd" > Mt5SchemaError: If required columns are missing.</ span >
< a id = "__codelineno-0-169" name = "__codelineno-0-169" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-170" name = "__codelineno-0-170" ></ a > < span class = "k" > if</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > empty</ span > < span class = "ow" > and</ span > < span class = "nb" > len</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-171" name = "__codelineno-0-171" ></ a > < span class = "k" > return</ span >
< a id = "__codelineno-0-172" name = "__codelineno-0-172" ></ a > < span class = "n" > required</ span > < span class = "o" > =</ span > < span class = "nb" > set</ span >< span class = "p" > (</ span >< span class = "n" > REQUIRED_COLUMNS</ span >< span class = "p" > [</ span >< span class = "n" > kind</ span >< span class = "p" > ])</ span >
< a id = "__codelineno-0-173" name = "__codelineno-0-173" ></ a > < span class = "k" > if</ span > < span class = "n" > extra_required</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-174" name = "__codelineno-0-174" ></ a > < span class = "n" > required</ span >< span class = "o" > .</ span >< span class = "n" > update</ span >< span class = "p" > (</ span >< span class = "n" > extra_required</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-175" name = "__codelineno-0-175" ></ a > < span class = "n" > missing</ span > < span class = "o" > =</ span > < span class = "n" > required</ span > < span class = "o" > -</ span > < span class = "nb" > set</ span >< span class = "p" > (</ span >< span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-176" name = "__codelineno-0-176" ></ a > < span class = "k" > if</ span > < span class = "n" > missing</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-177" name = "__codelineno-0-177" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-178" name = "__codelineno-0-178" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " </ span >< span class = "si" > {</ span >< span class = "n" > kind</ span >< span class = "o" > .</ span >< span class = "n" > value</ span >< span class = "si" > }</ span >< span class = "s2" > schema is missing required columns: " </ span >
< a id = "__codelineno-0-179" name = "__codelineno-0-179" ></ a > < span class = "sa" > f</ span >< span class = "s2" > " </ span >< span class = "si" > {</ span >< span class = "s1" > ' , ' </ span >< span class = "o" > .</ span >< span class = "n" > join</ span >< span class = "p" > (</ span >< span class = "nb" > sorted</ span >< span class = "p" > (</ span >< span class = "n" > missing</ span >< span class = "p" > ))</ span >< span class = "si" > }</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-180" name = "__codelineno-0-180" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-181" name = "__codelineno-0-181" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5SchemaError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
</ 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 >