← All examples
Example 25
Hook on start open charts
a hook for "the terminal starts": make sure the charts you work with
- Category
- Workspace: reads or changes charts and panels
- Permissions
- workspace.readworkspace.write
- Before you run it
- attached to "Terminal starts" with workspace.read and
- What it does
- CHANGES YOUR WORKSPACE — opens a chart for each symbol of the
- How to run it
- in Script Hooks, "+ Add script" under "Terminal starts", choose this
- Language
>=0.1.1, <0.2.0- Host
>=0.1.5, <0.2.0- Needs
- workspace >=0.1.3, <0.2.0event >=0.1.0, <0.2.0
Source
// Purpose: a hook for "the terminal starts": make sure the charts you work with // are open, opening only the ones that are missing. // Category: workspace // Permissions: workspace.read, workspace.write // Preconditions: attached to "Terminal starts" with workspace.read and // workspace.write ticked on the hook // Side effects: CHANGES YOUR WORKSPACE — opens a chart for each symbol of the // watch list that has none (none, the second time). // Run: in Script Hooks, "+ Add script" under "Terminal starts", choose this // file, tick workspace.read and workspace.write on it. Edit `watch`. lang ">=0.1.1, <0.2.0"; host "ttt" ">=0.1.5, <0.2.0"; requires "workspace" ">=0.1.3, <0.2.0"; requires "event" ">=0.1.0, <0.2.0"; import std.list; fn main() -> Result<Unit, Error> { let e = event.current(); print("started by " + e.kind); let watch = ["BTCUSDT", "ETHUSDT"]; let offered = workspace.symbols(); for symbol in watch { if !list.contains(offered, symbol) { print(symbol + ": not offered by this terminal, skipped"); } else { let mut open = false; for c in workspace.charts() { if c.symbol == symbol { open = true; } } if open { print(symbol + ": already has a chart"); } else { let opened = workspace.open_chart(symbol, "15m")?; print(symbol + ": opened " + opened.timeframe); } } } return Ok(()); }