2026-06-11 10:33:27 +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/trading/" >
< link rel = "shortcut icon" href = "../../img/favicon.ico" >
< title > Trading - mt5cli API Documentation</ title >
< link href = "../../css/bootstrap.min.css" rel = "stylesheet" >
< link href = "../../css/fontawesome.min.css" rel = "stylesheet" >
< link href = "../../css/brands.min.css" rel = "stylesheet" >
< link href = "../../css/solid.min.css" rel = "stylesheet" >
< link href = "../../css/v4-font-face.min.css" rel = "stylesheet" >
< link href = "../../css/base.css" rel = "stylesheet" >
< link id = "hljs-light" rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
< link id = "hljs-dark" rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled >
< link href = "../../assets/_mkdocstrings.css" rel = "stylesheet" >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" ></ script >
< script > hljs . highlightAll ();</ script >
</ head >
< body >
< div class = "navbar fixed-top navbar-expand-lg navbar-dark bg-primary" >
< div class = "container" >
< a class = "navbar-brand" href = "../.." > mt5cli API Documentation</ a >
<!-- Expander button -->
< button type = "button" class = "navbar-toggler" data-bs-toggle = "collapse" data-bs-target = "#navbar-collapse" aria-controls = "navbar-collapse" aria-expanded = "false" aria-label = "Toggle navigation" >
< span class = "navbar-toggler-icon" ></ span >
</ button >
<!-- Expanded navigation -->
< div id = "navbar-collapse" class = "navbar-collapse collapse" >
<!-- Main navigation -->
< ul class = "nav navbar-nav" >
< li class = "nav-item" >
< a href = "../.." class = "nav-link" > Home</ a >
</ li >
< li class = "nav-item dropdown" >
< a href = "#" class = "nav-link dropdown-toggle active" aria-current = "page" role = "button" data-bs-toggle = "dropdown" aria-expanded = "false" > API Reference</ a >
< ul class = "dropdown-menu" >
< li >
< a href = "../" class = "dropdown-item" > Overview</ a >
</ li >
2026-06-18 10:12:55 +00:00
< li >
< a href = "../public-contract/" class = "dropdown-item" > Public API Contract</ a >
</ li >
2026-06-12 16:32:35 +00:00
< li >
< a href = "../client/" class = "dropdown-item" > Client</ a >
</ li >
< li >
< a href = "../schemas/" class = "dropdown-item" > Schemas</ a >
</ li >
< li >
< a href = "../storage/" class = "dropdown-item" > Storage</ a >
</ li >
< li >
< a href = "../converters/" class = "dropdown-item" > Converters</ a >
</ li >
< li >
< a href = "../exceptions/" class = "dropdown-item" > Exceptions</ a >
</ li >
2026-06-11 10:33:27 +00:00
< li >
< a href = "../cli/" class = "dropdown-item" > CLI</ a >
</ li >
< li >
< a href = "../sdk/" class = "dropdown-item" > SDK</ a >
</ li >
< li >
< a href = "./" class = "dropdown-item active" aria-current = "page" > 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 = "../sdk/" class = "nav-link" >
< i class = "fa fa-arrow-left" ></ i > Previous
</ a >
</ li >
< li class = "nav-item" >
< a rel = "next" href = "../history/" 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/trading.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 = "#trading-module" class = "nav-link" > Trading Module</ a >
< ul class = "nav flex-column" >
< li class = "nav-item" data-bs-level = "2" >< a href = "#mt5cli.trading" class = "nav-link" > trading</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
< li class = "nav-item" data-bs-level = "2" >< a href = "#trading-capable-mt5-sessions" class = "nav-link" > Trading-capable MT5 sessions</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
2026-06-14 17:47:52 +00:00
< li class = "nav-item" data-bs-level = "2" >< a href = "#state-and-order-helpers" class = "nav-link" > State and order helpers</ a >
2026-06-11 10:33:27 +00:00
< ul class = "nav flex-column" >
</ ul >
</ li >
2026-06-18 10:12:55 +00:00
< li class = "nav-item" data-bs-level = "2" >< a href = "#order-planning-return-contracts" class = "nav-link" > Order planning return contracts</ a >
< ul class = "nav flex-column" >
</ ul >
</ li >
< li class = "nav-item" data-bs-level = "2" >< a href = "#migration-from-application-local-helpers" class = "nav-link" > Migration from application-local helpers</ a >
2026-06-11 10:33:27 +00:00
< ul class = "nav flex-column" >
</ ul >
</ li >
</ ul >
</ li >
</ ul >
</ div >
</ div ></ div >
< div class = "col-md-9" role = "main" >
< h1 id = "trading-module" > Trading Module< a class = "headerlink" href = "#trading-module" title = "Permanent link" > ¶ </ a ></ h1 >
< div class = "doc doc-object doc-module" >
< h2 id = "mt5cli.trading" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-module-name" > mt5cli.trading</ span >
< a href = "#mt5cli.trading" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h2 >
< div class = "doc doc-contents first" >
< p > Trading-capable MetaTrader 5 session helpers and operational utilities.</ p >
< div class = "doc doc-children" >
2026-06-18 10:12:55 +00:00
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.ExecutionStatus" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > ExecutionStatus</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.ExecutionStatus" 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" > ExecutionStatus</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "s2" > " executed" </ span >< span class = "p" > ,</ span > < span class = "s2" > " dry_run" </ span >< span class = "p" > ,</ span > < span class = "s2" > " skipped" </ span >< span class = "p" > ,</ span > < span class = "s2" > " failed" </ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
2026-06-14 17:47:52 +00:00
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.OrderFillingMode" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > OrderFillingMode</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderFillingMode" 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" > OrderFillingMode</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >< span class = "s1" > ' IOC' </ span >< span class = "p" > ,</ span > < span class = "s1" > ' FOK' </ span >< span class = "p" > ,</ span > < span class = "s1" > ' RETURN' </ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
2026-06-11 10:33:27 +00:00
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.OrderSide" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > OrderSide</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderSide" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-14 17:47:52 +00:00
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "n" > OrderSide</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >< span class = "s1" > ' BUY' </ span >< span class = "p" > ,</ span > < span class = "s1" > ' SELL' </ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.OrderTimeMode" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > OrderTimeMode</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderTimeMode" 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" > OrderTimeMode</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "s2" > " GTC" </ span >< span class = "p" > ,</ span > < span class = "s2" > " DAY" </ span >< span class = "p" > ,</ span > < span class = "s2" > " SPECIFIED" </ span >< span class = "p" > ,</ span > < span class = "s2" > " SPECIFIED_DAY" </ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.POSITION_COLUMNS" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > POSITION_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.trading.POSITION_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" > POSITION_COLUMNS</ 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" > " ticket" </ 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" > " symbol" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "s2" > " price_open" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "s2" > " sl" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "s2" > " tp" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "s2" > " price_current" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "s2" > " profit" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "s2" > " swap" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > < span class = "s2" > " comment" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a >< span class = "p" > )</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.PositionSide" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > PositionSide</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-module-attribute" >< code > module-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.PositionSide" 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" > PositionSide</ span > < span class = "o" > =</ span > < span class = "n" >< span title = "typing.Literal" > Literal</ span ></ span >< span class = "p" > [</ span >< span class = "s1" > ' long' </ span >< span class = "p" > ,</ span > < span class = "s1" > ' short' </ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h3 id = "mt5cli.trading.__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.trading.__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 >
2026-06-14 17:47:52 +00:00
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "s2" > " POSITION_COLUMNS" </ span >< span class = "p" > ,</ span >
2026-06-18 10:12:55 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "s2" > " ExecutionStatus" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "s2" > " MarginVolume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "s2" > " OrderExecutionResult" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "s2" > " OrderFillingMode" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "s2" > " OrderLimits" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "s2" > " OrderSide" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "s2" > " OrderTimeMode" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "s2" > " PositionSide" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "s2" > " calculate_margin_and_volume" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "s2" > " calculate_new_position_margin_ratio" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a > < span class = "s2" > " calculate_spread_ratio" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a > < span class = "s2" > " calculate_volume_by_margin" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a > < span class = "s2" > " close_open_positions" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-16" name = "__codelineno-0-16" href = "#__codelineno-0-16" ></ a > < span class = "s2" > " create_trading_client" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-17" name = "__codelineno-0-17" href = "#__codelineno-0-17" ></ a > < span class = "s2" > " detect_position_side" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-18" name = "__codelineno-0-18" href = "#__codelineno-0-18" ></ a > < span class = "s2" > " determine_order_limits" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-19" name = "__codelineno-0-19" href = "#__codelineno-0-19" ></ a > < span class = "s2" > " ensure_symbol_selected" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-20" name = "__codelineno-0-20" href = "#__codelineno-0-20" ></ a > < span class = "s2" > " get_account_snapshot" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-21" name = "__codelineno-0-21" href = "#__codelineno-0-21" ></ a > < span class = "s2" > " get_positions_frame" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-22" name = "__codelineno-0-22" href = "#__codelineno-0-22" ></ a > < span class = "s2" > " get_symbol_snapshot" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-23" name = "__codelineno-0-23" href = "#__codelineno-0-23" ></ a > < span class = "s2" > " get_tick_snapshot" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-24" name = "__codelineno-0-24" href = "#__codelineno-0-24" ></ a > < span class = "s2" > " mt5_trading_session" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-25" name = "__codelineno-0-25" href = "#__codelineno-0-25" ></ a > < span class = "s2" > " place_market_order" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-26" name = "__codelineno-0-26" href = "#__codelineno-0-26" ></ a > < span class = "s2" > " update_sltp_for_open_positions" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-27" name = "__codelineno-0-27" href = "#__codelineno-0-27" ></ a >< span class = "p" > ]</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
2026-06-18 10:12:55 +00:00
< div class = "doc doc-object doc-class" >
2026-06-11 10:33:27 +00:00
2026-06-18 10:12:55 +00:00
< h3 id = "mt5cli.trading.MarginVolume" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > MarginVolume</ span >
2026-06-11 10:33:27 +00:00
2026-06-18 10:12:55 +00:00
< a href = "#mt5cli.trading.MarginVolume" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
2026-06-11 10:33:27 +00:00
< div class = "doc doc-contents " >
2026-06-18 10:12:55 +00:00
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "typing.TypedDict" > TypedDict</ span ></ code ></ p >
2026-06-11 10:33:27 +00:00
2026-06-18 10:12:55 +00:00
< p > Affordable volume bounds derived from account margin and symbol constraints.</ p >
2026-06-11 10:33:27 +00:00
2026-06-18 10:12:55 +00:00
< div class = "doc doc-children" >
2026-06-11 10:33:27 +00:00
2026-06-18 10:12:55 +00:00
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.available_margin" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > available_margin</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.available_margin" 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" > available_margin</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.buy_volume" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > buy_volume</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.buy_volume" 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" > buy_volume</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.margin_free" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > margin_free</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.margin_free" 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" > margin_free</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.sell_volume" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > sell_volume</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.sell_volume" 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" > sell_volume</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.trade_margin" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > trade_margin</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.trade_margin" 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" > trade_margin</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.volume_max" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > volume_max</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.volume_max" 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" > volume_max</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.volume_min" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > volume_min</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.volume_min" 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" > volume_min</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.MarginVolume.volume_step" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > volume_step</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.MarginVolume.volume_step" 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" > volume_step</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.trading.OrderExecutionResult" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > OrderExecutionResult</ span >
< a href = "#mt5cli.trading.OrderExecutionResult" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "typing.TypedDict" > TypedDict</ span ></ code ></ p >
< p > Normalized result from market-order and position-management helpers.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.comment" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > comment</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.comment" 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" > comment</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.dry_run" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > dry_run</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.dry_run" 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" > dry_run</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.order_side" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > order_side</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.order_side" 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" > order_side</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderSide
module-attribute
(mt5cli.trading.OrderSide)" href = "#mt5cli.trading.OrderSide" > OrderSide</ a ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.request" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > request</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.request" 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" > request</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "object" > object</ span ></ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.response" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > response</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.response" 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" > response</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "object" > object</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.retcode" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > retcode</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.retcode" 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" > retcode</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.status" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > status</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.status" 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" > status</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "ExecutionStatus
module-attribute
(mt5cli.trading.ExecutionStatus)" href = "#mt5cli.trading.ExecutionStatus" > ExecutionStatus</ a ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.symbol" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > symbol</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.symbol" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h4 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderExecutionResult.volume" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > volume</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderExecutionResult.volume" 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" > volume</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-class" >
< h3 id = "mt5cli.trading.OrderLimits" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-class-name" > OrderLimits</ span >
< a href = "#mt5cli.trading.OrderLimits" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc doc-contents " >
< p class = "doc doc-class-bases" >
Bases: < code >< span title = "typing.TypedDict" > TypedDict</ span ></ code ></ p >
< p > Protective order prices derived from current quotes and ratio parameters.</ p >
< div class = "doc doc-children" >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderLimits.entry" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > entry</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderLimits.entry" 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" > entry</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderLimits.stop_loss" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > stop_loss</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderLimits.stop_loss" 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" > stop_loss</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
< div class = "doc doc-object doc-attribute" >
< h4 id = "mt5cli.trading.OrderLimits.take_profit" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-attribute-name" > take_profit</ span >
< span class = "doc doc-labels" >
< small class = "doc doc-label doc-label-instance-attribute" >< code > instance-attribute</ code ></ small >
</ span >
< a href = "#mt5cli.trading.OrderLimits.take_profit" 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" > take_profit</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.calculate_margin_and_volume" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > calculate_margin_and_volume</ span >
< a href = "#mt5cli.trading.calculate_margin_and_volume" 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" > calculate_margin_and_volume</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > unit_margin_ratio</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > preserved_margin_ratio</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "MarginVolume (mt5cli.trading.MarginVolume)" href = "#mt5cli.trading.MarginVolume" > MarginVolume</ a ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Calculate tradable margin and volumes from account free margin.</ p >
< p > Applies < code > preserved_margin_ratio</ code > to keep a reserve off < code > margin_free</ code > ,
then allocates < code > unit_margin_ratio</ code > of the remainder as the margin budget
for proportional volume sizing on both buy and sell sides. A
< code > unit_margin_ratio</ code > of < code > 0</ code > requests exactly one minimum valid unit per
side when the post-reserve margin can afford it.</ 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 > client</ code >
</ td >
< td >
< code >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Connected < code > Mt5TradingClient</ code > instance.</ 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 ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Symbol used for minimum-lot margin and volume calculations.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > unit_margin_ratio</ code >
</ td >
< td >
< code >< span title = "float" > float</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Fraction of post-reserve margin to allocate per unit.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > preserved_margin_ratio</ code >
</ td >
< td >
< code >< span title = "float" > float</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Fraction of < code > margin_free</ code > to preserve.</ 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 >< a class = "autorefs autorefs-internal" title = "MarginVolume (mt5cli.trading.MarginVolume)" href = "#mt5cli.trading.MarginVolume" > MarginVolume</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Dictionary with < code > margin_free</ code > , < code > available_margin</ code > , < code > trade_margin</ code > ,</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "MarginVolume (mt5cli.trading.MarginVolume)" href = "#mt5cli.trading.MarginVolume" > MarginVolume</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p >< code > buy_volume</ code > , and < code > sell_volume</ code > . Negative < code > margin_free</ code > values are</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "MarginVolume (mt5cli.trading.MarginVolume)" href = "#mt5cli.trading.MarginVolume" > MarginVolume</ a ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > clamped to < code > 0.0</ code > before sizing.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.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-586" > 586</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-587" > 587</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-588" > 588</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-589" > 589</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-590" > 590</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-591" > 591</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-592" > 592</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-593" > 593</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-594" > 594</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-595" > 595</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-596" > 596</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-597" > 597</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-598" > 598</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-599" > 599</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-600" > 600</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-601" > 601</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-602" > 602</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-603" > 603</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-604" > 604</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-605" > 605</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-606" > 606</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-607" > 607</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-608" > 608</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-609" > 609</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-610" > 610</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-611" > 611</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-612" > 612</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-613" > 613</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-614" > 614</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-615" > 615</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-616" > 616</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-617" > 617</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-618" > 618</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-619" > 619</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-620" > 620</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-621" > 621</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-622" > 622</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-623" > 623</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-624" > 624</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-625" > 625</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-626" > 626</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-627" > 627</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-628" > 628</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-629" > 629</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-630" > 630</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-631" > 631</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-632" > 632</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-633" > 633</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-634" > 634</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-635" > 635</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-636" > 636</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-637" > 637</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-638" > 638</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-639" > 639</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-640" > 640</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-641" > 641</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-642" > 642</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-643" > 643</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-644" > 644</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-645" > 645</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-646" > 646</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-647" > 647</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-648" > 648</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-649" > 649</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-650" > 650</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-651" > 651</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-652" > 652</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-653" > 653</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-654" > 654</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-655" > 655</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-656" > 656</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-657" > 657</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-658" > 658</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-659" > 659</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-660" > 660</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-661" > 661</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-662" > 662</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-663" > 663</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-664" > 664</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-665" > 665</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-666" > 666</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-667" > 667</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-668" > 668</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-669" > 669</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-670" > 670</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-586" name = "__codelineno-0-586" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > calculate_margin_and_volume</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-587" name = "__codelineno-0-587" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-588" name = "__codelineno-0-588" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-589" name = "__codelineno-0-589" ></ a > < span class = "n" > unit_margin_ratio</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-590" name = "__codelineno-0-590" ></ a > < span class = "n" > preserved_margin_ratio</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-591" name = "__codelineno-0-591" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > MarginVolume</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-592" name = "__codelineno-0-592" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Calculate tradable margin and volumes from account free margin.</ span >
< a id = "__codelineno-0-593" name = "__codelineno-0-593" ></ a >
< a id = "__codelineno-0-594" name = "__codelineno-0-594" ></ a >< span class = "sd" > Applies ``preserved_margin_ratio`` to keep a reserve off ``margin_free``,</ span >
< a id = "__codelineno-0-595" name = "__codelineno-0-595" ></ a >< span class = "sd" > then allocates ``unit_margin_ratio`` of the remainder as the margin budget</ span >
< a id = "__codelineno-0-596" name = "__codelineno-0-596" ></ a >< span class = "sd" > for proportional volume sizing on both buy and sell sides. A</ span >
< a id = "__codelineno-0-597" name = "__codelineno-0-597" ></ a >< span class = "sd" > ``unit_margin_ratio`` of ``0`` requests exactly one minimum valid unit per</ span >
< a id = "__codelineno-0-598" name = "__codelineno-0-598" ></ a >< span class = "sd" > side when the post-reserve margin can afford it.</ span >
< a id = "__codelineno-0-599" name = "__codelineno-0-599" ></ a >
< a id = "__codelineno-0-600" name = "__codelineno-0-600" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-601" name = "__codelineno-0-601" ></ a >< span class = "sd" > client: Connected ``Mt5TradingClient`` instance.</ span >
< a id = "__codelineno-0-602" name = "__codelineno-0-602" ></ a >< span class = "sd" > symbol: Symbol used for minimum-lot margin and volume calculations.</ span >
< a id = "__codelineno-0-603" name = "__codelineno-0-603" ></ a >< span class = "sd" > unit_margin_ratio: Fraction of post-reserve margin to allocate per unit.</ span >
< a id = "__codelineno-0-604" name = "__codelineno-0-604" ></ a >< span class = "sd" > preserved_margin_ratio: Fraction of ``margin_free`` to preserve.</ span >
< a id = "__codelineno-0-605" name = "__codelineno-0-605" ></ a >
< a id = "__codelineno-0-606" name = "__codelineno-0-606" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-607" name = "__codelineno-0-607" ></ a >< span class = "sd" > Dictionary with ``margin_free``, ``available_margin``, ``trade_margin``,</ span >
< a id = "__codelineno-0-608" name = "__codelineno-0-608" ></ a >< span class = "sd" > ``buy_volume``, and ``sell_volume``. Negative ``margin_free`` values are</ span >
< a id = "__codelineno-0-609" name = "__codelineno-0-609" ></ a >< span class = "sd" > clamped to ``0.0`` before sizing.</ span >
< a id = "__codelineno-0-610" name = "__codelineno-0-610" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-611" name = "__codelineno-0-611" ></ a > < span class = "n" > _require_unit_ratio</ span >< span class = "p" > (</ span >< span class = "n" > unit_margin_ratio</ span >< span class = "p" > ,</ span > < span class = "s2" > " unit_margin_ratio" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-612" name = "__codelineno-0-612" ></ a > < span class = "n" > _require_unit_ratio</ span >< span class = "p" > (</ span >< span class = "n" > preserved_margin_ratio</ span >< span class = "p" > ,</ span > < span class = "s2" > " preserved_margin_ratio" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-613" name = "__codelineno-0-613" ></ a >
< a id = "__codelineno-0-614" name = "__codelineno-0-614" ></ a > < span class = "n" > account</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > account_info_as_dict</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-615" name = "__codelineno-0-615" ></ a > < span class = "n" > margin_free</ span > < span class = "o" > =</ span > < span class = "nb" > max</ span >< span class = "p" > (</ span >< span class = "mf" > 0.0</ span >< span class = "p" > ,</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > account</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " margin_free" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-616" name = "__codelineno-0-616" ></ a > < span class = "n" > available_margin</ span > < span class = "o" > =</ span > < span class = "n" > margin_free</ span > < span class = "o" > *</ span > < span class = "p" > (</ span >< span class = "mf" > 1.0</ span > < span class = "o" > -</ span > < span class = "n" > preserved_margin_ratio</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-617" name = "__codelineno-0-617" ></ a > < span class = "n" > trade_margin</ span > < span class = "o" > =</ span > < span class = "n" > available_margin</ span > < span class = "o" > *</ span > < span class = "n" > unit_margin_ratio</ span >
< a id = "__codelineno-0-618" name = "__codelineno-0-618" ></ a > < span class = "k" > if</ span > < span class = "n" > unit_margin_ratio</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-619" name = "__codelineno-0-619" ></ a > < span class = "n" > buy_volume</ span > < span class = "o" > =</ span > < span class = "n" > _calculate_min_volume_if_affordable</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-620" name = "__codelineno-0-620" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-621" name = "__codelineno-0-621" ></ a > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-622" name = "__codelineno-0-622" ></ a > < span class = "n" > available_margin</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-623" name = "__codelineno-0-623" ></ a > < span class = "s2" > " BUY" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-624" name = "__codelineno-0-624" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-625" name = "__codelineno-0-625" ></ a > < span class = "n" > sell_volume</ span > < span class = "o" > =</ span > < span class = "n" > _calculate_min_volume_if_affordable</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-626" name = "__codelineno-0-626" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-627" name = "__codelineno-0-627" ></ a > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-628" name = "__codelineno-0-628" ></ a > < span class = "n" > available_margin</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-629" name = "__codelineno-0-629" ></ a > < span class = "s2" > " SELL" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-630" name = "__codelineno-0-630" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-631" name = "__codelineno-0-631" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-632" name = "__codelineno-0-632" ></ a > < span class = "n" > native_calculate_volume</ span > < span class = "o" > =</ span > < span class = "nb" > getattr</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " calculate_volume_by_margin" </ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-633" name = "__codelineno-0-633" ></ a > < span class = "k" > if</ span > < span class = "nb" > callable</ span >< span class = "p" > (</ span >< span class = "n" > native_calculate_volume</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-634" name = "__codelineno-0-634" ></ a > < span class = "n" > buy_volume</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-635" name = "__codelineno-0-635" ></ a > < span class = "n" > cast</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-636" name = "__codelineno-0-636" ></ a > < span class = "s2" > " float | int | str" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-637" name = "__codelineno-0-637" ></ a > < span class = "n" > native_calculate_volume</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > trade_margin</ span >< span class = "p" > ,</ span > < span class = "s2" > " BUY" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-638" name = "__codelineno-0-638" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-639" name = "__codelineno-0-639" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-640" name = "__codelineno-0-640" ></ a > < span class = "n" > sell_volume</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-641" name = "__codelineno-0-641" ></ a > < span class = "n" > cast</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-642" name = "__codelineno-0-642" ></ a > < span class = "s2" > " float | int | str" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-643" name = "__codelineno-0-643" ></ a > < span class = "n" > native_calculate_volume</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > trade_margin</ span >< span class = "p" > ,</ span > < span class = "s2" > " SELL" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-644" name = "__codelineno-0-644" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-645" name = "__codelineno-0-645" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-646" name = "__codelineno-0-646" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-647" name = "__codelineno-0-647" ></ a > < span class = "n" > buy_volume</ span > < span class = "o" > =</ span > < span class = "n" > calculate_volume_by_margin</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > trade_margin</ span >< span class = "p" > ,</ span > < span class = "s2" > " BUY" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-648" name = "__codelineno-0-648" ></ a > < span class = "n" > sell_volume</ span > < span class = "o" > =</ span > < span class = "n" > calculate_volume_by_margin</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-649" name = "__codelineno-0-649" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-650" name = "__codelineno-0-650" ></ a > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-651" name = "__codelineno-0-651" ></ a > < span class = "n" > trade_margin</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-652" name = "__codelineno-0-652" ></ a > < span class = "s2" > " SELL" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-653" name = "__codelineno-0-653" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-654" name = "__codelineno-0-654" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-655" name = "__codelineno-0-655" ></ a > < span class = "n" > symbol_info</ span > < span class = "o" > =</ span > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-656" name = "__codelineno-0-656" ></ a > < span class = "n" > volume_min</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_min" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-657" name = "__codelineno-0-657" ></ a > < span class = "n" > volume_max</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_max" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-658" name = "__codelineno-0-658" ></ a > < span class = "n" > volume_step</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_step" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-659" name = "__codelineno-0-659" ></ a > < span class = "k" > except</ span > < span class = "ne" > AttributeError</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-660" name = "__codelineno-0-660" ></ a > < span class = "n" > volume_min</ span > < span class = "o" > =</ span > < span class = "n" > volume_max</ span > < span class = "o" > =</ span > < span class = "n" > volume_step</ span > < span class = "o" > =</ span > < span class = "mf" > 0.0</ span >
< a id = "__codelineno-0-661" name = "__codelineno-0-661" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-662" name = "__codelineno-0-662" ></ a > < span class = "s2" > " margin_free" </ span >< span class = "p" > :</ span > < span class = "n" > margin_free</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-663" name = "__codelineno-0-663" ></ a > < span class = "s2" > " available_margin" </ span >< span class = "p" > :</ span > < span class = "n" > available_margin</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-664" name = "__codelineno-0-664" ></ a > < span class = "s2" > " trade_margin" </ span >< span class = "p" > :</ span > < span class = "n" > trade_margin</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-665" name = "__codelineno-0-665" ></ a > < span class = "s2" > " buy_volume" </ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > buy_volume</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-666" name = "__codelineno-0-666" ></ a > < span class = "s2" > " sell_volume" </ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > sell_volume</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-667" name = "__codelineno-0-667" ></ a > < span class = "s2" > " volume_min" </ span >< span class = "p" > :</ span > < span class = "n" > volume_min</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-668" name = "__codelineno-0-668" ></ a > < span class = "s2" > " volume_max" </ span >< span class = "p" > :</ span > < span class = "n" > volume_max</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-669" name = "__codelineno-0-669" ></ a > < span class = "s2" > " volume_step" </ span >< span class = "p" > :</ span > < span class = "n" > volume_step</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-670" name = "__codelineno-0-670" ></ a > < span class = "p" > }</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.calculate_new_position_margin_ratio" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > calculate_new_position_margin_ratio</ span >
< a href = "#mt5cli.trading.calculate_new_position_margin_ratio" 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" > calculate_new_position_margin_ratio</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > new_position_side</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderSide
module-attribute
(mt5cli.trading.OrderSide)" href = "#mt5cli.trading.OrderSide" > OrderSide</ a ></ 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" > new_position_volume</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > =</ span > < span class = "mf" > 0.0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return total margin/equity ratio after an optional hypothetical position.</ p >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
2026-06-11 10:33:27 +00:00
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-14 17:47:52 +00:00
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > If equity or required tick data is invalid.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
</ tr >
2026-06-14 17:47:52 +00:00
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-552" > 552</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-553" > 553</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-554" > 554</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-555" > 555</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-556" > 556</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-557" > 557</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-558" > 558</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-559" > 559</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-560" > 560</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-561" > 561</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-562" > 562</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-563" > 563</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-564" > 564</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-565" > 565</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-566" > 566</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-567" > 567</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-568" > 568</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-569" > 569</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-570" > 570</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-571" > 571</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-572" > 572</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-573" > 573</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-574" > 574</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-575" > 575</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-576" > 576</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-577" > 577</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-578" > 578</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-579" > 579</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-580" > 580</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-581" > 581</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-582" > 582</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-583" > 583</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-552" name = "__codelineno-0-552" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > calculate_new_position_margin_ratio</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-553" name = "__codelineno-0-553" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-554" name = "__codelineno-0-554" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-555" name = "__codelineno-0-555" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-556" name = "__codelineno-0-556" ></ a > < span class = "n" > new_position_side</ span >< span class = "p" > :</ span > < span class = "n" > OrderSide</ 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-557" name = "__codelineno-0-557" ></ a > < span class = "n" > new_position_volume</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span > < span class = "o" > =</ span > < span class = "mf" > 0.0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-558" name = "__codelineno-0-558" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > float</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-559" name = "__codelineno-0-559" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return total margin/equity ratio after an optional hypothetical position.</ span >
< a id = "__codelineno-0-560" name = "__codelineno-0-560" ></ a >
< a id = "__codelineno-0-561" name = "__codelineno-0-561" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-562" name = "__codelineno-0-562" ></ a >< span class = "sd" > Mt5TradingError: If equity or required tick data is invalid.</ span >
< a id = "__codelineno-0-563" name = "__codelineno-0-563" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-564" name = "__codelineno-0-564" ></ a > < span class = "n" > account</ span > < span class = "o" > =</ span > < span class = "n" > get_account_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-565" name = "__codelineno-0-565" ></ a > < span class = "n" > equity</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > account</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " equity" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-566" name = "__codelineno-0-566" ></ a > < span class = "k" > if</ span > < span class = "n" > equity</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-567" name = "__codelineno-0-567" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " Account equity must be positive to calculate margin ratio." </ span >
< a id = "__codelineno-0-568" name = "__codelineno-0-568" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-569" name = "__codelineno-0-569" ></ a > < span class = "n" > margin</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > account</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " margin" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-570" name = "__codelineno-0-570" ></ a > < span class = "k" > if</ span > < span class = "n" > new_position_side</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span > < span class = "ow" > and</ span > < span class = "n" > new_position_volume</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-571" name = "__codelineno-0-571" ></ a > < span class = "n" > side</ span > < span class = "o" > =</ span > < span class = "n" > _normalize_order_side</ span >< span class = "p" > (</ span >< span class = "n" > new_position_side</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-572" name = "__codelineno-0-572" ></ a > < span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-573" name = "__codelineno-0-573" ></ a > < span class = "n" > price</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " ask" </ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " bid" </ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-574" name = "__codelineno-0-574" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > price</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > price</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-575" name = "__codelineno-0-575" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick price is unavailable for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-576" name = "__codelineno-0-576" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-577" name = "__codelineno-0-577" ></ a > < span class = "n" > order_type</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-578" name = "__codelineno-0-578" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_BUY</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_SELL</ span >
< a id = "__codelineno-0-579" name = "__codelineno-0-579" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-580" name = "__codelineno-0-580" ></ a > < span class = "n" > margin</ span > < span class = "o" > +=</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-581" name = "__codelineno-0-581" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > order_calc_margin</ span >< span class = "p" > (</ span >< span class = "n" > order_type</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > new_position_volume</ span >< span class = "p" > ,</ span > < span class = "n" > price</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-582" name = "__codelineno-0-582" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-583" name = "__codelineno-0-583" ></ a > < span class = "k" > return</ span > < span class = "n" > margin</ span > < span class = "o" > /</ span > < span class = "n" > equity</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.calculate_spread_ratio" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > calculate_spread_ratio</ span >
< a href = "#mt5cli.trading.calculate_spread_ratio" 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" > calculate_spread_ratio</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return < code > (ask - bid) / ((ask + bid) / 2)</ code > for the latest tick.</ p >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
2026-06-11 10:33:27 +00:00
< tr class = "doc-section-item" >
< td >
2026-06-14 17:47:52 +00:00
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > If bid or ask is unavailable or non-positive.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
2026-06-14 17:47:52 +00:00
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-534" > 534</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-535" > 535</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-536" > 536</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-537" > 537</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-538" > 538</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-539" > 539</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-540" > 540</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-541" > 541</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-542" > 542</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-543" > 543</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-544" > 544</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-545" > 545</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-546" > 546</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-547" > 547</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-548" > 548</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-549" > 549</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-534" name = "__codelineno-0-534" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > calculate_spread_ratio</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > float</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-535" name = "__codelineno-0-535" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return ``(ask - bid) / ((ask + bid) / 2)`` for the latest tick.</ span >
< a id = "__codelineno-0-536" name = "__codelineno-0-536" ></ a >
< a id = "__codelineno-0-537" name = "__codelineno-0-537" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-538" name = "__codelineno-0-538" ></ a >< span class = "sd" > Mt5TradingError: If bid or ask is unavailable or non-positive.</ span >
< a id = "__codelineno-0-539" name = "__codelineno-0-539" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-540" name = "__codelineno-0-540" ></ a > < span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-541" name = "__codelineno-0-541" ></ a > < span class = "n" > bid</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " bid" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-542" name = "__codelineno-0-542" ></ a > < span class = "n" > ask</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " ask" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-543" name = "__codelineno-0-543" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > bid</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > ask</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-544" name = "__codelineno-0-544" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick bid/ask is unavailable for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-545" name = "__codelineno-0-545" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-546" name = "__codelineno-0-546" ></ a > < span class = "k" > if</ span > < span class = "n" > bid</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span > < span class = "ow" > or</ span > < span class = "n" > ask</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-547" name = "__codelineno-0-547" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick bid/ask must be positive for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-548" name = "__codelineno-0-548" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-549" name = "__codelineno-0-549" ></ a > < span class = "k" > return</ span > < span class = "p" > (</ span >< span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > ask</ span >< span class = "p" > )</ span > < span class = "o" > -</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > bid</ span >< span class = "p" > ))</ span > < span class = "o" > /</ span > < span class = "p" > ((</ span >< span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > ask</ span >< span class = "p" > )</ span > < span class = "o" > +</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > bid</ span >< span class = "p" > ))</ span > < span class = "o" > /</ span > < span class = "mf" > 2.0</ span >< span class = "p" > )</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.calculate_volume_by_margin" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > calculate_volume_by_margin</ span >
< a href = "#mt5cli.trading.calculate_volume_by_margin" 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" > calculate_volume_by_margin</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > available_margin</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > order_side</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderSide
module-attribute
(mt5cli.trading.OrderSide)" href = "#mt5cli.trading.OrderSide" > OrderSide</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "float" > float</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Calculate max normalized volume affordable for one side.</ p >
2026-06-11 10:33:27 +00:00
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-14 17:47:52 +00:00
< code >< span title = "float" > float</ span ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > Affordable volume rounded down to symbol volume constraints.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
</ tr >
2026-06-14 17:47:52 +00:00
</ tbody >
</ table >
2026-06-11 10:33:27 +00:00
2026-06-14 17:47:52 +00:00
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > If symbol volume constraints or tick data are invalid.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
</ tr >
2026-06-14 17:47:52 +00:00
</ tbody >
</ table >
2026-06-11 10:33:27 +00:00
2026-06-14 17:47:52 +00:00
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-673" > 673</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-674" > 674</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-675" > 675</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-676" > 676</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-677" > 677</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-678" > 678</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-679" > 679</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-680" > 680</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-681" > 681</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-682" > 682</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-683" > 683</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-684" > 684</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-685" > 685</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-686" > 686</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-687" > 687</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-688" > 688</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-689" > 689</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-690" > 690</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-691" > 691</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-692" > 692</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-693" > 693</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-694" > 694</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-695" > 695</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-696" > 696</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-697" > 697</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-698" > 698</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-699" > 699</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-700" > 700</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-701" > 701</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-702" > 702</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-703" > 703</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-704" > 704</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-705" > 705</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-706" > 706</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-707" > 707</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-708" > 708</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-709" > 709</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-710" > 710</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-711" > 711</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-712" > 712</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-673" name = "__codelineno-0-673" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > calculate_volume_by_margin</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-674" name = "__codelineno-0-674" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-675" name = "__codelineno-0-675" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-676" name = "__codelineno-0-676" ></ a > < span class = "n" > available_margin</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-677" name = "__codelineno-0-677" ></ a > < span class = "n" > order_side</ span >< span class = "p" > :</ span > < span class = "n" > OrderSide</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-678" name = "__codelineno-0-678" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > float</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-679" name = "__codelineno-0-679" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Calculate max normalized volume affordable for one side.</ span >
< a id = "__codelineno-0-680" name = "__codelineno-0-680" ></ a >
< a id = "__codelineno-0-681" name = "__codelineno-0-681" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-682" name = "__codelineno-0-682" ></ a >< span class = "sd" > Affordable volume rounded down to symbol volume constraints.</ span >
< a id = "__codelineno-0-683" name = "__codelineno-0-683" ></ a >
< a id = "__codelineno-0-684" name = "__codelineno-0-684" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-685" name = "__codelineno-0-685" ></ a >< span class = "sd" > Mt5TradingError: If symbol volume constraints or tick data are invalid.</ span >
< a id = "__codelineno-0-686" name = "__codelineno-0-686" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-687" name = "__codelineno-0-687" ></ a > < span class = "k" > if</ span > < span class = "n" > available_margin</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-688" name = "__codelineno-0-688" ></ a > < span class = "k" > return</ span > < span class = "mf" > 0.0</ span >
< a id = "__codelineno-0-689" name = "__codelineno-0-689" ></ a > < span class = "n" > symbol_info</ span > < span class = "o" > =</ span > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-690" name = "__codelineno-0-690" ></ a > < span class = "n" > volume_min</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_min" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-691" name = "__codelineno-0-691" ></ a > < span class = "n" > volume_max</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_max" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-692" name = "__codelineno-0-692" ></ a > < span class = "n" > volume_step</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " volume_step" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > volume_min</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-693" name = "__codelineno-0-693" ></ a > < span class = "k" > if</ span > < span class = "n" > volume_min</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span > < span class = "ow" > or</ span > < span class = "n" > volume_step</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-694" name = "__codelineno-0-694" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Invalid volume constraints for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-695" name = "__codelineno-0-695" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-696" name = "__codelineno-0-696" ></ a > < span class = "n" > side</ span > < span class = "o" > =</ span > < span class = "n" > _normalize_order_side</ span >< span class = "p" > (</ span >< span class = "n" > order_side</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-697" name = "__codelineno-0-697" ></ a > < span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-698" name = "__codelineno-0-698" ></ a > < span class = "n" > price</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " ask" </ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " bid" </ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-699" name = "__codelineno-0-699" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > price</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > price</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-700" name = "__codelineno-0-700" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick price is unavailable for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-701" name = "__codelineno-0-701" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-702" name = "__codelineno-0-702" ></ a > < span class = "n" > order_type</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-703" name = "__codelineno-0-703" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_BUY</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_SELL</ span >
< a id = "__codelineno-0-704" name = "__codelineno-0-704" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-705" name = "__codelineno-0-705" ></ a > < span class = "n" > min_margin</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > order_calc_margin</ span >< span class = "p" > (</ span >< span class = "n" > order_type</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > volume_min</ span >< span class = "p" > ,</ span > < span class = "n" > price</ span >< span class = "p" > ))</ span >
< a id = "__codelineno-0-706" name = "__codelineno-0-706" ></ a > < span class = "k" > if</ span > < span class = "n" > min_margin</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span > < span class = "ow" > or</ span > < span class = "n" > min_margin</ span > < span class = "o" > > </ span > < span class = "n" > available_margin</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-707" name = "__codelineno-0-707" ></ a > < span class = "k" > return</ span > < span class = "mf" > 0.0</ span >
< a id = "__codelineno-0-708" name = "__codelineno-0-708" ></ a > < span class = "n" > raw_volume</ span > < span class = "o" > =</ span > < span class = "n" > available_margin</ span > < span class = "o" > /</ span > < span class = "n" > min_margin</ span > < span class = "o" > *</ span > < span class = "n" > volume_min</ span >
< a id = "__codelineno-0-709" name = "__codelineno-0-709" ></ a > < span class = "n" > capped</ span > < span class = "o" > =</ span > < span class = "nb" > min</ span >< span class = "p" > (</ span >< span class = "n" > raw_volume</ span >< span class = "p" > ,</ span > < span class = "n" > volume_max</ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "n" > volume_max</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span > < span class = "k" > else</ span > < span class = "n" > raw_volume</ span >
< a id = "__codelineno-0-710" name = "__codelineno-0-710" ></ a > < span class = "n" > steps</ span > < span class = "o" > =</ span > < span class = "n" > floor</ span >< span class = "p" > (((</ span >< span class = "n" > capped</ span > < span class = "o" > -</ span > < span class = "n" > volume_min</ span >< span class = "p" > )</ span > < span class = "o" > /</ span > < span class = "n" > volume_step</ span >< span class = "p" > )</ span > < span class = "o" > +</ span > < span class = "mf" > 1e-12</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-711" name = "__codelineno-0-711" ></ a > < span class = "n" > normalized</ span > < span class = "o" > =</ span > < span class = "n" > volume_min</ span > < span class = "o" > +</ span > < span class = "nb" > max</ span >< span class = "p" > (</ span >< span class = "mi" > 0</ span >< span class = "p" > ,</ span > < span class = "n" > steps</ span >< span class = "p" > )</ span > < span class = "o" > *</ span > < span class = "n" > volume_step</ span >
< a id = "__codelineno-0-712" name = "__codelineno-0-712" ></ a > < span class = "k" > return</ span > < span class = "nb" > round</ span >< span class = "p" > (</ span >< span class = "n" > normalized</ span >< span class = "p" > ,</ span > < span class = "mi" > 10</ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "n" > normalized</ span > < span class = "o" > > =</ span > < span class = "n" > volume_min</ span > < span class = "k" > else</ span > < span class = "mf" > 0.0</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.close_open_positions" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > close_open_positions</ span >
< a href = "#mt5cli.trading.close_open_positions" 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" > close_open_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > tickets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ]</ span > < 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" > dry_run</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
2026-06-18 10:12:55 +00:00
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a ></ span >< span class = "p" > ]</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Close matching open positions.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-18 10:12:55 +00:00
< code >< span title = "list" > list</ span > [< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a > ]</ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > Normalized execution results for matching positions.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-903" > 903</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-904" > 904</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-905" > 905</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-906" > 906</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-907" > 907</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-908" > 908</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-909" > 909</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-910" > 910</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-911" > 911</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-912" > 912</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-913" > 913</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-914" > 914</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-915" > 915</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-916" > 916</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-917" > 917</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-918" > 918</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-919" > 919</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-920" > 920</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-921" > 921</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-922" > 922</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-923" > 923</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-924" > 924</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-925" > 925</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-926" > 926</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-927" > 927</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-928" > 928</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-929" > 929</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-930" > 930</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-931" > 931</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-932" > 932</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-933" > 933</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-903" name = "__codelineno-0-903" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > close_open_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-904" name = "__codelineno-0-904" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-905" name = "__codelineno-0-905" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-906" name = "__codelineno-0-906" ></ a > < span class = "n" > symbols</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-907" name = "__codelineno-0-907" ></ a > < span class = "n" > tickets</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > int</ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-908" name = "__codelineno-0-908" ></ a > < span class = "n" > dry_run</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-909" name = "__codelineno-0-909" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > OrderExecutionResult</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-910" name = "__codelineno-0-910" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Close matching open positions.</ span >
< a id = "__codelineno-0-911" name = "__codelineno-0-911" ></ a >
< a id = "__codelineno-0-912" name = "__codelineno-0-912" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-913" name = "__codelineno-0-913" ></ a >< span class = "sd" > Normalized execution results for matching positions.</ span >
< a id = "__codelineno-0-914" name = "__codelineno-0-914" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-915" name = "__codelineno-0-915" ></ a > < span class = "n" > positions</ span > < span class = "o" > =</ span > < span class = "n" > _filter_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-916" name = "__codelineno-0-916" ></ a > < span class = "n" > get_positions_frame</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-917" name = "__codelineno-0-917" ></ a > < span class = "n" > symbols</ span >< span class = "o" > =</ span >< span class = "n" > symbols</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-918" name = "__codelineno-0-918" ></ a > < span class = "n" > tickets</ span >< span class = "o" > =</ span >< span class = "n" > tickets</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-919" name = "__codelineno-0-919" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-920" name = "__codelineno-0-920" ></ a > < span class = "n" > results</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > OrderExecutionResult</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > []</ span >
< a id = "__codelineno-0-921" name = "__codelineno-0-921" ></ a > < span class = "k" > for</ span > < span class = "n" > row</ span > < span class = "ow" > in</ span > < span class = "n" > positions</ span >< span class = "o" > .</ span >< span class = "n" > to_dict</ span >< span class = "p" > (</ span >< span class = "s2" > " records" </ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-922" name = "__codelineno-0-922" ></ a > < span class = "n" > pos_type</ span > < span class = "o" > =</ span > < span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " type" </ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-923" name = "__codelineno-0-923" ></ a > < span class = "n" > side</ span >< span class = "p" > :</ span > < span class = "n" > OrderSide</ span > < span class = "o" > =</ span > < span class = "s2" > " SELL" </ span > < span class = "k" > if</ span > < span class = "n" > pos_type</ span > < span class = "o" > ==</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > POSITION_TYPE_BUY</ span > < span class = "k" > else</ span > < span class = "s2" > " BUY" </ span >
< a id = "__codelineno-0-924" name = "__codelineno-0-924" ></ a > < span class = "n" > result</ span > < span class = "o" > =</ span > < span class = "n" > place_market_order</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-925" name = "__codelineno-0-925" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-926" name = "__codelineno-0-926" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]),</ span >
< a id = "__codelineno-0-927" name = "__codelineno-0-927" ></ a > < span class = "n" > volume</ span >< span class = "o" > =</ span >< span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " volume" </ span >< span class = "p" > ]),</ span >
< a id = "__codelineno-0-928" name = "__codelineno-0-928" ></ a > < span class = "n" > order_side</ span >< span class = "o" > =</ span >< span class = "n" > side</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-929" name = "__codelineno-0-929" ></ a > < span class = "n" > position</ span >< span class = "o" > =</ span >< span class = "nb" > int</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " ticket" </ span >< span class = "p" > ]),</ span >
< a id = "__codelineno-0-930" name = "__codelineno-0-930" ></ a > < span class = "n" > dry_run</ span >< span class = "o" > =</ span >< span class = "n" > dry_run</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-931" name = "__codelineno-0-931" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-932" name = "__codelineno-0-932" ></ a > < span class = "n" > results</ span >< span class = "o" > .</ span >< span class = "n" > append</ span >< span class = "p" > (</ span >< span class = "n" > result</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-933" name = "__codelineno-0-933" ></ a > < span class = "k" > return</ span > < span class = "n" > results</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
2026-06-14 17:47:52 +00:00
< h3 id = "mt5cli.trading.create_trading_client" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > create_trading_client</ span >
2026-06-11 10:33:27 +00:00
2026-06-14 17:47:52 +00:00
< a href = "#mt5cli.trading.create_trading_client" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > create_trading_client</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > config</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5Config" > Mt5Config</ 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-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > login</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > password</ 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" > server</ 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-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > path</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > timeout</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > retry_count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > =</ span > < span class = "mi" > 0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return an initialized and logged-in trading client.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-427" > 427</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-428" > 428</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-429" > 429</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-430" > 430</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-431" > 431</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-432" > 432</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-433" > 433</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-434" > 434</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-435" > 435</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-436" > 436</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-437" > 437</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-438" > 438</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-439" > 439</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-440" > 440</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-441" > 441</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-442" > 442</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-443" > 443</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-444" > 444</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-445" > 445</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-446" > 446</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-447" > 447</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-448" > 448</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-449" > 449</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-450" > 450</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-451" > 451</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-452" > 452</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-427" name = "__codelineno-0-427" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > create_trading_client</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-428" name = "__codelineno-0-428" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-429" name = "__codelineno-0-429" ></ a > < span class = "n" > config</ span >< span class = "p" > :</ span > < span class = "n" > Mt5Config</ 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-430" name = "__codelineno-0-430" ></ a > < span class = "n" > login</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-431" name = "__codelineno-0-431" ></ a > < span class = "n" > password</ 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-432" name = "__codelineno-0-432" ></ a > < span class = "n" > server</ 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-433" name = "__codelineno-0-433" ></ a > < span class = "n" > path</ 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-434" name = "__codelineno-0-434" ></ a > < span class = "n" > timeout</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-435" name = "__codelineno-0-435" ></ a > < span class = "n" > retry_count</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > =</ span > < span class = "mi" > 0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-436" name = "__codelineno-0-436" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-437" name = "__codelineno-0-437" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return an initialized and logged-in trading client.""" </ span >
< a id = "__codelineno-0-438" name = "__codelineno-0-438" ></ a > < span class = "n" > mt5_config</ span > < span class = "o" > =</ span > < span class = "n" > _resolve_config</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-439" name = "__codelineno-0-439" ></ a > < span class = "n" > config</ span >< span class = "o" > =</ span >< span class = "n" > config</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-440" name = "__codelineno-0-440" ></ a > < span class = "n" > login</ span >< span class = "o" > =</ span >< span class = "n" > login</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-441" name = "__codelineno-0-441" ></ a > < span class = "n" > password</ span >< span class = "o" > =</ span >< span class = "n" > password</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-442" name = "__codelineno-0-442" ></ a > < span class = "n" > server</ span >< span class = "o" > =</ span >< span class = "n" > server</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-443" name = "__codelineno-0-443" ></ a > < span class = "n" > path</ span >< span class = "o" > =</ span >< span class = "n" > path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-444" name = "__codelineno-0-444" ></ a > < span class = "n" > timeout</ span >< span class = "o" > =</ span >< span class = "n" > timeout</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-445" name = "__codelineno-0-445" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-446" name = "__codelineno-0-446" ></ a > < span class = "n" > client</ span > < span class = "o" > =</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > (</ span >< span class = "n" > config</ span >< span class = "o" > =</ span >< span class = "n" > mt5_config</ span >< span class = "p" > ,</ span > < span class = "n" > retry_count</ span >< span class = "o" > =</ span >< span class = "n" > retry_count</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-447" name = "__codelineno-0-447" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-448" name = "__codelineno-0-448" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > initialize_and_login_mt5</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-449" name = "__codelineno-0-449" ></ a > < span class = "k" > except</ span > < span class = "ne" > Exception</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-450" name = "__codelineno-0-450" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > shutdown</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-451" name = "__codelineno-0-451" ></ a > < span class = "k" > raise</ span >
< a id = "__codelineno-0-452" name = "__codelineno-0-452" ></ a > < span class = "k" > return</ span > < span class = "n" > client</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.detect_position_side" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > detect_position_side</ span >
< a href = "#mt5cli.trading.detect_position_side" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > detect_position_side</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "PositionSide
2026-06-11 10:33:27 +00:00
module-attribute
2026-06-14 17:47:52 +00:00
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
2026-06-14 17:47:52 +00:00
< p > Detect the net open position side for a symbol.</ p >
2026-06-11 10:33:27 +00:00
< 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 > client</ code >
</ td >
< td >
< code >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Connected < code > Mt5TradingClient</ code > instance.</ 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 ></ code >
</ td >
< td >
< div class = "doc-md-description" >
2026-06-14 17:47:52 +00:00
< p > Symbol to inspect.</ p >
2026-06-11 10:33:27 +00:00
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
2026-06-14 17:47:52 +00:00
</ tbody >
</ table >
2026-06-11 10:33:27 +00:00
2026-06-14 17:47:52 +00:00
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "PositionSide
module-attribute
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p >< code > "long"</ code > when there are buy positions and no sell positions,</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "PositionSide
module-attribute
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p >< code > "short"</ code > when there are sell positions and no buy positions, or</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code >< a class = "autorefs autorefs-internal" title = "PositionSide
module-attribute
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p >< code > None</ code > when no positions or mixed exposure exists.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-455" > 455</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-456" > 456</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-457" > 457</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-458" > 458</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-459" > 459</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-460" > 460</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-461" > 461</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-462" > 462</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-463" > 463</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-464" > 464</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-465" > 465</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-466" > 466</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-467" > 467</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-468" > 468</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-469" > 469</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-470" > 470</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-471" > 471</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-472" > 472</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-473" > 473</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-474" > 474</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-475" > 475</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-476" > 476</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-477" > 477</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-478" > 478</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-479" > 479</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-480" > 480</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-481" > 481</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-482" > 482</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-455" name = "__codelineno-0-455" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > detect_position_side</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-456" name = "__codelineno-0-456" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-457" name = "__codelineno-0-457" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-458" name = "__codelineno-0-458" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > PositionSide</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-459" name = "__codelineno-0-459" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Detect the net open position side for a symbol.</ span >
< a id = "__codelineno-0-460" name = "__codelineno-0-460" ></ a >
< a id = "__codelineno-0-461" name = "__codelineno-0-461" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-462" name = "__codelineno-0-462" ></ a >< span class = "sd" > client: Connected ``Mt5TradingClient`` instance.</ span >
< a id = "__codelineno-0-463" name = "__codelineno-0-463" ></ a >< span class = "sd" > symbol: Symbol to inspect.</ span >
< a id = "__codelineno-0-464" name = "__codelineno-0-464" ></ a >
< a id = "__codelineno-0-465" name = "__codelineno-0-465" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-466" name = "__codelineno-0-466" ></ a >< span class = "sd" > ``" long" `` when there are buy positions and no sell positions,</ span >
< a id = "__codelineno-0-467" name = "__codelineno-0-467" ></ a >< span class = "sd" > ``" short" `` when there are sell positions and no buy positions, or</ span >
< a id = "__codelineno-0-468" name = "__codelineno-0-468" ></ a >< span class = "sd" > ``None`` when no positions or mixed exposure exists.</ span >
< a id = "__codelineno-0-469" name = "__codelineno-0-469" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-470" name = "__codelineno-0-470" ></ a > < span class = "n" > positions</ span > < span class = "o" > =</ span > < span class = "n" > get_positions_frame</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-471" name = "__codelineno-0-471" ></ a > < span class = "k" > if</ span > < span class = "n" > positions</ span >< span class = "o" > .</ span >< span class = "n" > empty</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-472" name = "__codelineno-0-472" ></ a > < span class = "k" > return</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-473" name = "__codelineno-0-473" ></ a >
< a id = "__codelineno-0-474" name = "__codelineno-0-474" ></ a > < span class = "n" > buy_type</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > POSITION_TYPE_BUY</ span >
< a id = "__codelineno-0-475" name = "__codelineno-0-475" ></ a > < span class = "n" > sell_type</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > POSITION_TYPE_SELL</ span >
< a id = "__codelineno-0-476" name = "__codelineno-0-476" ></ a > < span class = "n" > buy_volume</ span > < span class = "o" > =</ span > < span class = "n" > _sum_position_volume</ span >< span class = "p" > (</ span >< span class = "n" > positions</ span >< span class = "p" > ,</ span > < span class = "n" > buy_type</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-477" name = "__codelineno-0-477" ></ a > < span class = "n" > sell_volume</ span > < span class = "o" > =</ span > < span class = "n" > _sum_position_volume</ span >< span class = "p" > (</ span >< span class = "n" > positions</ span >< span class = "p" > ,</ span > < span class = "n" > sell_type</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-478" name = "__codelineno-0-478" ></ a > < span class = "k" > if</ span > < span class = "n" > buy_volume</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span > < span class = "ow" > and</ span > < span class = "n" > sell_volume</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-479" name = "__codelineno-0-479" ></ a > < span class = "k" > return</ span > < span class = "s2" > " long" </ span >
< a id = "__codelineno-0-480" name = "__codelineno-0-480" ></ a > < span class = "k" > if</ span > < span class = "n" > sell_volume</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span > < span class = "ow" > and</ span > < span class = "n" > buy_volume</ span > < span class = "o" > ==</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-481" name = "__codelineno-0-481" ></ a > < span class = "k" > return</ span > < span class = "s2" > " short" </ span >
< a id = "__codelineno-0-482" name = "__codelineno-0-482" ></ a > < span class = "k" > return</ span > < span class = "kc" > None</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.determine_order_limits" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > determine_order_limits</ span >
< a href = "#mt5cli.trading.determine_order_limits" 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" > determine_order_limits</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > side</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "PositionSide
module-attribute
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > stop_loss_limit_ratio</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ 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" > take_profit_limit_ratio</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
2026-06-18 10:12:55 +00:00
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderLimits (mt5cli.trading.OrderLimits)" href = "#mt5cli.trading.OrderLimits" > OrderLimits</ a ></ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Derive entry and protective order prices from current market quotes.</ 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 > client</ code >
</ td >
< td >
< code >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Connected < code > Mt5TradingClient</ code > instance.</ 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 ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Symbol used for the quote lookup.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > side</ code >
</ td >
< td >
< code >< a class = "autorefs autorefs-internal" title = "PositionSide
module-attribute
(mt5cli.trading.PositionSide)" href = "#mt5cli.trading.PositionSide" > PositionSide</ a > | < span title = "str" > str</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Position side as < code > "long"</ code > /< code > "short"</ code > (< code > "buy"</ code > /< code > "sell"</ code >
aliases are accepted).</ p >
</ div >
</ td >
2026-06-11 10:33:27 +00:00
< td >
< em > required</ em >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > stop_loss_limit_ratio</ code >
</ td >
< td >
2026-06-14 17:47:52 +00:00
< code >< span title = "float" > float</ span > | None</ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Relative distance from entry for stop loss in
< code > [0, 1)</ code > . A value of < code > 0</ code > omits the stop loss.</ p >
</ div >
</ td >
< td >
2026-06-14 17:47:52 +00:00
< code > None</ code >
2026-06-11 10:33:27 +00:00
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > take_profit_limit_ratio</ code >
</ td >
< td >
2026-06-14 17:47:52 +00:00
< code >< span title = "float" > float</ span > | None</ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Relative distance from entry for take profit in
< code > [0, 1)</ code > . A value of < code > 0</ code > omits the take profit.</ p >
</ div >
</ td >
< td >
2026-06-14 17:47:52 +00:00
< code > None</ code >
2026-06-11 10:33:27 +00:00
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-18 10:12:55 +00:00
< code >< a class = "autorefs autorefs-internal" title = "OrderLimits (mt5cli.trading.OrderLimits)" href = "#mt5cli.trading.OrderLimits" > OrderLimits</ a ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Dictionary with < code > entry</ code > , < code > stop_loss</ code > , and < code > take_profit</ code > keys.</ p >
</ div >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
2026-06-18 10:12:55 +00:00
< code >< a class = "autorefs autorefs-internal" title = "OrderLimits (mt5cli.trading.OrderLimits)" href = "#mt5cli.trading.OrderLimits" > OrderLimits</ a ></ code >
2026-06-11 10:33:27 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Omitted protective levels are returned as < code > None</ code > .</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
2026-06-14 17:47:52 +00:00
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
2026-06-18 10:12:55 +00:00
< p > If required tick data is invalid or computed SL/TP
prices violate available < code > trade_stops_level</ code > pre-validation.</ p >
2026-06-14 17:47:52 +00:00
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-715" > 715</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-716" > 716</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-717" > 717</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-718" > 718</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-719" > 719</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-720" > 720</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-721" > 721</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-722" > 722</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-723" > 723</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-724" > 724</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-725" > 725</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-726" > 726</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-727" > 727</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-728" > 728</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-729" > 729</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-730" > 730</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-731" > 731</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-732" > 732</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-733" > 733</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-734" > 734</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-735" > 735</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-736" > 736</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-737" > 737</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-738" > 738</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-739" > 739</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-740" > 740</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-741" > 741</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-742" > 742</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-743" > 743</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-744" > 744</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-745" > 745</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-746" > 746</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-747" > 747</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-748" > 748</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-749" > 749</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-750" > 750</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-751" > 751</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-752" > 752</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-753" > 753</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-754" > 754</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-755" > 755</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-756" > 756</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-757" > 757</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-758" > 758</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-759" > 759</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-760" > 760</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-761" > 761</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-762" > 762</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-763" > 763</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-764" > 764</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-765" > 765</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-766" > 766</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-767" > 767</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-768" > 768</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-769" > 769</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-770" > 770</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-771" > 771</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-772" > 772</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-773" > 773</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-774" > 774</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-775" > 775</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-776" > 776</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-777" > 777</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-778" > 778</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-779" > 779</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-780" > 780</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-781" > 781</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-782" > 782</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-783" > 783</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-784" > 784</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-785" > 785</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-786" > 786</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-787" > 787</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-788" > 788</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-789" > 789</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-790" > 790</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-791" > 791</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-792" > 792</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-715" name = "__codelineno-0-715" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > determine_order_limits</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-716" name = "__codelineno-0-716" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-717" name = "__codelineno-0-717" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-718" name = "__codelineno-0-718" ></ a > < span class = "n" > side</ span >< span class = "p" > :</ span > < span class = "n" > PositionSide</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-719" name = "__codelineno-0-719" ></ a > < span class = "n" > stop_loss_limit_ratio</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-720" name = "__codelineno-0-720" ></ a > < span class = "n" > take_profit_limit_ratio</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-721" name = "__codelineno-0-721" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > OrderLimits</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-722" name = "__codelineno-0-722" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Derive entry and protective order prices from current market quotes.</ span >
< a id = "__codelineno-0-723" name = "__codelineno-0-723" ></ a >
< a id = "__codelineno-0-724" name = "__codelineno-0-724" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-725" name = "__codelineno-0-725" ></ a >< span class = "sd" > client: Connected ``Mt5TradingClient`` instance.</ span >
< a id = "__codelineno-0-726" name = "__codelineno-0-726" ></ a >< span class = "sd" > symbol: Symbol used for the quote lookup.</ span >
< a id = "__codelineno-0-727" name = "__codelineno-0-727" ></ a >< span class = "sd" > side: Position side as ``" long" ``/``" short" `` (``" buy" ``/``" sell" ``</ span >
< a id = "__codelineno-0-728" name = "__codelineno-0-728" ></ a >< span class = "sd" > aliases are accepted).</ span >
< a id = "__codelineno-0-729" name = "__codelineno-0-729" ></ a >< span class = "sd" > stop_loss_limit_ratio: Relative distance from entry for stop loss in</ span >
< a id = "__codelineno-0-730" name = "__codelineno-0-730" ></ a >< span class = "sd" > ``[0, 1)``. A value of ``0`` omits the stop loss.</ span >
< a id = "__codelineno-0-731" name = "__codelineno-0-731" ></ a >< span class = "sd" > take_profit_limit_ratio: Relative distance from entry for take profit in</ span >
< a id = "__codelineno-0-732" name = "__codelineno-0-732" ></ a >< span class = "sd" > ``[0, 1)``. A value of ``0`` omits the take profit.</ span >
< a id = "__codelineno-0-733" name = "__codelineno-0-733" ></ a >
< a id = "__codelineno-0-734" name = "__codelineno-0-734" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-735" name = "__codelineno-0-735" ></ a >< span class = "sd" > Dictionary with ``entry``, ``stop_loss``, and ``take_profit`` keys.</ span >
< a id = "__codelineno-0-736" name = "__codelineno-0-736" ></ a >< span class = "sd" > Omitted protective levels are returned as ``None``.</ span >
< a id = "__codelineno-0-737" name = "__codelineno-0-737" ></ a >
< a id = "__codelineno-0-738" name = "__codelineno-0-738" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-739" name = "__codelineno-0-739" ></ a >< span class = "sd" > Mt5TradingError: If required tick data is invalid or computed SL/TP</ span >
< a id = "__codelineno-0-740" name = "__codelineno-0-740" ></ a >< span class = "sd" > prices violate available ``trade_stops_level`` pre-validation.</ span >
< a id = "__codelineno-0-741" name = "__codelineno-0-741" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-742" name = "__codelineno-0-742" ></ a > < span class = "n" > stop_loss_ratio</ span > < span class = "o" > =</ span > < span class = "n" > stop_loss_limit_ratio</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >
< a id = "__codelineno-0-743" name = "__codelineno-0-743" ></ a > < span class = "n" > take_profit_ratio</ span > < span class = "o" > =</ span > < span class = "n" > take_profit_limit_ratio</ span > < span class = "ow" > or</ span > < span class = "mf" > 0.0</ span >
< a id = "__codelineno-0-744" name = "__codelineno-0-744" ></ a > < span class = "n" > _require_protective_ratio</ span >< span class = "p" > (</ span >< span class = "n" > stop_loss_ratio</ span >< span class = "p" > ,</ span > < span class = "s2" > " stop_loss_limit_ratio" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-745" name = "__codelineno-0-745" ></ a > < span class = "n" > _require_protective_ratio</ span >< span class = "p" > (</ span >< span class = "n" > take_profit_ratio</ span >< span class = "p" > ,</ span > < span class = "s2" > " take_profit_limit_ratio" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-746" name = "__codelineno-0-746" ></ a > < span class = "n" > normalized_side</ span > < span class = "o" > =</ span > < span class = "n" > _position_side_from_order_side</ span >< span class = "p" > (</ span >< span class = "n" > side</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-747" name = "__codelineno-0-747" ></ a > < span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-748" name = "__codelineno-0-748" ></ a > < span class = "n" > entry_value</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " ask" </ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > normalized_side</ span > < span class = "o" > ==</ span > < span class = "s2" > " long" </ span > < span class = "k" > else</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " bid" </ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-749" name = "__codelineno-0-749" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > entry_value</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-750" name = "__codelineno-0-750" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick price is unavailable for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-751" name = "__codelineno-0-751" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-752" name = "__codelineno-0-752" ></ a > < span class = "n" > entry</ span > < span class = "o" > =</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > entry_value</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-753" name = "__codelineno-0-753" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-754" name = "__codelineno-0-754" ></ a > < span class = "n" > symbol_info</ span > < span class = "o" > =</ span > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-755" name = "__codelineno-0-755" ></ a > < span class = "k" > except</ span > < span class = "p" > (</ span >< span class = "ne" > AttributeError</ span >< span class = "p" > ,</ span > < span class = "ne" > KeyError</ span >< span class = "p" > ,</ span > < span class = "ne" > TypeError</ span >< span class = "p" > ,</ span > < span class = "ne" > ValueError</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-756" name = "__codelineno-0-756" ></ a > < span class = "n" > symbol_info</ span > < span class = "o" > =</ span > < span class = "p" > {}</ span >
< a id = "__codelineno-0-757" name = "__codelineno-0-757" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-758" name = "__codelineno-0-758" ></ a > < span class = "n" > digits</ span > < span class = "o" > =</ span > < span class = "nb" > int</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " digits" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "mi" > 8</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-759" name = "__codelineno-0-759" ></ a > < span class = "k" > except</ span > < span class = "p" > (</ span >< span class = "ne" > TypeError</ span >< span class = "p" > ,</ span > < span class = "ne" > ValueError</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-760" name = "__codelineno-0-760" ></ a > < span class = "n" > digits</ span > < span class = "o" > =</ span > < span class = "mi" > 8</ span >
< a id = "__codelineno-0-761" name = "__codelineno-0-761" ></ a > < span class = "n" > min_distance</ span > < span class = "o" > =</ span > < span class = "n" > _minimum_stop_distance</ span >< span class = "p" > (</ span >< span class = "n" > symbol_info</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-762" name = "__codelineno-0-762" ></ a >
< a id = "__codelineno-0-763" name = "__codelineno-0-763" ></ a > < span class = "n" > stop_loss</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-764" name = "__codelineno-0-764" ></ a > < span class = "k" > if</ span > < span class = "n" > stop_loss_ratio</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-765" name = "__codelineno-0-765" ></ a > < span class = "k" > if</ span > < span class = "n" > normalized_side</ span > < span class = "o" > ==</ span > < span class = "s2" > " long" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-766" name = "__codelineno-0-766" ></ a > < span class = "n" > stop_loss</ span > < span class = "o" > =</ span > < span class = "n" > entry</ span > < span class = "o" > *</ span > < span class = "p" > (</ span >< span class = "mf" > 1.0</ span > < span class = "o" > -</ span > < span class = "n" > stop_loss_ratio</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-767" name = "__codelineno-0-767" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-768" name = "__codelineno-0-768" ></ a > < span class = "n" > stop_loss</ span > < span class = "o" > =</ span > < span class = "n" > entry</ span > < span class = "o" > *</ span > < span class = "p" > (</ span >< span class = "mf" > 1.0</ span > < span class = "o" > +</ span > < span class = "n" > stop_loss_ratio</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-769" name = "__codelineno-0-769" ></ a > < span class = "n" > stop_loss</ span > < span class = "o" > =</ span > < span class = "nb" > round</ span >< span class = "p" > (</ span >< span class = "n" > stop_loss</ span >< span class = "p" > ,</ span > < span class = "n" > digits</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-770" name = "__codelineno-0-770" ></ a >
< a id = "__codelineno-0-771" name = "__codelineno-0-771" ></ a > < span class = "n" > take_profit</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-772" name = "__codelineno-0-772" ></ a > < span class = "k" > if</ span > < span class = "n" > take_profit_ratio</ span > < span class = "o" > > </ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-773" name = "__codelineno-0-773" ></ a > < span class = "k" > if</ span > < span class = "n" > normalized_side</ span > < span class = "o" > ==</ span > < span class = "s2" > " long" </ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-774" name = "__codelineno-0-774" ></ a > < span class = "n" > take_profit</ span > < span class = "o" > =</ span > < span class = "n" > entry</ span > < span class = "o" > *</ span > < span class = "p" > (</ span >< span class = "mf" > 1.0</ span > < span class = "o" > +</ span > < span class = "n" > take_profit_ratio</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-775" name = "__codelineno-0-775" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-776" name = "__codelineno-0-776" ></ a > < span class = "n" > take_profit</ span > < span class = "o" > =</ span > < span class = "n" > entry</ span > < span class = "o" > *</ span > < span class = "p" > (</ span >< span class = "mf" > 1.0</ span > < span class = "o" > -</ span > < span class = "n" > take_profit_ratio</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-777" name = "__codelineno-0-777" ></ a > < span class = "n" > take_profit</ span > < span class = "o" > =</ span > < span class = "nb" > round</ span >< span class = "p" > (</ span >< span class = "n" > take_profit</ span >< span class = "p" > ,</ span > < span class = "n" > digits</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-778" name = "__codelineno-0-778" ></ a >
< a id = "__codelineno-0-779" name = "__codelineno-0-779" ></ a > < span class = "n" > _validate_protective_prices</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-780" name = "__codelineno-0-780" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-781" name = "__codelineno-0-781" ></ a > < span class = "n" > side</ span >< span class = "o" > =</ span >< span class = "n" > normalized_side</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-782" name = "__codelineno-0-782" ></ a > < span class = "n" > entry</ span >< span class = "o" > =</ span >< span class = "n" > entry</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-783" name = "__codelineno-0-783" ></ a > < span class = "n" > stop_loss</ span >< span class = "o" > =</ span >< span class = "n" > stop_loss</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-784" name = "__codelineno-0-784" ></ a > < span class = "n" > take_profit</ span >< span class = "o" > =</ span >< span class = "n" > take_profit</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-785" name = "__codelineno-0-785" ></ a > < span class = "n" > min_distance</ span >< span class = "o" > =</ span >< span class = "n" > min_distance</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-786" name = "__codelineno-0-786" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-787" name = "__codelineno-0-787" ></ a >
< a id = "__codelineno-0-788" name = "__codelineno-0-788" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-789" name = "__codelineno-0-789" ></ a > < span class = "s2" > " entry" </ span >< span class = "p" > :</ span > < span class = "n" > entry</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-790" name = "__codelineno-0-790" ></ a > < span class = "s2" > " stop_loss" </ span >< span class = "p" > :</ span > < span class = "n" > stop_loss</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-791" name = "__codelineno-0-791" ></ a > < span class = "s2" > " take_profit" </ span >< span class = "p" > :</ span > < span class = "n" > take_profit</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-792" name = "__codelineno-0-792" ></ a > < span class = "p" > }</ span >
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.ensure_symbol_selected" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > ensure_symbol_selected</ span >
< a href = "#mt5cli.trading.ensure_symbol_selected" 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_symbol_selected</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "kc" > None</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Ensure a symbol is visible in Market Watch before sending orders.</ 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 > client</ code >
</ td >
< td >
< code >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Connected < code > Mt5TradingClient</ code > instance.</ 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 ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Symbol to select.</ p >
</ div >
</ td >
< td >
< em > required</ em >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If the symbol cannot be selected in Market Watch or
< code > symbol_select</ code > is unavailable on the client.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.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-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 >
< span class = "normal" >< a href = "#__codelineno-0-219" > 219</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-220" > 220</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-221" > 221</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-222" > 222</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-223" > 223</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-224" > 224</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-225" > 225</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-226" > 226</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-227" > 227</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-204" name = "__codelineno-0-204" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > ensure_symbol_selected</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ 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 = "p" > :</ span >
< a id = "__codelineno-0-205" name = "__codelineno-0-205" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Ensure a symbol is visible in Market Watch before sending orders.</ span >
< a id = "__codelineno-0-206" name = "__codelineno-0-206" ></ a >
< a id = "__codelineno-0-207" name = "__codelineno-0-207" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-208" name = "__codelineno-0-208" ></ a >< span class = "sd" > client: Connected ``Mt5TradingClient`` instance.</ span >
< a id = "__codelineno-0-209" name = "__codelineno-0-209" ></ a >< span class = "sd" > symbol: Symbol to select.</ span >
< a id = "__codelineno-0-210" name = "__codelineno-0-210" ></ a >
< a id = "__codelineno-0-211" name = "__codelineno-0-211" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-212" name = "__codelineno-0-212" ></ a >< span class = "sd" > Mt5TradingError: If the symbol cannot be selected in Market Watch or</ span >
< a id = "__codelineno-0-213" name = "__codelineno-0-213" ></ a >< span class = "sd" > ``symbol_select`` is unavailable on the client.</ span >
< a id = "__codelineno-0-214" name = "__codelineno-0-214" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-215" name = "__codelineno-0-215" ></ a > < span class = "n" > snapshot</ span > < span class = "o" > =</ span > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-216" name = "__codelineno-0-216" ></ a > < span class = "k" > if</ span > < span class = "n" > snapshot</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " visible" </ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-217" name = "__codelineno-0-217" ></ a > < span class = "k" > return</ span >
< a id = "__codelineno-0-218" name = "__codelineno-0-218" ></ a > < span class = "n" > select</ span > < span class = "o" > =</ span > < span class = "nb" > getattr</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol_select" </ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-219" name = "__codelineno-0-219" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > callable</ span >< span class = "p" > (</ span >< span class = "n" > select</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-220" name = "__codelineno-0-220" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " MT5 client is missing required method: symbol_select" </ span >
< a id = "__codelineno-0-221" name = "__codelineno-0-221" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-222" name = "__codelineno-0-222" ></ a > < span class = "k" > if</ span > < span class = "n" > select</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span > < span class = "n" > enable</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-223" name = "__codelineno-0-223" ></ a > < span class = "k" > return</ span >
< a id = "__codelineno-0-224" name = "__codelineno-0-224" ></ a > < span class = "n" > last_error</ span > < span class = "o" > =</ span > < span class = "nb" > getattr</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " last_error" </ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-225" name = "__codelineno-0-225" ></ a > < span class = "n" > detail</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " (</ span >< span class = "si" > {</ span >< span class = "n" > last_error</ span >< span class = "p" > ()</ span >< span class = "si" > }</ span >< span class = "s2" > )" </ span > < span class = "k" > if</ span > < span class = "nb" > callable</ span >< span class = "p" > (</ span >< span class = "n" > last_error</ span >< span class = "p" > )</ span > < span class = "k" > else</ span > < span class = "s2" > "" </ span >
< a id = "__codelineno-0-226" name = "__codelineno-0-226" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Failed to select symbol </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > in Market Watch</ span >< span class = "si" > {</ span >< span class = "n" > detail</ span >< span class = "si" > }</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-227" name = "__codelineno-0-227" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.get_account_snapshot" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > get_account_snapshot</ span >
< a href = "#mt5cli.trading.get_account_snapshot" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > get_account_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ 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 = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return normalized account state with stable keys.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-485" > 485</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-486" > 486</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-487" > 487</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-488" > 488</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-489" > 489</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-490" > 490</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-491" > 491</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-492" > 492</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-493" > 493</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-485" name = "__codelineno-0-485" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_account_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-486" name = "__codelineno-0-486" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-487" name = "__codelineno-0-487" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "nb" > float</ span > < span class = "o" > |</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-488" name = "__codelineno-0-488" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return normalized account state with stable keys.""" </ span >
< a id = "__codelineno-0-489" name = "__codelineno-0-489" ></ a > < span class = "n" > value</ span > < span class = "o" > =</ span > < span class = "n" > _call_snapshot_method</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " account_info_as_dict" </ span >< span class = "p" > ,</ span > < span class = "s2" > " account_info" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-490" name = "__codelineno-0-490" ></ a > < span class = "k" > return</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-491" name = "__codelineno-0-491" ></ a > < span class = "s2" > " dict[str, float | int | str | None]" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-492" name = "__codelineno-0-492" ></ a > < span class = "n" > _snapshot_from_value</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span > < span class = "n" > _ACCOUNT_SNAPSHOT_FIELDS</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-493" name = "__codelineno-0-493" ></ a > < span class = "p" > )</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.get_positions_frame" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > get_positions_frame</ span >
< a href = "#mt5cli.trading.get_positions_frame" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > get_positions_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "pandas.DataFrame" > DataFrame</ span ></ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return open positions as a DataFrame with stable baseline columns.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-522" > 522</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-523" > 523</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-524" > 524</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-525" > 525</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-526" > 526</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-527" > 527</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-528" > 528</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-529" > 529</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-530" > 530</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-531" > 531</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-522" name = "__codelineno-0-522" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_positions_frame</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-523" name = "__codelineno-0-523" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-524" name = "__codelineno-0-524" ></ 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-525" name = "__codelineno-0-525" ></ 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-526" name = "__codelineno-0-526" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return open positions as a DataFrame with stable baseline columns.""" </ span >
< a id = "__codelineno-0-527" name = "__codelineno-0-527" ></ a > < span class = "n" > frame</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > positions_get_as_df</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-528" name = "__codelineno-0-528" ></ a > < span class = "k" > for</ span > < span class = "n" > column</ span > < span class = "ow" > in</ span > < span class = "n" > POSITION_COLUMNS</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-529" name = "__codelineno-0-529" ></ a > < span class = "k" > if</ span > < span class = "n" > column</ span > < span class = "ow" > not</ span > < span class = "ow" > in</ span > < span class = "n" > frame</ span >< span class = "o" > .</ span >< span class = "n" > columns</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-530" name = "__codelineno-0-530" ></ a > < span class = "n" > frame</ 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" > Series</ span >< span class = "p" > (</ span >< span class = "n" > dtype</ span >< span class = "o" > =</ span >< span class = "s2" > " object" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-531" name = "__codelineno-0-531" ></ a > < span class = "k" > return</ span > < span class = "n" > frame</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.get_symbol_snapshot" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > get_symbol_snapshot</ span >
< a href = "#mt5cli.trading.get_symbol_snapshot" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > get_symbol_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ 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 = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return normalized symbol metadata required for trading decisions.</ p >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-496" > 496</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-497" > 497</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-498" > 498</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-499" > 499</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-500" > 500</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-501" > 501</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-502" > 502</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-503" > 503</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-504" > 504</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-505" > 505</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-496" name = "__codelineno-0-496" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_symbol_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-497" name = "__codelineno-0-497" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-498" name = "__codelineno-0-498" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-499" name = "__codelineno-0-499" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "nb" > float</ span > < span class = "o" > |</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "nb" > bool</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-500" name = "__codelineno-0-500" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return normalized symbol metadata required for trading decisions.""" </ span >
< a id = "__codelineno-0-501" name = "__codelineno-0-501" ></ a > < span class = "n" > method</ span > < span class = "o" > =</ span > < span class = "nb" > getattr</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol_info_as_dict" </ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-502" name = "__codelineno-0-502" ></ a > < span class = "n" > value</ span > < span class = "o" > =</ span > < span class = "n" > method</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "nb" > callable</ span >< span class = "p" > (</ span >< span class = "n" > method</ span >< span class = "p" > )</ span > < span class = "k" > else</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > symbol_info</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-503" name = "__codelineno-0-503" ></ a > < span class = "n" > snapshot</ span > < span class = "o" > =</ span > < span class = "n" > _snapshot_from_value</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span > < span class = "n" > _SYMBOL_SNAPSHOT_FIELDS</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-504" name = "__codelineno-0-504" ></ a > < span class = "n" > snapshot</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > snapshot</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > symbol</ span >
< a id = "__codelineno-0-505" name = "__codelineno-0-505" ></ a > < span class = "k" > return</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " dict[str, float | int | str | bool | None]" </ span >< span class = "p" > ,</ span > < span class = "n" > snapshot</ span >< span class = "p" > )</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.get_tick_snapshot" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > get_tick_snapshot</ span >
< a href = "#mt5cli.trading.get_tick_snapshot" class = "headerlink" title = "Permanent link" > ¶ </ a ></ h3 >
< div class = "doc-signature highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "nf" > get_tick_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "dict" > dict</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]</ span >
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Return normalized latest tick data, including bid, ask, and timestamp.</ p >
2026-06-11 10:33:27 +00:00
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-508" > 508</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-509" > 509</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-510" > 510</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-511" > 511</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-512" > 512</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-513" > 513</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-514" > 514</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-515" > 515</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-516" > 516</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-517" > 517</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-518" > 518</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-519" > 519</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-508" name = "__codelineno-0-508" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > get_tick_snapshot</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-509" name = "__codelineno-0-509" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-510" name = "__codelineno-0-510" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-511" name = "__codelineno-0-511" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > dict</ span >< span class = "p" > [</ span >< span class = "nb" > str</ span >< span class = "p" > ,</ span > < span class = "nb" > float</ span > < span class = "o" > |</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-512" name = "__codelineno-0-512" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Return normalized latest tick data, including bid, ask, and timestamp.""" </ span >
< a id = "__codelineno-0-513" name = "__codelineno-0-513" ></ a > < span class = "n" > method</ span > < span class = "o" > =</ span > < span class = "nb" > getattr</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " symbol_info_tick_as_dict" </ span >< span class = "p" > ,</ span > < span class = "kc" > None</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-514" name = "__codelineno-0-514" ></ a > < span class = "n" > value</ span > < span class = "o" > =</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-515" name = "__codelineno-0-515" ></ a > < span class = "n" > method</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "nb" > callable</ span >< span class = "p" > (</ span >< span class = "n" > method</ span >< span class = "p" > )</ span > < span class = "k" > else</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > symbol_info_tick</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-516" name = "__codelineno-0-516" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-517" name = "__codelineno-0-517" ></ a > < span class = "n" > snapshot</ span > < span class = "o" > =</ span > < span class = "n" > _snapshot_from_value</ span >< span class = "p" > (</ span >< span class = "n" > value</ span >< span class = "p" > ,</ span > < span class = "n" > _TICK_SNAPSHOT_FIELDS</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-518" name = "__codelineno-0-518" ></ a > < span class = "n" > snapshot</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > snapshot</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > symbol</ span >
< a id = "__codelineno-0-519" name = "__codelineno-0-519" ></ a > < span class = "k" > return</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " dict[str, float | int | None]" </ span >< span class = "p" > ,</ span > < span class = "n" > snapshot</ span >< span class = "p" > )</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.mt5_trading_session" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > mt5_trading_session</ span >
< a href = "#mt5cli.trading.mt5_trading_session" 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" > mt5_trading_session</ span >< span class = "p" > (</ span >
2026-06-14 17:47:52 +00:00
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > config</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5Config" > Mt5Config</ 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-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > login</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > password</ 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" > server</ 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-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > path</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > timeout</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > retry_count</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > =</ span > < span class = "mi" > 0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "collections.abc.Iterator" > Iterator</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ]</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Open a trading-capable MT5 session and always shut down safely.</ p >
< p > Launches the MetaTrader 5 terminal using < code > Mt5Config.path</ code > when set,
initializes and logs in via < code > initialize_and_login_mt5()</ code > , yields a
connected :class:< code > ~pdmt5.Mt5TradingClient</ code > , and calls < code > shutdown()</ code > on
exit even when an error is raised inside the context.</ 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 > config</ code >
</ td >
< td >
< code >< span title = "pdmt5.Mt5Config" > Mt5Config</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > MT5 connection configuration. Defaults to an empty config that
attaches to a running terminal.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
2026-06-14 17:47:52 +00:00
< tr class = "doc-section-item" >
< td >
< code > login</ 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 trading account login.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > password</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional trading account password.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > server</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional trading server name.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > path</ code >
</ td >
< td >
< code >< span title = "str" > str</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional terminal executable path.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
< tr class = "doc-section-item" >
< td >
< code > timeout</ code >
</ td >
< td >
< code >< span title = "int" > int</ span > | None</ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Optional connection timeout in milliseconds.</ p >
</ div >
</ td >
< td >
< code > None</ code >
</ td >
</ tr >
2026-06-11 10:33:27 +00:00
< tr class = "doc-section-item" >
< td >
< code > retry_count</ code >
</ td >
< td >
< code >< span title = "int" > int</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Number of initialization retries passed to
< code > Mt5TradingClient</ code > .</ p >
</ div >
</ td >
< td >
< code > 0</ code >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Yields:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > Connected < code > Mt5TradingClient</ code > bound to the session.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-1000" > 1000</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1001" > 1001</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1002" > 1002</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1003" > 1003</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1004" > 1004</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1005" > 1005</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1006" > 1006</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1007" > 1007</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1008" > 1008</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1009" > 1009</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1010" > 1010</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1011" > 1011</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1012" > 1012</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1013" > 1013</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1014" > 1014</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1015" > 1015</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1016" > 1016</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1017" > 1017</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1018" > 1018</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1019" > 1019</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1020" > 1020</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1021" > 1021</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1022" > 1022</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1023" > 1023</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1024" > 1024</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1025" > 1025</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1026" > 1026</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1027" > 1027</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1028" > 1028</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1029" > 1029</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1030" > 1030</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1031" > 1031</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1032" > 1032</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1033" > 1033</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1034" > 1034</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1035" > 1035</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1036" > 1036</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1037" > 1037</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1038" > 1038</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1039" > 1039</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1040" > 1040</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1041" > 1041</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1042" > 1042</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1043" > 1043</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-1044" > 1044</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-1000" name = "__codelineno-0-1000" ></ a >< span class = "nd" > @contextmanager</ span >
< a id = "__codelineno-0-1001" name = "__codelineno-0-1001" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > mt5_trading_session</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1002" name = "__codelineno-0-1002" ></ a > < span class = "n" > config</ span >< span class = "p" > :</ span > < span class = "n" > Mt5Config</ 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-1003" name = "__codelineno-0-1003" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1004" name = "__codelineno-0-1004" ></ a > < span class = "n" > login</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > str</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1005" name = "__codelineno-0-1005" ></ a > < span class = "n" > password</ 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-1006" name = "__codelineno-0-1006" ></ a > < span class = "n" > server</ 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-1007" name = "__codelineno-0-1007" ></ a > < span class = "n" > path</ 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-1008" name = "__codelineno-0-1008" ></ a > < span class = "n" > timeout</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1009" name = "__codelineno-0-1009" ></ a > < span class = "n" > retry_count</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > =</ span > < span class = "mi" > 0</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1010" name = "__codelineno-0-1010" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > Iterator</ span >< span class = "p" > [</ span >< span class = "n" > Mt5TradingClient</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-1011" name = "__codelineno-0-1011" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Open a trading-capable MT5 session and always shut down safely.</ span >
< a id = "__codelineno-0-1012" name = "__codelineno-0-1012" ></ a >
< a id = "__codelineno-0-1013" name = "__codelineno-0-1013" ></ a >< span class = "sd" > Launches the MetaTrader 5 terminal using ``Mt5Config.path`` when set,</ span >
< a id = "__codelineno-0-1014" name = "__codelineno-0-1014" ></ a >< span class = "sd" > initializes and logs in via ``initialize_and_login_mt5()``, yields a</ span >
< a id = "__codelineno-0-1015" name = "__codelineno-0-1015" ></ a >< span class = "sd" > connected :class:`~pdmt5.Mt5TradingClient`, and calls ``shutdown()`` on</ span >
< a id = "__codelineno-0-1016" name = "__codelineno-0-1016" ></ a >< span class = "sd" > exit even when an error is raised inside the context.</ span >
< a id = "__codelineno-0-1017" name = "__codelineno-0-1017" ></ a >
< a id = "__codelineno-0-1018" name = "__codelineno-0-1018" ></ a >< span class = "sd" > Args:</ span >
< a id = "__codelineno-0-1019" name = "__codelineno-0-1019" ></ a >< span class = "sd" > config: MT5 connection configuration. Defaults to an empty config that</ span >
< a id = "__codelineno-0-1020" name = "__codelineno-0-1020" ></ a >< span class = "sd" > attaches to a running terminal.</ span >
< a id = "__codelineno-0-1021" name = "__codelineno-0-1021" ></ a >< span class = "sd" > login: Optional trading account login.</ span >
< a id = "__codelineno-0-1022" name = "__codelineno-0-1022" ></ a >< span class = "sd" > password: Optional trading account password.</ span >
< a id = "__codelineno-0-1023" name = "__codelineno-0-1023" ></ a >< span class = "sd" > server: Optional trading server name.</ span >
< a id = "__codelineno-0-1024" name = "__codelineno-0-1024" ></ a >< span class = "sd" > path: Optional terminal executable path.</ span >
< a id = "__codelineno-0-1025" name = "__codelineno-0-1025" ></ a >< span class = "sd" > timeout: Optional connection timeout in milliseconds.</ span >
< a id = "__codelineno-0-1026" name = "__codelineno-0-1026" ></ a >< span class = "sd" > retry_count: Number of initialization retries passed to</ span >
< a id = "__codelineno-0-1027" name = "__codelineno-0-1027" ></ a >< span class = "sd" > ``Mt5TradingClient``.</ span >
< a id = "__codelineno-0-1028" name = "__codelineno-0-1028" ></ a >
< a id = "__codelineno-0-1029" name = "__codelineno-0-1029" ></ a >< span class = "sd" > Yields:</ span >
< a id = "__codelineno-0-1030" name = "__codelineno-0-1030" ></ a >< span class = "sd" > Connected ``Mt5TradingClient`` bound to the session.</ span >
< a id = "__codelineno-0-1031" name = "__codelineno-0-1031" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-1032" name = "__codelineno-0-1032" ></ a > < span class = "n" > client</ span > < span class = "o" > =</ span > < span class = "n" > create_trading_client</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-1033" name = "__codelineno-0-1033" ></ a > < span class = "n" > config</ span >< span class = "o" > =</ span >< span class = "n" > config</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1034" name = "__codelineno-0-1034" ></ a > < span class = "n" > login</ span >< span class = "o" > =</ span >< span class = "n" > login</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1035" name = "__codelineno-0-1035" ></ a > < span class = "n" > password</ span >< span class = "o" > =</ span >< span class = "n" > password</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1036" name = "__codelineno-0-1036" ></ a > < span class = "n" > server</ span >< span class = "o" > =</ span >< span class = "n" > server</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1037" name = "__codelineno-0-1037" ></ a > < span class = "n" > path</ span >< span class = "o" > =</ span >< span class = "n" > path</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1038" name = "__codelineno-0-1038" ></ a > < span class = "n" > timeout</ span >< span class = "o" > =</ span >< span class = "n" > timeout</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1039" name = "__codelineno-0-1039" ></ a > < span class = "n" > retry_count</ span >< span class = "o" > =</ span >< span class = "n" > retry_count</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-1040" name = "__codelineno-0-1040" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-1041" name = "__codelineno-0-1041" ></ a > < span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1042" name = "__codelineno-0-1042" ></ a > < span class = "k" > yield</ span > < span class = "n" > client</ span >
< a id = "__codelineno-0-1043" name = "__codelineno-0-1043" ></ a > < span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-1044" name = "__codelineno-0-1044" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > shutdown</ span >< span class = "p" > ()</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.place_market_order" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > place_market_order</ span >
< a href = "#mt5cli.trading.place_market_order" 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" > place_market_order</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "str" > str</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > volume</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > order_side</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderSide
module-attribute
(mt5cli.trading.OrderSide)" href = "#mt5cli.trading.OrderSide" > OrderSide</ a ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > order_filling_mode</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderFillingMode
module-attribute
(mt5cli.trading.OrderFillingMode)" href = "#mt5cli.trading.OrderFillingMode" > OrderFillingMode</ a ></ span > < span class = "o" > =</ span > < span class = "s2" > " IOC" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > order_time_mode</ span >< span class = "p" > :</ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderTimeMode
module-attribute
(mt5cli.trading.OrderTimeMode)" href = "#mt5cli.trading.OrderTimeMode" > OrderTimeMode</ a ></ span > < span class = "o" > =</ span > < span class = "s2" > " GTC" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a > < span class = "n" > sl</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ 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-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "n" > tp</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ 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-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a > < span class = "n" > position</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "int" > int</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a > < span class = "n" > dry_run</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
2026-06-18 10:12:55 +00:00
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a ></ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Place one normalized market order or return a dry-run result.</ p >
< p >< code > pdmt5.Mt5TradingClient.order_send()</ code > raises only when MT5 returns no
response. When MT5 returns a response with a known non-success retcode, this
helper returns < code > status="failed"</ code > and keeps the normalized response
details for callers to inspect.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-18 10:12:55 +00:00
< code >< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a ></ code >
2026-06-14 17:47:52 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Normalized execution result containing request and response details.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< p >< span class = "doc-section-title" > Raises:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
< code >< span title = "pdmt5.Mt5TradingError" > Mt5TradingError</ span ></ code >
</ td >
< td >
< div class = "doc-md-description" >
< p > If volume or required tick data is invalid.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-795" > 795</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-796" > 796</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-797" > 797</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-798" > 798</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-799" > 799</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-800" > 800</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-801" > 801</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-802" > 802</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-803" > 803</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-804" > 804</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-805" > 805</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-806" > 806</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-807" > 807</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-808" > 808</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-809" > 809</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-810" > 810</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-811" > 811</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-812" > 812</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-813" > 813</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-814" > 814</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-815" > 815</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-816" > 816</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-817" > 817</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-818" > 818</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-819" > 819</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-820" > 820</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-821" > 821</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-822" > 822</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-823" > 823</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-824" > 824</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-825" > 825</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-826" > 826</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-827" > 827</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-828" > 828</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-829" > 829</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-830" > 830</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-831" > 831</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-832" > 832</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-833" > 833</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-834" > 834</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-835" > 835</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-836" > 836</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-837" > 837</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-838" > 838</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-839" > 839</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-840" > 840</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-841" > 841</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-842" > 842</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-843" > 843</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-844" > 844</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-845" > 845</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-846" > 846</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-847" > 847</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-848" > 848</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-849" > 849</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-850" > 850</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-851" > 851</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-852" > 852</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-853" > 853</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-854" > 854</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-855" > 855</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-856" > 856</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-857" > 857</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-858" > 858</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-859" > 859</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-860" > 860</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-861" > 861</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-862" > 862</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-863" > 863</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-864" > 864</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-865" > 865</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-866" > 866</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-867" > 867</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-868" > 868</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-869" > 869</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-870" > 870</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-871" > 871</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-872" > 872</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-873" > 873</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-874" > 874</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-875" > 875</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-876" > 876</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-877" > 877</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-878" > 878</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-879" > 879</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-880" > 880</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-881" > 881</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-882" > 882</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-883" > 883</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-884" > 884</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-885" > 885</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-795" name = "__codelineno-0-795" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > place_market_order</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-796" name = "__codelineno-0-796" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-797" name = "__codelineno-0-797" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-798" name = "__codelineno-0-798" ></ a > < span class = "n" > symbol</ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-799" name = "__codelineno-0-799" ></ a > < span class = "n" > volume</ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-800" name = "__codelineno-0-800" ></ a > < span class = "n" > order_side</ span >< span class = "p" > :</ span > < span class = "n" > OrderSide</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-801" name = "__codelineno-0-801" ></ a > < span class = "n" > order_filling_mode</ span >< span class = "p" > :</ span > < span class = "n" > OrderFillingMode</ span > < span class = "o" > =</ span > < span class = "s2" > " IOC" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-802" name = "__codelineno-0-802" ></ a > < span class = "n" > order_time_mode</ span >< span class = "p" > :</ span > < span class = "n" > OrderTimeMode</ span > < span class = "o" > =</ span > < span class = "s2" > " GTC" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-803" name = "__codelineno-0-803" ></ a > < span class = "n" > sl</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-804" name = "__codelineno-0-804" ></ a > < span class = "n" > tp</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-805" name = "__codelineno-0-805" ></ a > < span class = "n" > position</ span >< span class = "p" > :</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-806" name = "__codelineno-0-806" ></ a > < span class = "n" > dry_run</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-807" name = "__codelineno-0-807" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" > OrderExecutionResult</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-808" name = "__codelineno-0-808" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Place one normalized market order or return a dry-run result.</ span >
< a id = "__codelineno-0-809" name = "__codelineno-0-809" ></ a >
< a id = "__codelineno-0-810" name = "__codelineno-0-810" ></ a >< span class = "sd" > ``pdmt5.Mt5TradingClient.order_send()`` raises only when MT5 returns no</ span >
< a id = "__codelineno-0-811" name = "__codelineno-0-811" ></ a >< span class = "sd" > response. When MT5 returns a response with a known non-success retcode, this</ span >
< a id = "__codelineno-0-812" name = "__codelineno-0-812" ></ a >< span class = "sd" > helper returns ``status=" failed" `` and keeps the normalized response</ span >
< a id = "__codelineno-0-813" name = "__codelineno-0-813" ></ a >< span class = "sd" > details for callers to inspect.</ span >
< a id = "__codelineno-0-814" name = "__codelineno-0-814" ></ a >
< a id = "__codelineno-0-815" name = "__codelineno-0-815" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-816" name = "__codelineno-0-816" ></ a >< span class = "sd" > Normalized execution result containing request and response details.</ span >
< a id = "__codelineno-0-817" name = "__codelineno-0-817" ></ a >
< a id = "__codelineno-0-818" name = "__codelineno-0-818" ></ a >< span class = "sd" > Raises:</ span >
< a id = "__codelineno-0-819" name = "__codelineno-0-819" ></ a >< span class = "sd" > Mt5TradingError: If volume or required tick data is invalid.</ span >
< a id = "__codelineno-0-820" name = "__codelineno-0-820" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-821" name = "__codelineno-0-821" ></ a > < span class = "k" > if</ span > < span class = "n" > volume</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-822" name = "__codelineno-0-822" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "s2" > " volume must be positive." </ span >
< a id = "__codelineno-0-823" name = "__codelineno-0-823" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-824" name = "__codelineno-0-824" ></ a > < span class = "n" > side</ span > < span class = "o" > =</ span > < span class = "n" > _normalize_order_side</ span >< span class = "p" > (</ span >< span class = "n" > order_side</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-825" name = "__codelineno-0-825" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "n" > dry_run</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-826" name = "__codelineno-0-826" ></ a > < span class = "n" > ensure_symbol_selected</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-827" name = "__codelineno-0-827" ></ a > < span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbol</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-828" name = "__codelineno-0-828" ></ a > < span class = "n" > price</ span > < span class = "o" > =</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " ask" </ span >< span class = "p" > ]</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > tick</ span >< span class = "p" > [</ span >< span class = "s2" > " bid" </ span >< span class = "p" > ]</ span >
< a id = "__codelineno-0-829" name = "__codelineno-0-829" ></ a > < span class = "k" > if</ span > < span class = "ow" > not</ span > < span class = "nb" > isinstance</ span >< span class = "p" > (</ span >< span class = "n" > price</ span >< span class = "p" > ,</ span > < span class = "nb" > int</ span > < span class = "o" > |</ span > < span class = "nb" > float</ span >< span class = "p" > )</ span > < span class = "ow" > or</ span > < span class = "n" > price</ span > < span class = "o" > < =</ span > < span class = "mi" > 0</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-830" name = "__codelineno-0-830" ></ a > < span class = "n" > msg</ span > < span class = "o" > =</ span > < span class = "sa" > f</ span >< span class = "s2" > " Tick price is unavailable for </ span >< span class = "si" > {</ span >< span class = "n" > symbol</ span >< span class = "si" > !r}</ span >< span class = "s2" > ." </ span >
< a id = "__codelineno-0-831" name = "__codelineno-0-831" ></ a > < span class = "k" > raise</ span > < span class = "n" > Mt5TradingError</ span >< span class = "p" > (</ span >< span class = "n" > msg</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-832" name = "__codelineno-0-832" ></ a > < span class = "n" > request</ span > < span class = "o" > =</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-833" name = "__codelineno-0-833" ></ a > < span class = "s2" > " action" </ span >< span class = "p" > :</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > TRADE_ACTION_DEAL</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-834" name = "__codelineno-0-834" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > :</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-835" name = "__codelineno-0-835" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > :</ span > < span class = "n" > volume</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-836" name = "__codelineno-0-836" ></ a > < span class = "s2" > " type" </ span >< span class = "p" > :</ span > < span class = "p" > (</ span >
< a id = "__codelineno-0-837" name = "__codelineno-0-837" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_BUY</ span > < span class = "k" > if</ span > < span class = "n" > side</ span > < span class = "o" > ==</ span > < span class = "s2" > " BUY" </ span > < span class = "k" > else</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > ORDER_TYPE_SELL</ span >
< a id = "__codelineno-0-838" name = "__codelineno-0-838" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-839" name = "__codelineno-0-839" ></ a > < span class = "s2" > " price" </ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > price</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-840" name = "__codelineno-0-840" ></ a > < span class = "s2" > " type_filling" </ span >< span class = "p" > :</ span > < span class = "n" > _resolve_mt5_constant</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-841" name = "__codelineno-0-841" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-842" name = "__codelineno-0-842" ></ a > < span class = "s2" > " ORDER_FILLING" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-843" name = "__codelineno-0-843" ></ a > < span class = "n" > order_filling_mode</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-844" name = "__codelineno-0-844" ></ a > < span class = "n" > _ORDER_FILLING_MODES</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-845" name = "__codelineno-0-845" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-846" name = "__codelineno-0-846" ></ a > < span class = "s2" > " type_time" </ span >< span class = "p" > :</ span > < span class = "n" > _resolve_mt5_constant</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-847" name = "__codelineno-0-847" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-848" name = "__codelineno-0-848" ></ a > < span class = "s2" > " ORDER_TIME" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-849" name = "__codelineno-0-849" ></ a > < span class = "n" > order_time_mode</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-850" name = "__codelineno-0-850" ></ a > < span class = "n" > _ORDER_TIME_MODES</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-851" name = "__codelineno-0-851" ></ a > < span class = "p" > ),</ span >
< a id = "__codelineno-0-852" name = "__codelineno-0-852" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-853" name = "__codelineno-0-853" ></ a > < span class = "k" > if</ span > < span class = "n" > sl</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-854" name = "__codelineno-0-854" ></ a > < span class = "n" > request</ span >< span class = "p" > [</ span >< span class = "s2" > " sl" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > sl</ span >
< a id = "__codelineno-0-855" name = "__codelineno-0-855" ></ a > < span class = "k" > if</ span > < span class = "n" > tp</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-856" name = "__codelineno-0-856" ></ a > < span class = "n" > request</ span >< span class = "p" > [</ span >< span class = "s2" > " tp" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > tp</ span >
< a id = "__codelineno-0-857" name = "__codelineno-0-857" ></ a > < span class = "k" > if</ span > < span class = "n" > position</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-858" name = "__codelineno-0-858" ></ a > < span class = "n" > request</ span >< span class = "p" > [</ span >< span class = "s2" > " position" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > position</ span >
< a id = "__codelineno-0-859" name = "__codelineno-0-859" ></ a > < span class = "k" > if</ span > < span class = "n" > dry_run</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-860" name = "__codelineno-0-860" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-861" name = "__codelineno-0-861" ></ a > < span class = "s2" > " status" </ span >< span class = "p" > :</ span > < span class = "s2" > " dry_run" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-862" name = "__codelineno-0-862" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > :</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-863" name = "__codelineno-0-863" ></ a > < span class = "s2" > " order_side" </ span >< span class = "p" > :</ span > < span class = "n" > side</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-864" name = "__codelineno-0-864" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > :</ span > < span class = "n" > volume</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-865" name = "__codelineno-0-865" ></ a > < span class = "s2" > " retcode" </ span >< span class = "p" > :</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-866" name = "__codelineno-0-866" ></ a > < span class = "s2" > " comment" </ span >< span class = "p" > :</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-867" name = "__codelineno-0-867" ></ a > < span class = "s2" > " request" </ span >< span class = "p" > :</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " dict[str, object]" </ span >< span class = "p" > ,</ span > < span class = "n" > request</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-868" name = "__codelineno-0-868" ></ a > < span class = "s2" > " response" </ span >< span class = "p" > :</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-869" name = "__codelineno-0-869" ></ a > < span class = "s2" > " dry_run" </ span >< span class = "p" > :</ span > < span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-870" name = "__codelineno-0-870" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-871" name = "__codelineno-0-871" ></ a > < span class = "n" > response</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > order_send</ span >< span class = "p" > (</ span >< span class = "n" > request</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-872" name = "__codelineno-0-872" ></ a > < span class = "n" > response_dict</ span > < span class = "o" > =</ span > < span class = "n" > _snapshot_from_value</ span >< span class = "p" > (</ span >< span class = "n" > response</ span >< span class = "p" > ,</ span > < span class = "p" > ())</ span >
< a id = "__codelineno-0-873" name = "__codelineno-0-873" ></ a > < span class = "n" > raw_retcode</ span > < span class = "o" > =</ span > < span class = "n" > response_dict</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " retcode" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-874" name = "__codelineno-0-874" ></ a > < span class = "n" > retcode</ span > < span class = "o" > =</ span > < span class = "n" > _optional_int</ span >< span class = "p" > (</ span >< span class = "n" > raw_retcode</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-875" name = "__codelineno-0-875" ></ a > < span class = "k" > return</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-876" name = "__codelineno-0-876" ></ a > < span class = "s2" > " status" </ span >< span class = "p" > :</ span > < span class = "n" > _order_status_from_retcode</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "p" > ,</ span > < span class = "n" > raw_retcode</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-877" name = "__codelineno-0-877" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > :</ span > < span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-878" name = "__codelineno-0-878" ></ a > < span class = "s2" > " order_side" </ span >< span class = "p" > :</ span > < span class = "n" > side</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-879" name = "__codelineno-0-879" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > :</ span > < span class = "n" > volume</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-880" name = "__codelineno-0-880" ></ a > < span class = "s2" > " retcode" </ span >< span class = "p" > :</ span > < span class = "n" > retcode</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-881" name = "__codelineno-0-881" ></ a > < span class = "s2" > " comment" </ span >< span class = "p" > :</ span > < span class = "n" > _optional_str</ span >< span class = "p" > (</ span >< span class = "n" > response_dict</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " comment" </ span >< span class = "p" > )),</ span >
< a id = "__codelineno-0-882" name = "__codelineno-0-882" ></ a > < span class = "s2" > " request" </ span >< span class = "p" > :</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " dict[str, object]" </ span >< span class = "p" > ,</ span > < span class = "n" > request</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-883" name = "__codelineno-0-883" ></ a > < span class = "s2" > " response" </ span >< span class = "p" > :</ span > < span class = "n" > response_dict</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-884" name = "__codelineno-0-884" ></ a > < span class = "s2" > " dry_run" </ span >< span class = "p" > :</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-885" name = "__codelineno-0-885" ></ a > < span class = "p" > }</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
< div class = "doc doc-object doc-function" >
< h3 id = "mt5cli.trading.update_sltp_for_open_positions" class = "doc doc-heading" >
< span class = "doc doc-object-name doc-function-name" > update_sltp_for_open_positions</ span >
< a href = "#mt5cli.trading.update_sltp_for_open_positions" 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" > update_sltp_for_open_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "pdmt5.Mt5TradingClient" > Mt5TradingClient</ span ></ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > 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-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > tickets</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< span title = "int" > int</ span ></ span >< span class = "p" > ]</ span > < 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" > stop_loss</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ 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" > take_profit</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "float" > float</ span ></ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > dry_run</ span >< span class = "p" > :</ span > < span class = "n" >< span title = "bool" > bool</ span ></ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
2026-06-18 10:12:55 +00:00
< a id = "__codelineno-0-9" name = "__codelineno-0-9" href = "#__codelineno-0-9" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "n" >< span title = "list" > list</ span ></ span >< span class = "p" > [</ span >< span class = "n" >< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a ></ span >< span class = "p" > ]</ span >
2026-06-14 17:47:52 +00:00
</ code ></ pre ></ div >
< div class = "doc doc-contents " >
< p > Update SL/TP for matching open positions.</ p >
< p >< span class = "doc-section-title" > Returns:</ span ></ p >
< table >
< thead >
< tr >
< th > Type</ th >
< th > Description</ th >
</ tr >
</ thead >
< tbody >
< tr class = "doc-section-item" >
< td >
2026-06-18 10:12:55 +00:00
< code >< span title = "list" > list</ span > [< a class = "autorefs autorefs-internal" title = "OrderExecutionResult (mt5cli.trading.OrderExecutionResult)" href = "#mt5cli.trading.OrderExecutionResult" > OrderExecutionResult</ a > ]</ code >
2026-06-14 17:47:52 +00:00
</ td >
< td >
< div class = "doc-md-description" >
< p > Normalized execution results for matching positions.</ p >
</ div >
</ td >
</ tr >
</ tbody >
</ table >
< details class = "mkdocstrings-source" >
< summary > Source code in < code > mt5cli/trading.py</ code ></ summary >
2026-06-18 10:12:55 +00:00
< div class = "highlight" >< table class = "highlighttable" >< tr >< td class = "linenos" >< div class = "linenodiv" >< pre >< span ></ span >< span class = "normal" >< a href = "#__codelineno-0-936" > 936</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-937" > 937</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-938" > 938</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-939" > 939</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-940" > 940</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-941" > 941</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-942" > 942</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-943" > 943</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-944" > 944</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-945" > 945</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-946" > 946</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-947" > 947</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-948" > 948</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-949" > 949</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-950" > 950</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-951" > 951</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-952" > 952</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-953" > 953</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-954" > 954</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-955" > 955</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-956" > 956</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-957" > 957</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-958" > 958</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-959" > 959</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-960" > 960</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-961" > 961</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-962" > 962</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-963" > 963</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-964" > 964</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-965" > 965</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-966" > 966</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-967" > 967</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-968" > 968</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-969" > 969</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-970" > 970</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-971" > 971</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-972" > 972</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-973" > 973</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-974" > 974</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-975" > 975</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-976" > 976</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-977" > 977</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-978" > 978</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-979" > 979</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-980" > 980</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-981" > 981</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-982" > 982</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-983" > 983</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-984" > 984</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-985" > 985</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-986" > 986</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-987" > 987</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-988" > 988</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-989" > 989</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-990" > 990</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-991" > 991</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-992" > 992</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-993" > 993</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-994" > 994</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-995" > 995</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-996" > 996</ a ></ span >
< span class = "normal" >< a href = "#__codelineno-0-997" > 997</ a ></ span ></ pre ></ div ></ td >< td class = "code" >< div >< pre >< span ></ span >< code >< a id = "__codelineno-0-936" name = "__codelineno-0-936" ></ a >< span class = "k" > def</ span >< span class = "w" > </ span >< span class = "nf" > update_sltp_for_open_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-937" name = "__codelineno-0-937" ></ a > < span class = "n" > client</ span >< span class = "p" > :</ span > < span class = "n" > Mt5TradingClient</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-938" name = "__codelineno-0-938" ></ a > < span class = "o" > *</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-939" name = "__codelineno-0-939" ></ 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-940" name = "__codelineno-0-940" ></ a > < span class = "n" > tickets</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "nb" > int</ span >< span class = "p" > ]</ span > < span class = "o" > |</ span > < span class = "kc" > None</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-941" name = "__codelineno-0-941" ></ a > < span class = "n" > stop_loss</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-942" name = "__codelineno-0-942" ></ a > < span class = "n" > take_profit</ span >< span class = "p" > :</ span > < span class = "nb" > float</ 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-943" name = "__codelineno-0-943" ></ a > < span class = "n" > dry_run</ span >< span class = "p" > :</ span > < span class = "nb" > bool</ span > < span class = "o" > =</ span > < span class = "kc" > False</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-944" name = "__codelineno-0-944" ></ a >< span class = "p" > )</ span > < span class = "o" > -> </ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > OrderExecutionResult</ span >< span class = "p" > ]:</ span >
< a id = "__codelineno-0-945" name = "__codelineno-0-945" ></ a >< span class = "w" > </ span >< span class = "sd" > """ Update SL/TP for matching open positions.</ span >
< a id = "__codelineno-0-946" name = "__codelineno-0-946" ></ a >
< a id = "__codelineno-0-947" name = "__codelineno-0-947" ></ a >< span class = "sd" > Returns:</ span >
< a id = "__codelineno-0-948" name = "__codelineno-0-948" ></ a >< span class = "sd" > Normalized execution results for matching positions.</ span >
< a id = "__codelineno-0-949" name = "__codelineno-0-949" ></ a >< span class = "sd" > """ </ span >
< a id = "__codelineno-0-950" name = "__codelineno-0-950" ></ a > < span class = "n" > positions</ span > < span class = "o" > =</ span > < span class = "n" > _filter_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-951" name = "__codelineno-0-951" ></ a > < span class = "n" > get_positions_frame</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-952" name = "__codelineno-0-952" ></ a > < span class = "n" > symbols</ span >< span class = "o" > =</ span >< span class = "n" > symbol</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-953" name = "__codelineno-0-953" ></ a > < span class = "n" > tickets</ span >< span class = "o" > =</ span >< span class = "n" > tickets</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-954" name = "__codelineno-0-954" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-955" name = "__codelineno-0-955" ></ a > < span class = "n" > results</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > OrderExecutionResult</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "p" > []</ span >
< a id = "__codelineno-0-956" name = "__codelineno-0-956" ></ a > < span class = "k" > for</ span > < span class = "n" > row</ span > < span class = "ow" > in</ span > < span class = "n" > positions</ span >< span class = "o" > .</ span >< span class = "n" > to_dict</ span >< span class = "p" > (</ span >< span class = "s2" > " records" </ span >< span class = "p" > ):</ span >
< a id = "__codelineno-0-957" name = "__codelineno-0-957" ></ a > < span class = "n" > request</ span > < span class = "o" > =</ span > < span class = "p" > {</ span >
< a id = "__codelineno-0-958" name = "__codelineno-0-958" ></ a > < span class = "s2" > " action" </ span >< span class = "p" > :</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > TRADE_ACTION_SLTP</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-959" name = "__codelineno-0-959" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > :</ span > < span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-960" name = "__codelineno-0-960" ></ a > < span class = "s2" > " position" </ span >< span class = "p" > :</ span > < span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " ticket" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-0-961" name = "__codelineno-0-961" ></ a > < span class = "p" > }</ span >
< a id = "__codelineno-0-962" name = "__codelineno-0-962" ></ a > < span class = "n" > sl</ span > < span class = "o" > =</ span > < span class = "n" > _optional_price</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " sl" </ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "n" > stop_loss</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "n" > stop_loss</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-963" name = "__codelineno-0-963" ></ a > < span class = "n" > tp</ span > < span class = "o" > =</ span > < span class = "n" > _optional_price</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " tp" </ span >< span class = "p" > )</ span > < span class = "k" > if</ span > < span class = "n" > take_profit</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span > < span class = "k" > else</ span > < span class = "n" > take_profit</ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-964" name = "__codelineno-0-964" ></ a > < span class = "k" > if</ span > < span class = "n" > sl</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-965" name = "__codelineno-0-965" ></ a > < span class = "n" > request</ span >< span class = "p" > [</ span >< span class = "s2" > " sl" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > sl</ span >
< a id = "__codelineno-0-966" name = "__codelineno-0-966" ></ a > < span class = "k" > if</ span > < span class = "n" > tp</ span > < span class = "ow" > is</ span > < span class = "ow" > not</ span > < span class = "kc" > None</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-967" name = "__codelineno-0-967" ></ a > < span class = "n" > request</ span >< span class = "p" > [</ span >< span class = "s2" > " tp" </ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > tp</ span >
< a id = "__codelineno-0-968" name = "__codelineno-0-968" ></ a > < span class = "k" > if</ span > < span class = "n" > dry_run</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-969" name = "__codelineno-0-969" ></ a > < span class = "n" > response</ span > < span class = "o" > =</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-970" name = "__codelineno-0-970" ></ a > < span class = "n" > status</ span >< span class = "p" > :</ span > < span class = "n" > ExecutionStatus</ span > < span class = "o" > =</ span > < span class = "s2" > " dry_run" </ span >
< a id = "__codelineno-0-971" name = "__codelineno-0-971" ></ a > < span class = "k" > else</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-972" name = "__codelineno-0-972" ></ a > < span class = "n" > ensure_symbol_selected</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]))</ span >
< a id = "__codelineno-0-973" name = "__codelineno-0-973" ></ a > < span class = "n" > response</ span > < span class = "o" > =</ span > < span class = "n" > _snapshot_from_value</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > order_send</ span >< span class = "p" > (</ span >< span class = "n" > request</ span >< span class = "p" > ),</ span > < span class = "p" > ())</ span >
< a id = "__codelineno-0-974" name = "__codelineno-0-974" ></ a > < span class = "n" > status</ span > < span class = "o" > =</ span > < span class = "n" > _order_status_from_retcode</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-975" name = "__codelineno-0-975" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-976" name = "__codelineno-0-976" ></ a > < span class = "n" > response</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " retcode" </ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-977" name = "__codelineno-0-977" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-978" name = "__codelineno-0-978" ></ a > < span class = "n" > results</ span >< span class = "o" > .</ span >< span class = "n" > append</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-979" name = "__codelineno-0-979" ></ a > < span class = "p" > {</ span >
< a id = "__codelineno-0-980" name = "__codelineno-0-980" ></ a > < span class = "s2" > " status" </ span >< span class = "p" > :</ span > < span class = "n" > status</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-981" name = "__codelineno-0-981" ></ a > < span class = "s2" > " symbol" </ span >< span class = "p" > :</ span > < span class = "nb" > str</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " symbol" </ span >< span class = "p" > ]),</ span >
< a id = "__codelineno-0-982" name = "__codelineno-0-982" ></ a > < span class = "s2" > " order_side" </ span >< span class = "p" > :</ span > < span class = "s2" > " BUY" </ span >
< a id = "__codelineno-0-983" name = "__codelineno-0-983" ></ a > < span class = "k" > if</ span > < span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " type" </ span >< span class = "p" > ]</ span > < span class = "o" > ==</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > mt5</ span >< span class = "o" > .</ span >< span class = "n" > POSITION_TYPE_BUY</ span >
< a id = "__codelineno-0-984" name = "__codelineno-0-984" ></ a > < span class = "k" > else</ span > < span class = "s2" > " SELL" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-985" name = "__codelineno-0-985" ></ a > < span class = "s2" > " volume" </ span >< span class = "p" > :</ span > < span class = "nb" > float</ span >< span class = "p" > (</ span >< span class = "n" > row</ span >< span class = "p" > [</ span >< span class = "s2" > " volume" </ span >< span class = "p" > ]),</ span >
< a id = "__codelineno-0-986" name = "__codelineno-0-986" ></ a > < span class = "s2" > " retcode" </ span >< span class = "p" > :</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-987" name = "__codelineno-0-987" ></ a > < span class = "k" > if</ span > < span class = "n" > response</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-988" name = "__codelineno-0-988" ></ a > < span class = "k" > else</ span > < span class = "n" > _optional_int</ span >< span class = "p" > (</ span >< span class = "n" > response</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " retcode" </ span >< span class = "p" > )),</ span >
< a id = "__codelineno-0-989" name = "__codelineno-0-989" ></ a > < span class = "s2" > " comment" </ span >< span class = "p" > :</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-990" name = "__codelineno-0-990" ></ a > < span class = "k" > if</ span > < span class = "n" > response</ span > < span class = "ow" > is</ span > < span class = "kc" > None</ span >
< a id = "__codelineno-0-991" name = "__codelineno-0-991" ></ a > < span class = "k" > else</ span > < span class = "n" > _optional_str</ span >< span class = "p" > (</ span >< span class = "n" > response</ span >< span class = "o" > .</ span >< span class = "n" > get</ span >< span class = "p" > (</ span >< span class = "s2" > " comment" </ span >< span class = "p" > )),</ span >
< a id = "__codelineno-0-992" name = "__codelineno-0-992" ></ a > < span class = "s2" > " request" </ span >< span class = "p" > :</ span > < span class = "n" > cast</ span >< span class = "p" > (</ span >< span class = "s2" > " dict[str, object]" </ span >< span class = "p" > ,</ span > < span class = "n" > request</ span >< span class = "p" > ),</ span >
< a id = "__codelineno-0-993" name = "__codelineno-0-993" ></ a > < span class = "s2" > " response" </ span >< span class = "p" > :</ span > < span class = "n" > response</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-994" name = "__codelineno-0-994" ></ a > < span class = "s2" > " dry_run" </ span >< span class = "p" > :</ span > < span class = "n" > dry_run</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-995" name = "__codelineno-0-995" ></ a > < span class = "p" > },</ span >
< a id = "__codelineno-0-996" name = "__codelineno-0-996" ></ a > < span class = "p" > )</ span >
< a id = "__codelineno-0-997" name = "__codelineno-0-997" ></ a > < span class = "k" > return</ span > < span class = "n" > results</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div ></ td ></ tr ></ table ></ div >
</ details >
</ div >
</ div >
</ div >
</ div >
</ div >< h2 id = "trading-capable-mt5-sessions" > Trading-capable MT5 sessions< a class = "headerlink" href = "#trading-capable-mt5-sessions" title = "Permanent link" > ¶ </ a ></ h2 >
2026-06-14 17:47:52 +00:00
< p >< code > create_trading_client()</ code > and < code > mt5_trading_session()</ code > complement the read-only
< code > mt5_session()</ code > helper in < code > sdk.py</ code > . They return or yield an initialized
< code > pdmt5.Mt5TradingClient</ code > , use < code > Mt5Config.path</ code > to launch the terminal when
configured, and < code > mt5_trading_session()</ code > always calls < code > shutdown()</ code > on exit.</ p >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > mt5cli</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > create_trading_client</ span >< span class = "p" > ,</ span > < span class = "n" > mt5_trading_session</ span >
2026-06-11 10:33:27 +00:00
< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a >
2026-06-14 17:47:52 +00:00
< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "k" > with</ span > < span class = "n" > mt5_trading_session</ span >< span class = "p" > (</ span >
< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a > < span class = "n" > path</ span >< span class = "o" > =</ span >< span class = "sa" > r</ span >< span class = "s2" > " C:\Program Files\MetaTrader 5\terminal64.exe" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a > < span class = "n" > login</ span >< span class = "o" > =</ span >< span class = "s2" > " 12345" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-6" name = "__codelineno-0-6" href = "#__codelineno-0-6" ></ a > < span class = "n" > password</ span >< span class = "o" > =</ span >< span class = "s2" > " secret" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-7" name = "__codelineno-0-7" href = "#__codelineno-0-7" ></ a > < span class = "n" > server</ span >< span class = "o" > =</ span >< span class = "s2" > " Broker-Demo" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-0-8" name = "__codelineno-0-8" href = "#__codelineno-0-8" ></ a > < span class = "n" > retry_count</ span >< span class = "o" > =</ span >< span class = "mi" > 2</ 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 = "k" > as</ span > < span class = "n" > client</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-10" name = "__codelineno-0-10" href = "#__codelineno-0-10" ></ a > < span class = "n" > positions</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > positions_get_as_df</ span >< span class = "p" > (</ span >< span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-11" name = "__codelineno-0-11" href = "#__codelineno-0-11" ></ a >
< a id = "__codelineno-0-12" name = "__codelineno-0-12" href = "#__codelineno-0-12" ></ a >< span class = "n" > client</ span > < span class = "o" > =</ span > < span class = "n" > create_trading_client</ span >< span class = "p" > (</ span >< span class = "n" > login</ span >< span class = "o" > =</ span >< span class = "mi" > 12345</ span >< span class = "p" > ,</ span > < span class = "n" > server</ span >< span class = "o" > =</ span >< span class = "s2" > " Broker-Demo" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-0-13" name = "__codelineno-0-13" href = "#__codelineno-0-13" ></ a >< span class = "k" > try</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-14" name = "__codelineno-0-14" href = "#__codelineno-0-14" ></ a > < span class = "n" > account</ span > < span class = "o" > =</ span > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > account_info_as_dict</ span >< span class = "p" > ()</ span >
< a id = "__codelineno-0-15" name = "__codelineno-0-15" href = "#__codelineno-0-15" ></ a >< span class = "k" > finally</ span >< span class = "p" > :</ span >
< a id = "__codelineno-0-16" name = "__codelineno-0-16" href = "#__codelineno-0-16" ></ a > < span class = "n" > client</ span >< span class = "o" > .</ span >< span class = "n" > shutdown</ span >< span class = "p" > ()</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
2026-06-14 17:47:52 +00:00
< p >< code > login</ code > accepts < code > int</ code > , numeric < code > str</ code > , or an empty string; empty strings are
treated as unset. < code > path</ code > , < code > password</ code > , < code > server</ code > , and < code > timeout</ code > are forwarded to
< code > pdmt5.Mt5Config</ code > , and omitted < code > timeout</ code > values keep the lower-level default.
The read-only < code > Mt5CliClient</ code > / < code > mt5_session()</ code > API is unchanged.</ p >
< h2 id = "state-and-order-helpers" > State and order helpers< a class = "headerlink" href = "#state-and-order-helpers" title = "Permanent link" > ¶ </ a ></ h2 >
2026-06-11 10:33:27 +00:00
< p > These helpers are strategy-agnostic and do not depend on signal detection,
betting logic, or scheduling code in downstream applications.</ p >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-1-1" name = "__codelineno-1-1" href = "#__codelineno-1-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > mt5cli</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "p" > (</ span >
2026-06-14 17:47:52 +00:00
< a id = "__codelineno-1-2" name = "__codelineno-1-2" href = "#__codelineno-1-2" ></ a > < span class = "n" > calculate_spread_ratio</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-3" name = "__codelineno-1-3" href = "#__codelineno-1-3" ></ a > < span class = "n" > calculate_margin_and_volume</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-4" name = "__codelineno-1-4" href = "#__codelineno-1-4" ></ a > < span class = "n" > close_open_positions</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-5" name = "__codelineno-1-5" href = "#__codelineno-1-5" ></ a > < span class = "n" > detect_position_side</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-6" name = "__codelineno-1-6" href = "#__codelineno-1-6" ></ a > < span class = "n" > determine_order_limits</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-7" name = "__codelineno-1-7" href = "#__codelineno-1-7" ></ a > < span class = "n" > get_account_snapshot</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-8" name = "__codelineno-1-8" href = "#__codelineno-1-8" ></ a > < span class = "n" > get_positions_frame</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-9" name = "__codelineno-1-9" href = "#__codelineno-1-9" ></ a > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-10" name = "__codelineno-1-10" href = "#__codelineno-1-10" ></ a > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-11" name = "__codelineno-1-11" href = "#__codelineno-1-11" ></ a > < span class = "n" > place_market_order</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-12" name = "__codelineno-1-12" href = "#__codelineno-1-12" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-1-13" name = "__codelineno-1-13" href = "#__codelineno-1-13" ></ a >
< a id = "__codelineno-1-14" name = "__codelineno-1-14" href = "#__codelineno-1-14" ></ a >< span class = "n" > account</ span > < span class = "o" > =</ span > < span class = "n" > get_account_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-15" name = "__codelineno-1-15" href = "#__codelineno-1-15" ></ a >< span class = "n" > symbol</ span > < span class = "o" > =</ span > < span class = "n" > get_symbol_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-16" name = "__codelineno-1-16" href = "#__codelineno-1-16" ></ a >< span class = "n" > tick</ span > < span class = "o" > =</ span > < span class = "n" > get_tick_snapshot</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-17" name = "__codelineno-1-17" href = "#__codelineno-1-17" ></ a >< span class = "n" > positions</ span > < span class = "o" > =</ span > < span class = "n" > get_positions_frame</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-18" name = "__codelineno-1-18" href = "#__codelineno-1-18" ></ a >< span class = "n" > side</ span > < span class = "o" > =</ span > < span class = "n" > detect_position_side</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-19" name = "__codelineno-1-19" href = "#__codelineno-1-19" ></ a >< span class = "n" > spread_ratio</ span > < span class = "o" > =</ span > < span class = "n" > calculate_spread_ratio</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "s2" > " EURUSD" </ span >< span class = "p" > )</ span >
< a id = "__codelineno-1-20" name = "__codelineno-1-20" href = "#__codelineno-1-20" ></ a >< span class = "n" > sizing</ span > < span class = "o" > =</ span > < span class = "n" > calculate_margin_and_volume</ span >< span class = "p" > (</ span >
< a id = "__codelineno-1-21" name = "__codelineno-1-21" href = "#__codelineno-1-21" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-22" name = "__codelineno-1-22" href = "#__codelineno-1-22" ></ a > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-23" name = "__codelineno-1-23" href = "#__codelineno-1-23" ></ a > < span class = "n" > unit_margin_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.5</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-24" name = "__codelineno-1-24" href = "#__codelineno-1-24" ></ a > < span class = "n" > preserved_margin_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.2</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-25" name = "__codelineno-1-25" href = "#__codelineno-1-25" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-1-26" name = "__codelineno-1-26" href = "#__codelineno-1-26" ></ a >< span class = "n" > limits</ span > < span class = "o" > =</ span > < span class = "n" > determine_order_limits</ span >< span class = "p" > (</ span >
< a id = "__codelineno-1-27" name = "__codelineno-1-27" href = "#__codelineno-1-27" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-28" name = "__codelineno-1-28" href = "#__codelineno-1-28" ></ a > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-29" name = "__codelineno-1-29" href = "#__codelineno-1-29" ></ a > < span class = "n" > side</ span >< span class = "o" > =</ span >< span class = "s2" > " long" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-30" name = "__codelineno-1-30" href = "#__codelineno-1-30" ></ a > < span class = "n" > stop_loss_limit_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.01</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-31" name = "__codelineno-1-31" href = "#__codelineno-1-31" ></ a > < span class = "n" > take_profit_limit_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.02</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-32" name = "__codelineno-1-32" href = "#__codelineno-1-32" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-1-33" name = "__codelineno-1-33" href = "#__codelineno-1-33" ></ a >< span class = "n" > preview</ span > < span class = "o" > =</ span > < span class = "n" > place_market_order</ span >< span class = "p" > (</ span >
< a id = "__codelineno-1-34" name = "__codelineno-1-34" href = "#__codelineno-1-34" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-35" name = "__codelineno-1-35" href = "#__codelineno-1-35" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-36" name = "__codelineno-1-36" href = "#__codelineno-1-36" ></ a > < span class = "n" > volume</ span >< span class = "o" > =</ span >< span class = "n" > sizing</ span >< span class = "p" > [</ span >< span class = "s2" > " buy_volume" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-1-37" name = "__codelineno-1-37" href = "#__codelineno-1-37" ></ a > < span class = "n" > order_side</ span >< span class = "o" > =</ span >< span class = "s2" > " BUY" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-38" name = "__codelineno-1-38" href = "#__codelineno-1-38" ></ a > < span class = "n" > sl</ span >< span class = "o" > =</ span >< span class = "n" > limits</ span >< span class = "p" > [</ span >< span class = "s2" > " stop_loss" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-1-39" name = "__codelineno-1-39" href = "#__codelineno-1-39" ></ a > < span class = "n" > tp</ span >< span class = "o" > =</ span >< span class = "n" > limits</ span >< span class = "p" > [</ span >< span class = "s2" > " take_profit" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-1-40" name = "__codelineno-1-40" href = "#__codelineno-1-40" ></ a > < span class = "n" > dry_run</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-1-41" name = "__codelineno-1-41" href = "#__codelineno-1-41" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-1-42" name = "__codelineno-1-42" href = "#__codelineno-1-42" ></ a >< span class = "n" > closed</ span > < span class = "o" > =</ span > < span class = "n" > close_open_positions</ span >< span class = "p" > (</ span >< span class = "n" > client</ span >< span class = "p" > ,</ span > < span class = "n" > symbols</ span >< span class = "o" > =</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span > < span class = "n" > dry_run</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > )</ span >
2026-06-11 10:33:27 +00:00
</ code ></ pre ></ div >
2026-06-14 17:47:52 +00:00
< p >< code > detect_position_side()</ code > returns < code > long</ code > for buy-only exposure, < code > short</ code > for
sell-only exposure, and < code > None</ code > for no positions or mixed long/short exposure.
< code > calculate_spread_ratio()</ code > uses < code > (ask - bid) / ((ask + bid) / 2)</ code > and raises
< code > Mt5TradingError</ code > when bid or ask is missing or non-positive.</ p >
< p > SL/TP ratios for < code > determine_order_limits()</ code > must satisfy < code > 0 < = ratio < 1</ code > ; < code > 0</ code >
omits that level. SL/TP prices are rounded with symbol < code > digits</ code > metadata when
2026-06-18 10:12:55 +00:00
available. < code > determine_order_limits()</ code > pre-validates computed SL/TP prices against
available < code > trade_stops_level * point</ code > metadata when present; violations raise
< code > Mt5TradingError</ code > . This is a planning helper only: it does not guarantee broker
acceptance because live validation can still depend on price movement, bid/ask
side, freeze levels, and server-side rules, and it does not validate
< code > trade_freeze_level</ code > . When symbol metadata cannot be loaded, protective prices
still round with < code > digits=8</ code > and stop-level validation is skipped.
< code > unit_margin_ratio</ code > and < code > preserved_margin_ratio</ code > for < code > calculate_margin_and_volume()</ code >
accept < code > 0 < = ratio < = 1</ code > ; < code > unit_margin_ratio=0</ code > requests one minimum valid unit
when the post-reserve margin can afford it. Negative < code > margin_free</ code > is clamped to
< code > 0.0</ code > before sizing. Execution helpers return normalized < code > OrderExecutionResult</ code >
dictionaries containing the request, response, status, retcode, and < code > dry_run</ code >
flag; < code > dry_run=True</ code > never sends an order or mutates Market Watch visibility.
< code > ensure_symbol_selected()</ code > adds hidden symbols to Market Watch before live order
placement and SL/TP updates. Failed, malformed, or unknown broker retcodes are
fail-closed and returned as < code > status="failed"</ code > while keeping the normalized
response for inspection.</ p >
< h2 id = "order-planning-return-contracts" > Order planning return contracts< a class = "headerlink" href = "#order-planning-return-contracts" title = "Permanent link" > ¶ </ a ></ h2 >
< div class = "highlight" >< pre >< span ></ span >< code >< a id = "__codelineno-2-1" name = "__codelineno-2-1" href = "#__codelineno-2-1" ></ a >< span class = "kn" > from</ span >< span class = "w" > </ span >< span class = "nn" > mt5cli</ span >< span class = "w" > </ span >< span class = "kn" > import</ span > < span class = "n" > MarginVolume</ span >< span class = "p" > ,</ span > < span class = "n" > OrderLimits</ span >< span class = "p" > ,</ span > < span class = "n" > OrderExecutionResult</ span >
< a id = "__codelineno-2-2" name = "__codelineno-2-2" href = "#__codelineno-2-2" ></ a >
< a id = "__codelineno-2-3" name = "__codelineno-2-3" href = "#__codelineno-2-3" ></ a >< span class = "n" > sizing</ span >< span class = "p" > :</ span > < span class = "n" > MarginVolume</ span > < span class = "o" > =</ span > < span class = "n" > calculate_margin_and_volume</ span >< span class = "p" > (</ span >
< a id = "__codelineno-2-4" name = "__codelineno-2-4" href = "#__codelineno-2-4" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-5" name = "__codelineno-2-5" href = "#__codelineno-2-5" ></ a > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-6" name = "__codelineno-2-6" href = "#__codelineno-2-6" ></ a > < span class = "n" > unit_margin_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.5</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-7" name = "__codelineno-2-7" href = "#__codelineno-2-7" ></ a > < span class = "n" > preserved_margin_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.2</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-8" name = "__codelineno-2-8" href = "#__codelineno-2-8" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-2-9" name = "__codelineno-2-9" href = "#__codelineno-2-9" ></ a >< span class = "n" > limits</ span >< span class = "p" > :</ span > < span class = "n" > OrderLimits</ span > < span class = "o" > =</ span > < span class = "n" > determine_order_limits</ span >< span class = "p" > (</ span >
< a id = "__codelineno-2-10" name = "__codelineno-2-10" href = "#__codelineno-2-10" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-11" name = "__codelineno-2-11" href = "#__codelineno-2-11" ></ a > < span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-12" name = "__codelineno-2-12" href = "#__codelineno-2-12" ></ a > < span class = "n" > side</ span >< span class = "o" > =</ span >< span class = "s2" > " long" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-13" name = "__codelineno-2-13" href = "#__codelineno-2-13" ></ a > < span class = "n" > stop_loss_limit_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.01</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-14" name = "__codelineno-2-14" href = "#__codelineno-2-14" ></ a > < span class = "n" > take_profit_limit_ratio</ span >< span class = "o" > =</ span >< span class = "mf" > 0.02</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-15" name = "__codelineno-2-15" href = "#__codelineno-2-15" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-2-16" name = "__codelineno-2-16" href = "#__codelineno-2-16" ></ a >< span class = "n" > preview</ span >< span class = "p" > :</ span > < span class = "n" > OrderExecutionResult</ span > < span class = "o" > =</ span > < span class = "n" > place_market_order</ span >< span class = "p" > (</ span >
< a id = "__codelineno-2-17" name = "__codelineno-2-17" href = "#__codelineno-2-17" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-18" name = "__codelineno-2-18" href = "#__codelineno-2-18" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-19" name = "__codelineno-2-19" href = "#__codelineno-2-19" ></ a > < span class = "n" > volume</ span >< span class = "o" > =</ span >< span class = "n" > sizing</ span >< span class = "p" > [</ span >< span class = "s2" > " buy_volume" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-2-20" name = "__codelineno-2-20" href = "#__codelineno-2-20" ></ a > < span class = "n" > order_side</ span >< span class = "o" > =</ span >< span class = "s2" > " BUY" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-21" name = "__codelineno-2-21" href = "#__codelineno-2-21" ></ a > < span class = "n" > sl</ span >< span class = "o" > =</ span >< span class = "n" > limits</ span >< span class = "p" > [</ span >< span class = "s2" > " stop_loss" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-2-22" name = "__codelineno-2-22" href = "#__codelineno-2-22" ></ a > < span class = "n" > tp</ span >< span class = "o" > =</ span >< span class = "n" > limits</ span >< span class = "p" > [</ span >< span class = "s2" > " take_profit" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-2-23" name = "__codelineno-2-23" href = "#__codelineno-2-23" ></ a > < span class = "n" > dry_run</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-24" name = "__codelineno-2-24" href = "#__codelineno-2-24" ></ a >< span class = "p" > )</ span >
< a id = "__codelineno-2-25" name = "__codelineno-2-25" href = "#__codelineno-2-25" ></ a >< span class = "n" > updates</ span >< span class = "p" > :</ span > < span class = "nb" > list</ span >< span class = "p" > [</ span >< span class = "n" > OrderExecutionResult</ span >< span class = "p" > ]</ span > < span class = "o" > =</ span > < span class = "n" > update_sltp_for_open_positions</ span >< span class = "p" > (</ span >
< a id = "__codelineno-2-26" name = "__codelineno-2-26" href = "#__codelineno-2-26" ></ a > < span class = "n" > client</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-27" name = "__codelineno-2-27" href = "#__codelineno-2-27" ></ a > < span class = "n" > symbol</ span >< span class = "o" > =</ span >< span class = "s2" > " EURUSD" </ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-28" name = "__codelineno-2-28" href = "#__codelineno-2-28" ></ a > < span class = "n" > stop_loss</ span >< span class = "o" > =</ span >< span class = "n" > limits</ span >< span class = "p" > [</ span >< span class = "s2" > " stop_loss" </ span >< span class = "p" > ],</ span >
< a id = "__codelineno-2-29" name = "__codelineno-2-29" href = "#__codelineno-2-29" ></ a > < span class = "n" > dry_run</ span >< span class = "o" > =</ span >< span class = "kc" > True</ span >< span class = "p" > ,</ span >
< a id = "__codelineno-2-30" name = "__codelineno-2-30" href = "#__codelineno-2-30" ></ a >< span class = "p" > )</ span >
</ code ></ pre ></ div >
< p > Closes issue #33: strategy-neutral order planning and execution helpers exposed
through the stable package root without embedding entry/exit policy.</ p >
< h2 id = "migration-from-application-local-helpers" > Migration from application-local helpers< a class = "headerlink" href = "#migration-from-application-local-helpers" title = "Permanent link" > ¶ </ a ></ h2 >
2026-06-11 10:33:27 +00:00
< table >
< thead >
< tr >
2026-06-18 10:12:55 +00:00
< th > Application-local concern</ th >
2026-06-11 10:33:27 +00:00
< th > mt5cli replacement</ th >
</ tr >
</ thead >
< tbody >
< tr >
< td > Manual terminal spawn/kill around trading code</ td >
< td >< code > mt5_trading_session()</ code ></ td >
</ tr >
< tr >
< td > Local position-side detection</ td >
< td >< code > detect_position_side()</ code ></ td >
</ tr >
< tr >
< td > Local margin/volume sizing</ td >
< td >< code > calculate_margin_and_volume()</ code ></ td >
</ tr >
< tr >
< td > Local SL/TP price derivation</ td >
< td >< code > determine_order_limits()</ code ></ td >
</ tr >
< tr >
< td > Throttled SQLite history loop with ad-hoc error handling</ td >
< td >< code > ThrottledHistoryUpdater(suppress_errors=True)</ code ></ td >
</ tr >
</ tbody >
</ table >
< p > Keep read-only data collection on < code > mt5_session()</ code > / < code > Mt5CliClient</ code > ; use
< code > mt5_trading_session()</ code > only where order placement or trading calculations are
required.</ p ></ 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 >