### User_Interface class
```plantuml
@startuml
class User_Interface {
    -Exchanges exchanges
    -Data data
    -Controls controls
    -Signals signals
    -Alerts alerts
    -Strategies strats
    -Trade trade
    -Users users
    -Charts charts
    -Indicators indicators
}

class Exchanges {}
class Data {}
class Controls {}
class Signals {}
class Alerts {}
class Strategies {}
class Trade {}
class Users {}
class Charts {}
class Indicators {}

User_Interface *-down- Exchanges : contains
User_Interface *-down- Data : contains
User_Interface *-down- Controls : contains
User_Interface *-down- Signals : contains
User_Interface *-down- Alerts : contains
User_Interface *-down- Strategies : contains
User_Interface *-down- Trade : contains
User_Interface *-down- Users : contains
User_Interface *-down- Charts : contains
User_Interface *-down- Indicators : contains

@enduml

```
### User interface sequence
```plantuml
@startuml

participant "User_Interface" as UI
participant "Exchanges" as E
participant "Data" as D
participant "Controls" as C
participant "Signals" as S
participant "Alerts" as A
participant "Strategies" as St
participant "Trade" as T
participant "Users" as U
participant "Charts" as Ch
participant "Indicators" as I

UI -> UI: new User_Interface()
create E
UI -> E: new Exchanges()
create D
UI -> D: new Data()
create C
UI -> C: new Controls()
create S
UI -> S: new Signals(D.indicators)
create A
UI -> A: new Alerts("alert_list")
create St
UI -> St: new Strategies("strats_display")
create T
UI -> T: new Trade()
create U
UI -> U: new Users()

note over UI: On window load
create Ch
UI -> Ch: new Charts(chart_init_data)
create I
UI -> I: new Indicators(Ch, ind_init_data)
UI -> D: set_i_updates(I.update)
UI -> S: request_signals()
UI -> A: set_target()
UI -> St: initialize()
UI -> C: init_TP_selector()
UI -> T: initialize()
UI -> E: initialize()

@enduml

```
