### 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 ```