[INFO] cloning repository https://github.com/javiervazquezh/bot-claude
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/javiervazquezh/bot-claude" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaviervazquezh%2Fbot-claude", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaviervazquezh%2Fbot-claude'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d0d73214acc2fc3cb5adb4619b08dee6ca958f25
[INFO] checking javiervazquezh/bot-claude against master#c290daa1e5274a52e54a0f49e31bd70192abc606 for pr-133502-23
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaviervazquezh%2Fbot-claude" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/javiervazquezh/bot-claude
[INFO] finished tweaking git repo https://github.com/javiervazquezh/bot-claude
[INFO] tweaked toml for git repo https://github.com/javiervazquezh/bot-claude written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/javiervazquezh/bot-claude on toolchain c290daa1e5274a52e54a0f49e31bd70192abc606
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/javiervazquezh/bot-claude already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zmij v1.0.14
[INFO] [stderr]   Downloaded bytecheck_derive v0.6.12
[INFO] [stderr]   Downloaded ptr_meta v0.1.4
[INFO] [stderr]   Downloaded rend v0.4.2
[INFO] [stderr]   Downloaded bytecheck v0.6.12
[INFO] [stderr]   Downloaded ptr_meta_derive v0.1.4
[INFO] [stderr]   Downloaded tokio-tungstenite v0.21.0
[INFO] [stderr]   Downloaded tokio-rustls v0.25.0
[INFO] [stderr]   Downloaded rustls-native-certs v0.7.3
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.7
[INFO] [stderr]   Downloaded rkyv_derive v0.7.46
[INFO] [stderr]   Downloaded parking_lot_core v0.8.6
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.2
[INFO] [stderr]   Downloaded rust_decimal_macros v1.39.0
[INFO] [stderr]   Downloaded tungstenite v0.21.0
[INFO] [stderr]   Downloaded nonzero_ext v0.3.0
[INFO] [stderr]   Downloaded no-std-compat v0.4.1
[INFO] [stderr]   Downloaded cc v1.2.52
[INFO] [stderr]   Downloaded arraydeque v0.5.1
[INFO] [stderr]   Downloaded rust-ini v0.20.0
[INFO] [stderr]   Downloaded ordered-multimap v0.7.3
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.33
[INFO] [stderr]   Downloaded askama_escape v0.10.3
[INFO] [stderr]   Downloaded humansize v2.1.3
[INFO] [stderr]   Downloaded pest_generator v2.8.5
[INFO] [stderr]   Downloaded openssl-sys v0.9.111
[INFO] [stderr]   Downloaded quanta v0.12.6
[INFO] [stderr]   Downloaded askama v0.12.1
[INFO] [stderr]   Downloaded askama_derive v0.12.5
[INFO] [stderr]   Downloaded askama_parser v0.2.1
[INFO] [stderr]   Downloaded pest_meta v2.8.5
[INFO] [stderr]   Downloaded spinning_top v0.3.0
[INFO] [stderr]   Downloaded pest_derive v2.8.5
[INFO] [stderr]   Downloaded rkyv v0.7.46
[INFO] [stderr]   Downloaded clap v4.5.54
[INFO] [stderr]   Downloaded config v0.14.1
[INFO] [stderr]   Downloaded rust_decimal v1.39.0
[INFO] [stderr]   Downloaded rustls v0.22.4
[INFO] [stderr]   Downloaded governor v0.6.3
[INFO] [stderr]   Downloaded pest v2.8.5
[INFO] [stderr]   Downloaded yaml-rust2 v0.8.1
[INFO] [stderr]   Downloaded clap_builder v4.5.54
[INFO] [stderr]   Downloaded portable-atomic v1.13.0
[INFO] [stderr]   Downloaded zerocopy v0.8.33
[INFO] [stderr]   Downloaded openssl v0.10.75
[INFO] [stderr]   Downloaded sled v0.34.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885
[INFO] running `Command { std: "docker" "start" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rust_decimal v1.39.0
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling libsqlite3-sys v0.27.0
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]     Checking rustls-pki-types v1.13.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]     Checking openssl-probe v0.1.6
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling pest v2.8.5
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling pest_meta v2.8.5
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling pest_generator v2.8.5
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling sqlx-sqlite v0.7.4
[INFO] [stderr]     Checking ryu v1.0.22
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]    Compiling pest_derive v2.8.5
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]    Compiling basic-toml v0.1.10
[INFO] [stderr]    Compiling askama_parser v0.2.1
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking clap_lex v0.7.7
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking humansize v2.1.3
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking rustls-native-certs v0.7.3
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling askama_derive v0.12.5
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking askama_escape v0.10.3
[INFO] [stderr]     Checking ipnet v2.11.0
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking governor v0.6.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking sled v0.34.7
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling rust_decimal_macros v1.39.0
[INFO] [stderr]    Compiling mockall_derive v0.12.1
[INFO] [stderr]     Checking askama v0.12.1
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking mockall v0.12.1
[INFO] [stderr]     Checking crypto_trading_bot v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/types/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trend::*`
[INFO] [stdout]  --> src/strategies/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use trend::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `momentum::*`
[INFO] [stdout]  --> src/strategies/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use momentum::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mean_reversion::*`
[INFO] [stdout]  --> src/strategies/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use mean_reversion::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/exchange/binance.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/exchange/binance.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]   --> src/exchange/websocket.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::{Candle, Side, Ticker, TimeFrame, Trade, TradingPair};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/engine/paper.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/engine/paper.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ticker`
[INFO] [stdout]   --> src/engine/paper.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Ticker, TimeFrame, TradingPair,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]  --> src/engine/portfolio.rs:9:70
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Order, OrderStatus, Position, PositionStatus, PortfolioSnapshot, Side, TradingPair,
[INFO] [stdout]   |                                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AlertType`
[INFO] [stdout]  --> src/engine/executor.rs:9:127
[INFO] [stdout]   |
[INFO] [stdout] 9 | ...osition_closed, stop_loss_triggered, take_profit_triggered, AlertType};
[INFO] [stdout]   |                                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/engine/backtest.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/engine/backtest.rs:11:74
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::{Candle, CandleBuffer, Position, PositionStatus, Side, Signal, TimeFrame, TradingPair};
[INFO] [stdout]    |                                                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `results::*`
[INFO] [stdout]   --> src/engine/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use results::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `limits::*`
[INFO] [stdout]  --> src/risk/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use limits::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RuntimeConfig`
[INFO] [stdout]   --> src/web/api.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     RuntimeConfig, RiskSettings, ExecutorSettings, StrategySettings, GeneralSettings,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DashboardState`
[INFO] [stdout]   --> src/web/api.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{AppState, DashboardState, DashboardEvent};
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BotStatus`
[INFO] [stdout]  --> src/web/state.rs:9:46
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::engine::{BotController, BotState, BotStatus};
[INFO] [stdout]   |                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position` and `Signal`
[INFO] [stdout]   --> src/web/state.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{Position, Side, Signal, TradingPair};
[INFO] [stdout]    |                    ^^^^^^^^        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `api::*`
[INFO] [stdout]  --> src/web/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use api::*;
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]  --> src/analytics/mod.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::{Side, TradingPair};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sqlite`
[INFO] [stdout]  --> src/database/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sqlx::{Row, Sqlite};
[INFO] [stdout]   |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/database/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/main.rs:28:51
[INFO] [stdout]    |
[INFO] [stdout] 28 | use types::{TimeFrame, TradingPair, CandleBuffer, Signal, Side};
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::Result`
[INFO] [stdout]  --> src/types/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::Result;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trend::*`
[INFO] [stdout]  --> src/strategies/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use trend::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `momentum::*`
[INFO] [stdout]  --> src/strategies/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use momentum::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mean_reversion::*`
[INFO] [stdout]  --> src/strategies/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use mean_reversion::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/exchange/binance.rs:6:26
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/exchange/binance.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]   --> src/exchange/websocket.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::{Candle, Side, Ticker, TimeFrame, Trade, TradingPair};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/engine/paper.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/engine/paper.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ticker`
[INFO] [stdout]   --> src/engine/paper.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Ticker, TimeFrame, TradingPair,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]  --> src/engine/portfolio.rs:9:70
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Order, OrderStatus, Position, PositionStatus, PortfolioSnapshot, Side, TradingPair,
[INFO] [stdout]   |                                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AlertType`
[INFO] [stdout]  --> src/engine/executor.rs:9:127
[INFO] [stdout]   |
[INFO] [stdout] 9 | ...osition_closed, stop_loss_triggered, take_profit_triggered, AlertType};
[INFO] [stdout]   |                                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/engine/backtest.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/engine/backtest.rs:11:74
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::types::{Candle, CandleBuffer, Position, PositionStatus, Side, Signal, TimeFrame, TradingPair};
[INFO] [stdout]    |                                                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `results::*`
[INFO] [stdout]   --> src/engine/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use results::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `limits::*`
[INFO] [stdout]  --> src/risk/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use limits::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RuntimeConfig`
[INFO] [stdout]   --> src/web/api.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     RuntimeConfig, RiskSettings, ExecutorSettings, StrategySettings, GeneralSettings,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DashboardState`
[INFO] [stdout]   --> src/web/api.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::{AppState, DashboardState, DashboardEvent};
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BotStatus`
[INFO] [stdout]  --> src/web/state.rs:9:46
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::engine::{BotController, BotState, BotStatus};
[INFO] [stdout]   |                                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position` and `Signal`
[INFO] [stdout]   --> src/web/state.rs:10:20
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::types::{Position, Side, Signal, TradingPair};
[INFO] [stdout]    |                    ^^^^^^^^        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `api::*`
[INFO] [stdout]  --> src/web/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use api::*;
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Side`
[INFO] [stdout]  --> src/analytics/mod.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::types::{Side, TradingPair};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sqlite`
[INFO] [stdout]  --> src/database/mod.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sqlx::{Row, Sqlite};
[INFO] [stdout]   |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/database/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Signal`
[INFO] [stdout]   --> src/main.rs:28:51
[INFO] [stdout]    |
[INFO] [stdout] 28 | use types::{TimeFrame, TradingPair, CandleBuffer, Signal, Side};
[INFO] [stdout]    |                                                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `close`
[INFO] [stdout]   --> src/indicators/atr.rs:48:65
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn calculate_true_range(&self, high: Decimal, low: Decimal, close: Decimal) -> Decimal {
[INFO] [stdout]    |                                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_close`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recent`
[INFO] [stdout]    --> src/strategies/momentum.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let recent = candles.last_n(self.lookback);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_recent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bb_middle`
[INFO] [stdout]   --> src/strategies/mean_reversion.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         bb_middle: Decimal,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_middle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current`
[INFO] [stdout]    --> src/strategies/combined.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let current = candles.last()?;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ema20`
[INFO] [stdout]    --> src/strategies/improved.rs:116:13
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let ema20 = self.ema_20.value()?;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ema20`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position_id`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:46
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `quantity`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:65
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `price`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:84
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/engine/portfolio.rs:278:49
[INFO] [stdout]     |
[INFO] [stdout] 278 |     pub fn update_all_trailing_stops(&mut self, prices: &HashMap<TradingPair, Decimal>) -> Vec<String> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_capital`
[INFO] [stdout]    --> src/engine/results.rs:351:49
[INFO] [stdout]     |
[INFO] [stdout] 351 |     fn calculate_ratios(trades: &[TradeRecord], initial_capital: Decimal) -> (Decimal, Decimal) {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_capital`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/risk/manager.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         let config = self.config.read().await;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `close`
[INFO] [stdout]   --> src/indicators/atr.rs:48:65
[INFO] [stdout]    |
[INFO] [stdout] 48 |     fn calculate_true_range(&self, high: Decimal, low: Decimal, close: Decimal) -> Decimal {
[INFO] [stdout]    |                                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_close`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/web/api.rs:488:30
[INFO] [stdout]     |
[INFO] [stdout] 488 |             Ok(Message::Ping(data)) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recent`
[INFO] [stdout]    --> src/strategies/momentum.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let recent = candles.last_n(self.lookback);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_recent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bb_middle`
[INFO] [stdout]   --> src/strategies/mean_reversion.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         bb_middle: Decimal,
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bb_middle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `profile_config`
[INFO] [stdout]    --> src/web/api.rs:559:9
[INFO] [stdout]     |
[INFO] [stdout] 559 |     let profile_config = match req.profile {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_profile_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current`
[INFO] [stdout]    --> src/strategies/combined.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let current = candles.last()?;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ema20`
[INFO] [stdout]    --> src/strategies/improved.rs:116:13
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let ema20 = self.ema_20.value()?;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_ema20`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position_id`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:46
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `quantity`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:65
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_quantity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `price`
[INFO] [stdout]    --> src/engine/portfolio.rs:272:84
[INFO] [stdout]     |
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |                                                                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_price`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prices`
[INFO] [stdout]    --> src/engine/portfolio.rs:278:49
[INFO] [stdout]     |
[INFO] [stdout] 278 |     pub fn update_all_trailing_stops(&mut self, prices: &HashMap<TradingPair, Decimal>) -> Vec<String> {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_prices`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_capital`
[INFO] [stdout]    --> src/engine/results.rs:351:49
[INFO] [stdout]     |
[INFO] [stdout] 351 |     fn calculate_ratios(trades: &[TradeRecord], initial_capital: Decimal) -> (Decimal, Decimal) {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_capital`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/risk/manager.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         let config = self.config.read().await;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/web/api.rs:488:30
[INFO] [stdout]     |
[INFO] [stdout] 488 |             Ok(Message::Ping(data)) => {
[INFO] [stdout]     |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `price_precision` is never used
[INFO] [stdout]   --> src/types/trading.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TradingPair {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn price_precision(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]    --> src/types/trading.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl Side {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] 113 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_minutes` and `to_milliseconds` are never used
[INFO] [stdout]    --> src/types/trading.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl TimeFrame {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn to_minutes(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn to_milliseconds(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TradingMode` is never used
[INFO] [stdout]    --> src/types/trading.rs:179:10
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub enum TradingMode {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_bearish` is never used
[INFO] [stdout]    --> src/types/trading.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl Signal {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/types/order.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl OrderType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 19 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_active` and `is_final` are never used
[INFO] [stdout]   --> src/types/order.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl OrderStatus {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 43 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_final(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/types/order.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl TimeInForce {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 60 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `limit` is never used
[INFO] [stdout]   --> src/types/order.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl OrderRequest {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn limit(pair: TradingPair, side: Side, quantity: Decimal, price: Decimal) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remaining_quantity`, `fill_percentage`, and `notional_value` are never used
[INFO] [stdout]    --> src/types/order.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn remaining_quantity(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn fill_percentage(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn notional_value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fill` is never constructed
[INFO] [stdout]    --> src/types/order.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub struct Fill {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `notional_value`, `with_stop_loss`, `with_take_profit`, and `is_profitable` are never used
[INFO] [stdout]    --> src/types/position.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl Position {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn notional_value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn with_stop_loss(mut self, stop_loss: Decimal) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn with_take_profit(mut self, take_profit: Decimal) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_profitable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortfolioSnapshot` is never constructed
[INFO] [stdout]    --> src/types/position.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct PortfolioSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `position_count` and `total_position_value` are never used
[INFO] [stdout]    --> src/types/position.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl PortfolioSnapshot {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 158 |     pub fn position_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn total_position_value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/types/candle.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Candle {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 24 |     pub fn body_size(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn range(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn upper_wick(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn lower_wick(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_doji(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn body_percentage(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn typical_price(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn hlc3(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn ohlc4(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn change(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `closes`, `highs`, `lows`, `volumes`, and `typical_prices` are never used
[INFO] [stdout]    --> src/types/candle.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl CandleBuffer {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn closes(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn highs(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn lows(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn volumes(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn typical_prices(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `spread`, `spread_percentage`, and `mid_price` are never used
[INFO] [stdout]    --> src/types/candle.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | impl Ticker {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 167 |     pub fn spread(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn spread_percentage(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn mid_price(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `reset` are never used
[INFO] [stdout]   --> src/indicators/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub trait Indicator {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 18 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 19 |     fn is_ready(&self) -> bool;
[INFO] [stdout] 20 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highest` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn highest(values: &[Decimal], period: usize) -> Option<Decimal> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lowest` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn lowest(values: &[Decimal], period: usize) -> Option<Decimal> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/ema.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl EMA {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn period(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_ema_series` is never used
[INFO] [stdout]   --> src/indicators/ema.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn calculate_ema_series(prices: &[Decimal], period: usize) -> Vec<Decimal> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `crossover` and `spread` are never used
[INFO] [stdout]    --> src/indicators/ema.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl DoubleEMA {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn crossover(&self) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn spread(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_oversold`, `is_overbought`, and `zone` are never used
[INFO] [stdout]   --> src/indicators/rsi.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl RSI {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn is_oversold(&self, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_overbought(&self, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn zone(&self) -> Option<RSIZone> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RSIZone` is never used
[INFO] [stdout]    --> src/indicators/rsi.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub enum RSIZone {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_extreme` is never used
[INFO] [stdout]    --> src/indicators/rsi.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl RSIZone {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] 128 |     pub fn is_extreme(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StochasticRSI` is never constructed
[INFO] [stdout]    --> src/indicators/rsi.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct StochasticRSI {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]    --> src/indicators/rsi.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl StochasticRSI {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 144 |     pub fn new(rsi_period: usize, stoch_period: usize, k_period: usize, d_period: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn update(&mut self, price: Decimal) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `macd_line`, `signal_line`, `histogram`, `is_bullish_crossover`, `is_bearish_crossover`, and `histogram_decreasing` are never used
[INFO] [stdout]   --> src/indicators/macd.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MACD {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn macd_line(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn signal_line(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn histogram(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn is_bullish_crossover(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn is_bearish_crossover(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn histogram_decreasing(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `profile_config`
[INFO] [stdout]    --> src/web/api.rs:559:9
[INFO] [stdout]     |
[INFO] [stdout] 559 |     let profile_config = match req.profile {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_profile_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `macd_line`, `signal_line`, and `histogram` are never read
[INFO] [stdout]    --> src/indicators/macd.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct MACDOutput {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 142 |     pub macd_line: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 143 |     pub signal_line: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 144 |     pub histogram: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MACDOutput` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `strength` is never used
[INFO] [stdout]    --> src/indicators/macd.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl MACDTrend {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn strength(&self) -> i8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bandwidth`, `percent_b`, `is_squeeze`, `is_expansion`, and `position` are never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl BollingerBands {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn bandwidth(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn percent_b(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn is_squeeze(&self, threshold: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_expansion(&self, threshold: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn position(&self, price: Decimal) -> Option<BollingerPosition> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `upper`, `middle`, `lower`, `bandwidth`, and `percent_b` are never read
[INFO] [stdout]    --> src/indicators/bollinger.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct BollingerOutput {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 148 |     pub upper: Decimal,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 149 |     pub middle: Decimal,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 150 |     pub lower: Decimal,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 151 |     pub bandwidth: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 152 |     pub percent_b: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BollingerOutput` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BollingerPosition` is never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:156:10
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub enum BollingerPosition {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_extreme`, `is_overbought`, and `is_oversold` are never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl BollingerPosition {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 165 |     pub fn is_extreme(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn is_overbought(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn is_oversold(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_stop_loss`, `calculate_take_profit`, and `volatility_level` are never used
[INFO] [stdout]   --> src/indicators/atr.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ATR {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn calculate_stop_loss(&self, entry_price: Decimal, multiplier: Decimal, is_long: bool) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn calculate_take_profit(&self, entry_price: Decimal, multiplier: Decimal, is_long: bool) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn volatility_level(&self, price: Decimal) -> Option<VolatilityLevel> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VolatilityLevel` is never used
[INFO] [stdout]    --> src/indicators/atr.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum VolatilityLevel {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `position_size_factor` is never used
[INFO] [stdout]    --> src/indicators/atr.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | impl VolatilityLevel {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 133 |     pub fn position_size_factor(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ATRTrailingStop` is never constructed
[INFO] [stdout]    --> src/indicators/atr.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct ATRTrailingStop {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `is_stopped`, and `stop_price` are never used
[INFO] [stdout]    --> src/indicators/atr.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl ATRTrailingStop {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 152 |     pub fn new(period: usize, multiplier: Decimal, is_long: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn is_stopped(&self, price: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn stop_price(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_low_volume` is never used
[INFO] [stdout]   --> src/indicators/volume.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl VolumeProfile {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_low_volume(&self, current_volume: Decimal, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OBV` is never constructed
[INFO] [stdout]   --> src/indicators/volume.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct OBV {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `value` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl OBV {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  82 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn update(&mut self, close: Decimal, volume: Decimal) -> Decimal {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]    --> src/indicators/volume.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct VWAP {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `value`, and `price_vs_vwap` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl VWAP {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 135 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal, volume: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn price_vs_vwap(&self, price: Decimal) -> Option<PriceVsVWAP> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PriceVsVWAP` is never used
[INFO] [stdout]    --> src/indicators/volume.rs:205:10
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub enum PriceVsVWAP {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_bullish` and `is_bearish` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl PriceVsVWAP {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 214 |     pub fn is_bullish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoneyFlowIndex` is never constructed
[INFO] [stdout]    --> src/indicators/volume.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct MoneyFlowIndex {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `value`, `is_oversold`, and `is_overbought` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | impl MoneyFlowIndex {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 233 |     pub fn new(period: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal, volume: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn is_oversold(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn is_overbought(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `reset` are never used
[INFO] [stdout]   --> src/strategies/mod.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub trait Strategy: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 17 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_trade` is never used
[INFO] [stdout]   --> src/strategies/mod.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl StrategySignal {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn should_trade(&self, min_confidence: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_params` is never used
[INFO] [stdout]   --> src/strategies/trend.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TrendStrategy {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn with_params(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `aggressive` is never used
[INFO] [stdout]   --> src/strategies/momentum.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl MomentumStrategy {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn aggressive() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `conservative` is never used
[INFO] [stdout]   --> src/strategies/mean_reversion.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl MeanReversionStrategy {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn conservative(pair: TradingPair) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `min_agreement` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     min_agreement: Decimal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BTCCorrelationStrategy` is never constructed
[INFO] [stdout]    --> src/strategies/combined.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub struct BTCCorrelationStrategy {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_btc`, and `calculate_btc_momentum` are never used
[INFO] [stdout]    --> src/strategies/combined.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl BTCCorrelationStrategy {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 226 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn update_btc(&mut self, candle: crate::types::Candle) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn calculate_btc_momentum(&self) -> Option<(Decimal, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Exchange` is never used
[INFO] [stdout]   --> src/exchange/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Exchange: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BINANCE_US_TESTNET` is never used
[INFO] [stdout]   --> src/exchange/binance.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const BINANCE_US_TESTNET: &str = "https://testnet.binance.vision";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HmacSha256` is never used
[INFO] [stdout]   --> src/exchange/binance.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | type HmacSha256 = Hmac<Sha256>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `api_key`, `secret_key`, and `use_testnet` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct BinanceClient {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 23 |     client: Client,
[INFO] [stdout] 24 |     api_key: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     secret_key: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 26 |     base_url: String,
[INFO] [stdout] 27 |     use_testnet: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceClient` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exchange/binance.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl BinanceClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  31 |     pub fn new(api_key: String, secret_key: String, use_testnet: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     fn sign(&self, query: &str) -> String {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn build_signed_query(&self, params: &HashMap<&str, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn get_server_time(&self) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_order_book(&self, pair: TradingPair, limit: u32) -> Result<OrderBook> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub async fn place_order(&self, request: &OrderRequest) -> Result<Order> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn cancel_order(&self, pair: TradingPair, order_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub async fn get_order(&self, pair: TradingPair, order_id: &str) -> Result<Order> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub async fn get_balance(&self, asset: &str) -> Result<Decimal> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub async fn get_all_balances(&self) -> Result<HashMap<String, (Decimal, Decimal)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     fn convert_order_response(&self, resp: OrderResponse, pair: TradingPair) -> Result<Order> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBook` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:503:12
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub struct OrderBook {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `best_bid`, `best_ask`, `spread`, and `mid_price` are never used
[INFO] [stdout]    --> src/exchange/binance.rs:511:12
[INFO] [stdout]     |
[INFO] [stdout] 510 | impl OrderBook {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 511 |     pub fn best_bid(&self) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     pub fn best_ask(&self) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 519 |     pub fn spread(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     pub fn mid_price(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerTimeResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:536:8
[INFO] [stdout]     |
[INFO] [stdout] 536 | struct ServerTimeResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KlineResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:561:8
[INFO] [stdout]     |
[INFO] [stdout] 561 | struct KlineResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBookResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:583:8
[INFO] [stdout]     |
[INFO] [stdout] 583 | struct OrderBookResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:591:8
[INFO] [stdout]     |
[INFO] [stdout] 591 | struct OrderResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:618:8
[INFO] [stdout]     |
[INFO] [stdout] 618 | struct AccountResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BalanceResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:623:8
[INFO] [stdout]     |
[INFO] [stdout] 623 | struct BalanceResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/exchange/websocket.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Trade(Trade),
[INFO] [stdout]    |     ----- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 20 -     Trade(Trade),
[INFO] [stdout] 20 +     Trade(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subscribe_ticker` and `subscribe_trade` are never used
[INFO] [stdout]   --> src/exchange/websocket.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl BinanceWebSocket {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn subscribe_ticker(&mut self, pair: TradingPair) -> &mut Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn subscribe_trade(&mut self, pair: TradingPair) -> &mut Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cancel_order` and `portfolio_arc` are never used
[INFO] [stdout]    --> src/engine/paper.rs:321:18
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl PaperTradingEngine {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub async fn cancel_order(&self, order_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn portfolio_arc(&self) -> Arc<RwLock<Portfolio>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/engine/portfolio.rs:57:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Portfolio {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_balance(&mut self, asset: &str, amount: Decimal) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn get_position_for_pair_mut(&mut self, pair: TradingPair) -> Option<&mut Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn update_order(&mut self, order_id: &str, status: OrderStatus, filled_qty: Decimal, avg_price: Option<Decimal>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn get_active_orders(&self) -> Vec<&Order> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn scale_position(&mut self, _position_id: &str, _additional_qty: Decimal, _price: Decimal) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn update_all_trailing_stops(&mut self, prices: &HashMap<TradingPair, Decimal>) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn get_position(&self, position_id: &str) -> Option<&Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn snapshot(&self, prices: &HashMap<TradingPair, Decimal>) -> PortfolioSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StrategyRunner` is never constructed
[INFO] [stdout]    --> src/engine/executor.rs:307:12
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub struct StrategyRunner {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_strategy`, `run_analysis`, and `execute_signals` are never used
[INFO] [stdout]    --> src/engine/executor.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl StrategyRunner {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(executor: Arc<TradeExecutor>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn add_strategy(&mut self, strategy: Box<dyn Strategy>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub async fn run_analysis(&mut self, candles: &CandleBuffer) -> Vec<StrategySignal> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub async fn execute_signals(&self, signals: Vec<StrategySignal>) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subscribe` is never used
[INFO] [stdout]    --> src/engine/controller.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl BotController {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn subscribe(&self) -> broadcast::Receiver<BotStatus> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_stop_loss`, `calculate_take_profit`, `should_close_position`, `assess_portfolio_risk`, and `config_arc` are never used
[INFO] [stdout]    --> src/risk/manager.rs:149:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl RiskManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn calculate_stop_loss(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn calculate_take_profit(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn should_close_position(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub async fn assess_portfolio_risk(&self, portfolio: &Portfolio) -> RiskAssessment {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn config_arc(&self) -> Arc<RwLock<RuntimeConfig>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CloseReason` is never used
[INFO] [stdout]    --> src/risk/manager.rs:275:10
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub enum CloseReason {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskLevel` is never used
[INFO] [stdout]    --> src/risk/manager.rs:285:10
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub enum RiskLevel {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskAssessment` is never constructed
[INFO] [stdout]    --> src/risk/manager.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub struct RiskAssessment {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `conservative`, `aggressive`, and `custom` are never used
[INFO] [stdout]   --> src/risk/limits.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl RiskLimits {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] 31 |     pub fn conservative() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn aggressive() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn custom(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `balanced`, `btc_heavy`, and `altcoin_heavy` are never used
[INFO] [stdout]    --> src/risk/limits.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl PositionSizeConfig {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] 140 |     pub fn balanced() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn btc_heavy() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn altcoin_heavy() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FullConfigUpdated` is never constructed
[INFO] [stdout]   --> src/config/manager.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ConfigChangeEvent {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     FullConfigUpdated,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigChangeEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_full` and `subscribe` are never used
[INFO] [stdout]    --> src/config/manager.rs:94:18
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl RuntimeConfigManager {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub async fn update_full(&self, new_config: RuntimeConfig) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn subscribe(&self) -> broadcast::Receiver<ConfigChangeEvent> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default` is never used
[INFO] [stdout]    --> src/config/profiles.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl StrategyConfig {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn default() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `win_rate`, `profit_factor`, `avg_win`, and `avg_loss` are never used
[INFO] [stdout]    --> src/web/state.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl TradingStats {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 193 |     pub fn win_rate(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn profit_factor(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn avg_win(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn avg_loss(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ConfigChange` is never constructed
[INFO] [stdout]    --> src/web/state.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub enum DashboardEvent {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 289 |     ConfigChange { change: ConfigChangeEvent },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DashboardEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/database/mod.rs:299:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub async fn get_trades_since(&self, since: DateTime<Utc>) -> Result<Vec<TradeRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub async fn get_recent_trades(&self, limit: u32) -> Result<Vec<TradeRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn get_trade_count(&self) -> Result<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub async fn insert_equity_snapshot(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub async fn get_equity_snapshots_since(&self, since: DateTime<Utc>) -> Result<Vec<(DateTime<Utc>, Decimal)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 477 |     pub async fn get_all_signals(&self) -> Result<Vec<crate::web::state::SignalRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub async fn get_signals_since(&self, since: DateTime<Utc>) -> Result<Vec<crate::web::state::SignalRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub async fn insert_partial_exit(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub async fn get_partial_exits_for_position(&self, position_id: &str) -> Result<Vec<PartialExitRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub async fn update_position_state(&self, position_id: &str, state_json: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 672 |     pub async fn get_recent_notifications(&self, limit: usize) -> Result<Vec<crate::notifications::Notification>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub async fn get_unacknowledged_critical(&self) -> Result<Vec<crate::notifications::Notification>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     pub async fn cleanup_old_data(&self, keep_days: i64) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartialExitRecord` is never constructed
[INFO] [stdout]    --> src/database/mod.rs:777:12
[INFO] [stdout]     |
[INFO] [stdout] 777 | pub struct PartialExitRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_severity` is never used
[INFO] [stdout]    --> src/notifications/mod.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl Notification {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn with_severity(mut self, severity: Severity) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_old` is never used
[INFO] [stdout]    --> src/notifications/mod.rs:311:18
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl NotificationManager {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub async fn clear_old(&self, keep_count: usize) {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `price_precision` is never used
[INFO] [stdout]   --> src/types/trading.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TradingPair {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn price_precision(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]    --> src/types/trading.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl Side {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] 113 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_minutes` and `to_milliseconds` are never used
[INFO] [stdout]    --> src/types/trading.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl TimeFrame {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn to_minutes(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn to_milliseconds(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TradingMode` is never used
[INFO] [stdout]    --> src/types/trading.rs:179:10
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub enum TradingMode {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_bearish` is never used
[INFO] [stdout]    --> src/types/trading.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl Signal {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/types/order.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl OrderType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 19 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_active` and `is_final` are never used
[INFO] [stdout]   --> src/types/order.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl OrderStatus {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 43 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_final(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_str` is never used
[INFO] [stdout]   --> src/types/order.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl TimeInForce {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 60 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `limit` is never used
[INFO] [stdout]   --> src/types/order.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl OrderRequest {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn limit(pair: TradingPair, side: Side, quantity: Decimal, price: Decimal) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remaining_quantity`, `fill_percentage`, and `notional_value` are never used
[INFO] [stdout]    --> src/types/order.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Order {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn remaining_quantity(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn fill_percentage(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn notional_value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fill` is never constructed
[INFO] [stdout]    --> src/types/order.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub struct Fill {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `notional_value`, `with_stop_loss`, `with_take_profit`, and `is_profitable` are never used
[INFO] [stdout]    --> src/types/position.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl Position {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn notional_value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn with_stop_loss(mut self, stop_loss: Decimal) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn with_take_profit(mut self, take_profit: Decimal) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_profitable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PortfolioSnapshot` is never constructed
[INFO] [stdout]    --> src/types/position.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct PortfolioSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `position_count` and `total_position_value` are never used
[INFO] [stdout]    --> src/types/position.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl PortfolioSnapshot {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 158 |     pub fn position_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn total_position_value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/types/candle.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Candle {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 24 |     pub fn body_size(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn range(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn upper_wick(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn lower_wick(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_doji(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn body_percentage(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn typical_price(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn hlc3(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn ohlc4(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn change(&self) -> Decimal {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty`, `closes`, `highs`, `lows`, `volumes`, and `typical_prices` are never used
[INFO] [stdout]    --> src/types/candle.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout]  95 | impl CandleBuffer {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn closes(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn highs(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn lows(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn volumes(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn typical_prices(&self) -> Vec<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `spread`, `spread_percentage`, and `mid_price` are never used
[INFO] [stdout]    --> src/types/candle.rs:167:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | impl Ticker {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 167 |     pub fn spread(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn spread_percentage(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn mid_price(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `reset` are never used
[INFO] [stdout]   --> src/indicators/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub trait Indicator {
[INFO] [stdout]    |           --------- methods in this trait
[INFO] [stdout] 18 |     fn name(&self) -> &'static str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 19 |     fn is_ready(&self) -> bool;
[INFO] [stdout] 20 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `highest` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn highest(values: &[Decimal], period: usize) -> Option<Decimal> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lowest` is never used
[INFO] [stdout]   --> src/indicators/mod.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn lowest(values: &[Decimal], period: usize) -> Option<Decimal> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `period` is never used
[INFO] [stdout]   --> src/indicators/ema.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl EMA {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn period(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_ema_series` is never used
[INFO] [stdout]   --> src/indicators/ema.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn calculate_ema_series(prices: &[Decimal], period: usize) -> Vec<Decimal> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `crossover` and `spread` are never used
[INFO] [stdout]    --> src/indicators/ema.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl DoubleEMA {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn crossover(&self) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn spread(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_oversold`, `is_overbought`, and `zone` are never used
[INFO] [stdout]   --> src/indicators/rsi.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl RSI {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn is_oversold(&self, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_overbought(&self, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn zone(&self) -> Option<RSIZone> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RSIZone` is never used
[INFO] [stdout]    --> src/indicators/rsi.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub enum RSIZone {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_extreme` is never used
[INFO] [stdout]    --> src/indicators/rsi.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl RSIZone {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] 128 |     pub fn is_extreme(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StochasticRSI` is never constructed
[INFO] [stdout]    --> src/indicators/rsi.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub struct StochasticRSI {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]    --> src/indicators/rsi.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl StochasticRSI {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 144 |     pub fn new(rsi_period: usize, stoch_period: usize, k_period: usize, d_period: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn update(&mut self, price: Decimal) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `macd_line`, `signal_line`, `histogram`, `is_bullish_crossover`, `is_bearish_crossover`, and `histogram_decreasing` are never used
[INFO] [stdout]   --> src/indicators/macd.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MACD {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn macd_line(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn signal_line(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn histogram(&self) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn is_bullish_crossover(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn is_bearish_crossover(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn histogram_decreasing(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `macd_line`, `signal_line`, and `histogram` are never read
[INFO] [stdout]    --> src/indicators/macd.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct MACDOutput {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 142 |     pub macd_line: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 143 |     pub signal_line: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 144 |     pub histogram: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MACDOutput` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `strength` is never used
[INFO] [stdout]    --> src/indicators/macd.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl MACDTrend {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn strength(&self) -> i8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bandwidth`, `percent_b`, `is_squeeze`, `is_expansion`, and `position` are never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl BollingerBands {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn bandwidth(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn percent_b(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn is_squeeze(&self, threshold: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn is_expansion(&self, threshold: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn position(&self, price: Decimal) -> Option<BollingerPosition> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `upper`, `middle`, `lower`, `bandwidth`, and `percent_b` are never read
[INFO] [stdout]    --> src/indicators/bollinger.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct BollingerOutput {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 148 |     pub upper: Decimal,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 149 |     pub middle: Decimal,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 150 |     pub lower: Decimal,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 151 |     pub bandwidth: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 152 |     pub percent_b: Decimal,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BollingerOutput` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BollingerPosition` is never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:156:10
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub enum BollingerPosition {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_extreme`, `is_overbought`, and `is_oversold` are never used
[INFO] [stdout]    --> src/indicators/bollinger.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl BollingerPosition {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 165 |     pub fn is_extreme(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn is_overbought(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn is_oversold(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_stop_loss`, `calculate_take_profit`, and `volatility_level` are never used
[INFO] [stdout]   --> src/indicators/atr.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl ATR {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn calculate_stop_loss(&self, entry_price: Decimal, multiplier: Decimal, is_long: bool) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn calculate_take_profit(&self, entry_price: Decimal, multiplier: Decimal, is_long: bool) -> Option<Decimal> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn volatility_level(&self, price: Decimal) -> Option<VolatilityLevel> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VolatilityLevel` is never used
[INFO] [stdout]    --> src/indicators/atr.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum VolatilityLevel {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `position_size_factor` is never used
[INFO] [stdout]    --> src/indicators/atr.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | impl VolatilityLevel {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 133 |     pub fn position_size_factor(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ATRTrailingStop` is never constructed
[INFO] [stdout]    --> src/indicators/atr.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct ATRTrailingStop {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `is_stopped`, and `stop_price` are never used
[INFO] [stdout]    --> src/indicators/atr.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl ATRTrailingStop {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 152 |     pub fn new(period: usize, multiplier: Decimal, is_long: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn is_stopped(&self, price: Decimal) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn stop_price(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_low_volume` is never used
[INFO] [stdout]   --> src/indicators/volume.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl VolumeProfile {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_low_volume(&self, current_volume: Decimal, threshold: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OBV` is never constructed
[INFO] [stdout]   --> src/indicators/volume.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct OBV {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `value` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl OBV {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  82 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn update(&mut self, close: Decimal, volume: Decimal) -> Decimal {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn value(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]    --> src/indicators/volume.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct VWAP {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `value`, and `price_vs_vwap` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 134 | impl VWAP {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 135 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal, volume: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn price_vs_vwap(&self, price: Decimal) -> Option<PriceVsVWAP> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PriceVsVWAP` is never used
[INFO] [stdout]    --> src/indicators/volume.rs:205:10
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub enum PriceVsVWAP {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_bullish` and `is_bearish` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:214:12
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl PriceVsVWAP {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 214 |     pub fn is_bullish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn is_bearish(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoneyFlowIndex` is never constructed
[INFO] [stdout]    --> src/indicators/volume.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct MoneyFlowIndex {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `value`, `is_oversold`, and `is_overbought` are never used
[INFO] [stdout]    --> src/indicators/volume.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | impl MoneyFlowIndex {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 233 |     pub fn new(period: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn update(&mut self, high: Decimal, low: Decimal, close: Decimal, volume: Decimal) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn value(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn is_oversold(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn is_overbought(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `reset` are never used
[INFO] [stdout]   --> src/strategies/mod.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub trait Strategy: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] 17 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn reset(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `should_trade` is never used
[INFO] [stdout]   --> src/strategies/mod.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl StrategySignal {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn should_trade(&self, min_confidence: Decimal) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `with_params` is never used
[INFO] [stdout]   --> src/strategies/trend.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TrendStrategy {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn with_params(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `aggressive` is never used
[INFO] [stdout]   --> src/strategies/momentum.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl MomentumStrategy {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn aggressive() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `conservative` is never used
[INFO] [stdout]   --> src/strategies/mean_reversion.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl MeanReversionStrategy {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn conservative(pair: TradingPair) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `min_agreement` is never read
[INFO] [stdout]   --> src/strategies/combined.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CombinedStrategy {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     min_agreement: Decimal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BTCCorrelationStrategy` is never constructed
[INFO] [stdout]    --> src/strategies/combined.rs:217:12
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub struct BTCCorrelationStrategy {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_btc`, and `calculate_btc_momentum` are never used
[INFO] [stdout]    --> src/strategies/combined.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl BTCCorrelationStrategy {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 226 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn update_btc(&mut self, candle: crate::types::Candle) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn calculate_btc_momentum(&self) -> Option<(Decimal, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Exchange` is never used
[INFO] [stdout]   --> src/exchange/mod.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Exchange: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BINANCE_US_TESTNET` is never used
[INFO] [stdout]   --> src/exchange/binance.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const BINANCE_US_TESTNET: &str = "https://testnet.binance.vision";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HmacSha256` is never used
[INFO] [stdout]   --> src/exchange/binance.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | type HmacSha256 = Hmac<Sha256>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `api_key`, `secret_key`, and `use_testnet` are never read
[INFO] [stdout]   --> src/exchange/binance.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct BinanceClient {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 23 |     client: Client,
[INFO] [stdout] 24 |     api_key: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     secret_key: String,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 26 |     base_url: String,
[INFO] [stdout] 27 |     use_testnet: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BinanceClient` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/exchange/binance.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl BinanceClient {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  31 |     pub fn new(api_key: String, secret_key: String, use_testnet: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     fn sign(&self, query: &str) -> String {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn build_signed_query(&self, params: &HashMap<&str, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn get_server_time(&self) -> Result<u64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_order_book(&self, pair: TradingPair, limit: u32) -> Result<OrderBook> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub async fn place_order(&self, request: &OrderRequest) -> Result<Order> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub async fn cancel_order(&self, pair: TradingPair, order_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub async fn get_order(&self, pair: TradingPair, order_id: &str) -> Result<Order> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub async fn get_balance(&self, asset: &str) -> Result<Decimal> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub async fn get_all_balances(&self) -> Result<HashMap<String, (Decimal, Decimal)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     fn convert_order_response(&self, resp: OrderResponse, pair: TradingPair) -> Result<Order> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBook` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:503:12
[INFO] [stdout]     |
[INFO] [stdout] 503 | pub struct OrderBook {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `best_bid`, `best_ask`, `spread`, and `mid_price` are never used
[INFO] [stdout]    --> src/exchange/binance.rs:511:12
[INFO] [stdout]     |
[INFO] [stdout] 510 | impl OrderBook {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 511 |     pub fn best_bid(&self) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 515 |     pub fn best_ask(&self) -> Option<(Decimal, Decimal)> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 519 |     pub fn spread(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     pub fn mid_price(&self) -> Option<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerTimeResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:536:8
[INFO] [stdout]     |
[INFO] [stdout] 536 | struct ServerTimeResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KlineResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:561:8
[INFO] [stdout]     |
[INFO] [stdout] 561 | struct KlineResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderBookResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:583:8
[INFO] [stdout]     |
[INFO] [stdout] 583 | struct OrderBookResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OrderResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:591:8
[INFO] [stdout]     |
[INFO] [stdout] 591 | struct OrderResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AccountResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:618:8
[INFO] [stdout]     |
[INFO] [stdout] 618 | struct AccountResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BalanceResponse` is never constructed
[INFO] [stdout]    --> src/exchange/binance.rs:623:8
[INFO] [stdout]     |
[INFO] [stdout] 623 | struct BalanceResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/exchange/websocket.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Trade(Trade),
[INFO] [stdout]    |     ----- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MarketEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 20 -     Trade(Trade),
[INFO] [stdout] 20 +     Trade(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subscribe_ticker` and `subscribe_trade` are never used
[INFO] [stdout]   --> src/exchange/websocket.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl BinanceWebSocket {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn subscribe_ticker(&mut self, pair: TradingPair) -> &mut Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn subscribe_trade(&mut self, pair: TradingPair) -> &mut Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cancel_order` and `portfolio_arc` are never used
[INFO] [stdout]    --> src/engine/paper.rs:321:18
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl PaperTradingEngine {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub async fn cancel_order(&self, order_id: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn portfolio_arc(&self) -> Arc<RwLock<Portfolio>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/engine/portfolio.rs:57:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Portfolio {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn set_balance(&mut self, asset: &str, amount: Decimal) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn get_position_for_pair_mut(&mut self, pair: TradingPair) -> Option<&mut Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn update_order(&mut self, order_id: &str, status: OrderStatus, filled_qty: Decimal, avg_price: Option<Decimal>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn get_active_orders(&self) -> Vec<&Order> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn scale_position(&mut self, _position_id: &str, _additional_qty: Decimal, _price: Decimal) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn partial_close_position(&mut self, position_id: &str, quantity: Decimal, price: Decimal) -> Result<Decimal> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn update_all_trailing_stops(&mut self, prices: &HashMap<TradingPair, Decimal>) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn get_position(&self, position_id: &str) -> Option<&Position> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn snapshot(&self, prices: &HashMap<TradingPair, Decimal>) -> PortfolioSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StrategyRunner` is never constructed
[INFO] [stdout]    --> src/engine/executor.rs:307:12
[INFO] [stdout]     |
[INFO] [stdout] 307 | pub struct StrategyRunner {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_strategy`, `run_analysis`, and `execute_signals` are never used
[INFO] [stdout]    --> src/engine/executor.rs:313:12
[INFO] [stdout]     |
[INFO] [stdout] 312 | impl StrategyRunner {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 313 |     pub fn new(executor: Arc<TradeExecutor>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn add_strategy(&mut self, strategy: Box<dyn Strategy>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub async fn run_analysis(&mut self, candles: &CandleBuffer) -> Vec<StrategySignal> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub async fn execute_signals(&self, signals: Vec<StrategySignal>) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subscribe` is never used
[INFO] [stdout]    --> src/engine/controller.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl BotController {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn subscribe(&self) -> broadcast::Receiver<BotStatus> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_stop_loss`, `calculate_take_profit`, `should_close_position`, `assess_portfolio_risk`, and `config_arc` are never used
[INFO] [stdout]    --> src/risk/manager.rs:149:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl RiskManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn calculate_stop_loss(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub async fn calculate_take_profit(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn should_close_position(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub async fn assess_portfolio_risk(&self, portfolio: &Portfolio) -> RiskAssessment {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn config_arc(&self) -> Arc<RwLock<RuntimeConfig>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CloseReason` is never used
[INFO] [stdout]    --> src/risk/manager.rs:275:10
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub enum CloseReason {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskLevel` is never used
[INFO] [stdout]    --> src/risk/manager.rs:285:10
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub enum RiskLevel {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskAssessment` is never constructed
[INFO] [stdout]    --> src/risk/manager.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub struct RiskAssessment {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskLimits` is never constructed
[INFO] [stdout]  --> src/risk/limits.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct RiskLimits {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `conservative`, `moderate`, `aggressive`, `custom`, and `validate` are never used
[INFO] [stdout]   --> src/risk/limits.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl RiskLimits {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 31 |     pub fn conservative() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn moderate() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn aggressive() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn custom(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn validate(&self) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionSizeConfig` is never constructed
[INFO] [stdout]    --> src/risk/limits.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct PositionSizeConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `balanced`, `btc_heavy`, and `altcoin_heavy` are never used
[INFO] [stdout]    --> src/risk/limits.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl PositionSizeConfig {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] 140 |     pub fn balanced() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn btc_heavy() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn altcoin_heavy() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FullConfigUpdated` is never constructed
[INFO] [stdout]   --> src/config/manager.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum ConfigChangeEvent {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 16 |     FullConfigUpdated,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigChangeEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_full` and `subscribe` are never used
[INFO] [stdout]    --> src/config/manager.rs:94:18
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl RuntimeConfigManager {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub async fn update_full(&self, new_config: RuntimeConfig) -> Result<(), String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn subscribe(&self) -> broadcast::Receiver<ConfigChangeEvent> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default` is never used
[INFO] [stdout]    --> src/config/profiles.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout]  75 | impl StrategyConfig {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn default() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `win_rate`, `profit_factor`, `avg_win`, and `avg_loss` are never used
[INFO] [stdout]    --> src/web/state.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl TradingStats {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 193 |     pub fn win_rate(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn profit_factor(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn avg_win(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn avg_loss(&self) -> Decimal {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ConfigChange` is never constructed
[INFO] [stdout]    --> src/web/state.rs:289:5
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub enum DashboardEvent {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 289 |     ConfigChange { change: ConfigChangeEvent },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DashboardEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/database/mod.rs:299:18
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub async fn get_trades_since(&self, since: DateTime<Utc>) -> Result<Vec<TradeRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub async fn get_recent_trades(&self, limit: u32) -> Result<Vec<TradeRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 375 |     pub async fn get_trade_count(&self) -> Result<i64> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub async fn insert_equity_snapshot(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     pub async fn get_equity_snapshots_since(&self, since: DateTime<Utc>) -> Result<Vec<(DateTime<Utc>, Decimal)>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 477 |     pub async fn get_all_signals(&self) -> Result<Vec<crate::web::state::SignalRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     pub async fn get_signals_since(&self, since: DateTime<Utc>) -> Result<Vec<crate::web::state::SignalRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub async fn insert_partial_exit(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub async fn get_partial_exits_for_position(&self, position_id: &str) -> Result<Vec<PartialExitRecord>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub async fn update_position_state(&self, position_id: &str, state_json: &str) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 672 |     pub async fn get_recent_notifications(&self, limit: usize) -> Result<Vec<crate::notifications::Notification>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 711 |     pub async fn get_unacknowledged_critical(&self) -> Result<Vec<crate::notifications::Notification>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     pub async fn cleanup_old_data(&self, keep_days: i64) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartialExitRecord` is never constructed
[INFO] [stdout]    --> src/database/mod.rs:777:12
[INFO] [stdout]     |
[INFO] [stdout] 777 | pub struct PartialExitRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_severity` is never used
[INFO] [stdout]    --> src/notifications/mod.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl Notification {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn with_severity(mut self, severity: Severity) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_all` and `clear_old` are never used
[INFO] [stdout]    --> src/notifications/mod.rs:282:18
[INFO] [stdout]     |
[INFO] [stdout] 234 | impl NotificationManager {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub async fn get_all(&self) -> Vec<Notification> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     pub async fn clear_old(&self, keep_count: usize) {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 11s
[INFO] running `Command { std: "docker" "inspect" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885", kill_on_drop: false }`
[INFO] [stdout] 1b4eb1f4f8044d7632c404c7dd9dfcafe04f429910f5e408cd8fa9f5d15f9885
