[INFO] cloning repository https://github.com/blockbit-hama/xQuant [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/blockbit-hama/xQuant" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c48c8cbd2f74a92854d4d1594a74f82eff5b3cfc [INFO] checking blockbit-hama/xQuant/c48c8cbd2f74a92854d4d1594a74f82eff5b3cfc against master#e0e204f3e97ad5f79524b9c259dc38df606ed82c for pr-149218 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fblockbit-hama%2FxQuant" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/blockbit-hama/xQuant [INFO] finished tweaking git repo https://github.com/blockbit-hama/xQuant [INFO] tweaked toml for git repo https://github.com/blockbit-hama/xQuant written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/blockbit-hama/xQuant on toolchain e0e204f3e97ad5f79524b9c259dc38df606ed82c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/blockbit-hama/xQuant 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" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 3 packages to latest compatible versions [INFO] [stderr] Adding base64 v0.22.1 [INFO] [stderr] Adding tokio-tungstenite v0.24.0 [INFO] [stderr] Adding tungstenite v0.24.0 [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded headers-core v0.2.0 [INFO] [stderr] Downloaded tungstenite v0.21.0 [INFO] [stderr] Downloaded downcast v0.11.0 [INFO] [stderr] Downloaded tokio-tungstenite v0.21.0 [INFO] [stderr] Downloaded nalgebra-macros v0.1.0 [INFO] [stderr] Downloaded hermit-abi v0.5.1 [INFO] [stderr] Downloaded fragile v2.0.1 [INFO] [stderr] Downloaded axum-macros v0.4.2 [INFO] [stderr] Downloaded rstest_macros v0.18.2 [INFO] [stderr] Downloaded config v0.13.4 [INFO] [stderr] Downloaded wide v0.7.32 [INFO] [stderr] Downloaded cc v1.2.21 [INFO] [stderr] Downloaded tower-http v0.5.2 [INFO] [stderr] Downloaded statrs v0.16.1 [INFO] [stderr] Downloaded rust_decimal v1.37.1 [INFO] [stderr] Downloaded warp v0.3.7 [INFO] [stderr] Downloaded headers v0.3.9 [INFO] [stderr] Downloaded bytemuck v1.23.0 [INFO] [stderr] Downloaded simba v0.6.0 [INFO] [stderr] Downloaded zerocopy v0.8.25 [INFO] [stderr] Downloaded ron v0.7.1 [INFO] [stderr] Downloaded openssl v0.10.72 [INFO] [stderr] Downloaded mockall_derive v0.11.4 [INFO] [stderr] Downloaded rstest v0.18.2 [INFO] [stderr] Downloaded zerocopy-derive v0.8.25 [INFO] [stderr] Downloaded nalgebra v0.29.0 [INFO] [stderr] Downloaded predicates v2.1.5 [INFO] [stderr] Downloaded mockall v0.11.4 [INFO] [stderr] Downloaded multer v2.1.0 [INFO] [stderr] Downloaded tokio v1.45.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44 [INFO] running `Command { std: "docker" "start" "-a" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44", kill_on_drop: false }` [INFO] [stdout] 15aa966d89a5d42a05ca9a214b638211350c72989a746ce27cac5a249800ee44 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+e0e204f3e97ad5f79524b9c259dc38df606ed82c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952 [INFO] running `Command { std: "docker" "start" "-a" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling libc v0.2.172 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Compiling cc v1.2.21 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling zerocopy v0.8.25 [INFO] [stderr] Checking litemap v0.7.5 [INFO] [stderr] Compiling icu_locid_transform_data v1.5.1 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Compiling icu_properties_data v1.5.1 [INFO] [stderr] Compiling icu_normalizer_data v1.5.1 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Checking hashbrown v0.15.3 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Checking data-encoding v2.9.0 [INFO] [stderr] Compiling serde_json v1.0.140 [INFO] [stderr] Checking http v1.3.1 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Compiling openssl v0.10.72 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking bytemuck v1.23.0 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Checking indexmap v2.9.0 [INFO] [stderr] Compiling matrixmultiply v0.3.9 [INFO] [stderr] Compiling unicase v2.8.1 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Compiling rustversion v1.0.20 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking safe_arch v0.7.4 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling multer v2.1.0 [INFO] [stderr] Checking rawpointer v0.2.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking dlv-list v0.3.0 [INFO] [stderr] Compiling getrandom v0.3.2 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking generic-array v0.14.7 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking http-body v0.4.6 [INFO] [stderr] Checking headers-core v0.2.0 [INFO] [stderr] Checking wide v0.7.32 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling rust_decimal v1.37.1 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Checking hashbrown v0.12.3 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking yaml-rust v0.4.5 [INFO] [stderr] Checking block-buffer v0.10.4 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Compiling rstest_macros v0.18.2 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking is-terminal v0.4.16 [INFO] [stderr] Checking ordered-multimap v0.4.3 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling openssl-sys v0.9.108 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking csv-core v0.1.12 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking predicates v2.1.5 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking headers v0.3.9 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Checking rust-ini v0.18.0 [INFO] [stderr] Checking downcast v0.11.0 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking fragile v2.0.1 [INFO] [stderr] Checking matchit v0.7.3 [INFO] [stderr] Checking time-core v0.1.4 [INFO] [stderr] Checking ipnet v2.11.0 [INFO] [stderr] Checking iana-time-zone v0.1.63 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking simba v0.6.0 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Compiling relative-path v1.9.3 [INFO] [stderr] Compiling glob v0.3.2 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking futures-timer v3.0.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking rand_distr v0.4.3 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling zerovec-derive v0.10.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling icu_provider_macros v1.5.0 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.7.5 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling pin-project-internal v1.1.10 [INFO] [stderr] Compiling axum-macros v0.4.2 [INFO] [stderr] Checking tokio v1.45.0 [INFO] [stderr] Compiling nalgebra-macros v0.1.0 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tungstenite v0.24.0 [INFO] [stderr] Compiling mockall_derive v0.11.4 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Compiling rust_decimal_macros v1.37.1 [INFO] [stderr] Checking nalgebra v0.29.0 [INFO] [stderr] Checking pin-project v1.1.10 [INFO] [stderr] Checking pest v2.8.0 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.7.5 [INFO] [stderr] Checking zerovec v0.10.4 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Compiling pest_meta v2.8.0 [INFO] [stderr] Checking tinystr v0.7.6 [INFO] [stderr] Checking icu_collections v1.5.0 [INFO] [stderr] Checking icu_locid v1.5.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Compiling pest_generator v2.8.0 [INFO] [stderr] Checking mockall v0.11.4 [INFO] [stderr] Checking icu_provider v1.5.0 [INFO] [stderr] Checking icu_locid_transform v1.5.0 [INFO] [stderr] Checking rstest v0.18.2 [INFO] [stderr] Compiling pest_derive v2.8.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking toml v0.5.11 [INFO] [stderr] Checking serde_path_to_error v0.1.17 [INFO] [stderr] Checking ron v0.7.1 [INFO] [stderr] Checking uuid v1.16.0 [INFO] [stderr] Checking csv v1.3.1 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking icu_properties v1.5.1 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking hyper v1.7.0 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking tokio-tungstenite v0.24.0 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking config v0.13.4 [INFO] [stderr] Checking hyper-util v0.1.16 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking icu_normalizer v1.5.0 [INFO] [stderr] Checking idna_adapter v1.2.0 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking statrs v0.16.1 [INFO] [stderr] Checking tokio-tungstenite v0.21.0 [INFO] [stderr] Checking hyper v0.14.32 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking hyper-rustls v0.24.2 [INFO] [stderr] Checking warp v0.3.7 [INFO] [stderr] Checking reqwest v0.11.27 [INFO] [stderr] Checking xQuant v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig` [INFO] [stdout] --> src/api/handlers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig; [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: `std::sync::Arc` [INFO] [stdout] --> src/backtest/engine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/backtest/engine.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/backtest/engine.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/backtest/engine.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::trade::Trade` [INFO] [stdout] --> src/backtest/engine.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::models::trade::Trade; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/backtest/scenario.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData` [INFO] [stdout] --> src/backtest/scenario.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::market_data::MarketData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HistoricalDataProvider` [INFO] [stdout] --> src/backtest/scenario.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/backtest/performance.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:14:55 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Order` [INFO] [stdout] --> src/core/execution_analyzer.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/core/strategy_manager.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/exchange/mocks.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/exchange/mocks.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DateTime` [INFO] [stdout] --> src/exchange/mocks.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/exchange/traits.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderType` [INFO] [stdout] --> src/exchange/traits.rs:7:57 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/market_data/stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Mutex` and `RwLock` [INFO] [stdout] --> src/market_data/stream.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/websocket.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/market_data/websocket.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/fix.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/order_core/manager.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `OrderSide` and `OrderType` [INFO] [stdout] --> src/order_core/manager.rs:8:57 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType, OrderSide}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/order_core/repository.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/order_core/repository.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/order_core/validator.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType` [INFO] [stdout] --> src/strategies/combined.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::signals::signal_types::SignalType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig` [INFO] [stdout] --> src/api/handlers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig; [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 imports: `Arc` and `RwLock` [INFO] [stdout] --> src/strategies/technical.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/strategies/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/utils/logging.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json` [INFO] [stdout] --> src/trading_bots/bot_config.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use serde_json::{Value, json}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/trading_bots/base_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre... [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:13:36 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::TradingError` [INFO] [stdout] --> src/prediction_client.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::error::TradingError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/signals/position_sizing.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/backtest/engine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/backtest/engine.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/backtest/engine.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/backtest/engine.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::trade::Trade` [INFO] [stdout] --> src/backtest/engine.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::models::trade::Trade; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/backtest/scenario.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData` [INFO] [stdout] --> src/backtest/scenario.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::market_data::MarketData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HistoricalDataProvider` [INFO] [stdout] --> src/backtest/scenario.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/backtest/performance.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:14:55 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Order` [INFO] [stdout] --> src/core/execution_analyzer.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/core/strategy_manager.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/exchange/mocks.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/exchange/mocks.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DateTime` [INFO] [stdout] --> src/exchange/mocks.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/exchange/traits.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderType` [INFO] [stdout] --> src/exchange/traits.rs:7:57 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/market_data/stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Mutex` and `RwLock` [INFO] [stdout] --> src/market_data/stream.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/websocket.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/market_data/websocket.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/fix.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/order_core/manager.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/order_core/repository.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/order_core/repository.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/order_core/validator.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType` [INFO] [stdout] --> src/strategies/combined.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::signals::signal_types::SignalType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/strategies/technical.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/strategies/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/utils/logging.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Duration` [INFO] [stdout] --> src/utils/mod.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | use chrono::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json` [INFO] [stdout] --> src/trading_bots/bot_config.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use serde_json::{Value, json}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/trading_bots/base_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre... [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:13:36 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::TradingError` [INFO] [stdout] --> src/prediction_client.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::error::TradingError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/signals/position_sizing.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/handlers.rs:461:11 [INFO] [stdout] | [INFO] [stdout] 461 | let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type)) [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/handlers.rs:461:11 [INFO] [stdout] | [INFO] [stdout] 461 | let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type)) [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | let mut cancelled_order = original_order.clone(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | let mut repo = self.repository.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(mut order) = repo.find_by_id(order_id).await? { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | let mut cancelled_order = original_order.clone(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | let mut repo = self.repository.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(mut order) = repo.find_by_id(order_id).await? { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/backtest/performance.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/backtest/performance.rs:111:51 [INFO] [stdout] | [INFO] [stdout] 111 | .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/backtest/performance.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/backtest/performance.rs:111:51 [INFO] [stdout] | [INFO] [stdout] 111 | .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/utils/mod.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/utils/mod.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange` [INFO] [stdout] --> src/backtest/engine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::exchange::traits::Exchange; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange` [INFO] [stdout] --> src/backtest/engine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::exchange::traits::Exchange; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/api/handlers.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 365 | if let Err(e) = indicator.update(candle.close, Some(candle.volume)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/api/handlers.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 365 | if let Err(e) = indicator.update(candle.close, Some(candle.volume)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:553:3 [INFO] [stdout] | [INFO] [stdout] 553 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategy_manager` [INFO] [stdout] --> src/api/handlers.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | strategy_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:553:3 [INFO] [stdout] | [INFO] [stdout] 553 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategy_manager` [INFO] [stdout] --> src/api/handlers.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | strategy_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config_filter` [INFO] [stdout] --> src/api/routes.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | let config_filter = warp::any().map(move || config_clone.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config_filter` [INFO] [stdout] --> src/api/routes.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | let config_filter = warp::any().map(move || config_clone.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_volume` is assigned to, but never used [INFO] [stdout] --> src/core/execution_analyzer.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | let mut total_volume = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_volume` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_volume` is never read [INFO] [stdout] --> src/core/execution_analyzer.rs:144:7 [INFO] [stdout] | [INFO] [stdout] 144 | total_volume += trade.quantity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_volume` is assigned to, but never used [INFO] [stdout] --> src/core/execution_analyzer.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | let mut total_volume = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_volume` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_volume` is never read [INFO] [stdout] --> src/core/execution_analyzer.rs:144:7 [INFO] [stdout] | [INFO] [stdout] 144 | total_volume += trade.quantity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/market_data/stream.rs:69:55 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `receiver` [INFO] [stdout] --> src/market_data/stream.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let receiver = self.get_receiver(symbol)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_id` [INFO] [stdout] --> src/market_data/websocket.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(sub_id) = self.subscriptions.remove(symbol) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/market_data/stream.rs:69:55 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `receiver` [INFO] [stdout] --> src/market_data/stream.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let receiver = self.get_receiver(symbol)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `host` [INFO] [stdout] --> src/market_data/fix.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | let host = self.host.clone(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_host` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> src/market_data/fix.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let port = self.port; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_id` [INFO] [stdout] --> src/market_data/websocket.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(sub_id) = self.subscriptions.remove(symbol) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `host` [INFO] [stdout] --> src/market_data/fix.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | let host = self.host.clone(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_host` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> src/market_data/fix.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let port = self.port; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `repo` [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `repo` [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/order_core/repository.rs:101:22 [INFO] [stdout] | [INFO] [stdout] 101 | .filter(|o| statuses.contains(&OrderStatus::New)) // 이 부분은 실제 주문의 상태를 확인해야 함 [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/order_core/repository.rs:101:22 [INFO] [stdout] | [INFO] [stdout] 101 | .filter(|o| statuses.contains(&OrderStatus::New)) // 이 부분은 실제 주문의 상태를 확인해야 함 [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_data` [INFO] [stdout] --> src/strategies/trailing_stop.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | if let Some(market_data) = &self.current_market_data { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_data` [INFO] [stdout] --> src/strategies/trailing_stop.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | if let Some(market_data) = &self.current_market_data { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_rejection` is never used [INFO] [stdout] --> src/api/routes.rs:68:14 [INFO] [stdout] | [INFO] [stdout] 68 | async fn handle_rejection(err: Rejection) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read [INFO] [stdout] --> src/backtest/engine.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct BacktestEngine { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | exchange: MockExchange, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 26 | initial_balance: HashMap, [INFO] [stdout] 27 | fee_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 28 | slippage: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `target_percentage` is never read [INFO] [stdout] --> src/core/vwap_splitter.rs:27:3 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct VwapSplitter { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | target_percentage: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_drawdown_percent` is never read [INFO] [stdout] --> src/core/risk_manager.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RiskManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | max_drawdown_percent: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/exchange/mocks.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct MockExchange { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 19 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_mid_price` is never used [INFO] [stdout] --> src/exchange/binance_futures.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl BinanceFuturesExchange { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 123 | async fn get_mid_price(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reconnect_interval` is never read [INFO] [stdout] --> src/market_data/websocket.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct WebSocketProvider { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | reconnect_interval: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `sender_comp_id` and `target_comp_id` are never read [INFO] [stdout] --> src/market_data/fix.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FixProvider { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | sender_comp_id: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 18 | target_comp_id: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/vwap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/twap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/strategies/combined.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CombinedStrategy { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 10 | name: String, [INFO] [stdout] 11 | symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_rejection` is never used [INFO] [stdout] --> src/api/routes.rs:68:14 [INFO] [stdout] | [INFO] [stdout] 68 | async fn handle_rejection(err: Rejection) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read [INFO] [stdout] --> src/backtest/engine.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct BacktestEngine { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | exchange: MockExchange, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 26 | initial_balance: HashMap, [INFO] [stdout] 27 | fee_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 28 | slippage: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `target_percentage` is never read [INFO] [stdout] --> src/core/vwap_splitter.rs:27:3 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct VwapSplitter { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | target_percentage: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_drawdown_percent` is never read [INFO] [stdout] --> src/core/risk_manager.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RiskManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | max_drawdown_percent: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/exchange/mocks.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct MockExchange { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 19 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_mid_price` is never used [INFO] [stdout] --> src/exchange/binance_futures.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl BinanceFuturesExchange { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 123 | async fn get_mid_price(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reconnect_interval` is never read [INFO] [stdout] --> src/market_data/websocket.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct WebSocketProvider { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | reconnect_interval: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `sender_comp_id` and `target_comp_id` are never read [INFO] [stdout] --> src/market_data/fix.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FixProvider { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | sender_comp_id: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 18 | target_comp_id: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/vwap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/twap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/strategies/combined.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CombinedStrategy { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 10 | name: String, [INFO] [stdout] 11 | symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate `xQuant` should have a snake case name [INFO] [stdout] | [INFO] [stdout] = help: convert the identifier to snake case: `x_quant` [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::core::VwapSplitter` [INFO] [stdout] --> tests/vwap_tests.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::VwapSplitter; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ no `VwapSplitter` in `core` [INFO] [stdout] | [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::VwapSplitter; [INFO] [stdout] 8 + use xQuant::core::vwap_splitter; [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct instead [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::vwap_splitter::VwapSplitter; [INFO] [stdout] | +++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::core::TrailingStopManager` [INFO] [stdout] --> tests/trailing_stop_tests.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::TrailingStopManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `TrailingStopManager` in `core` [INFO] [stdout] | [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::TrailingStopManager; [INFO] [stdout] 8 + use xQuant::core::trailing_stop_manager; [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct instead [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::trailing_stop_manager::TrailingStopManager; [INFO] [stdout] | +++++++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock` [INFO] [stdout] --> tests/vwap_tests.rs:9:23 [INFO] [stdout] | [INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange; [INFO] [stdout] | ^^^^ could not find `mock` in `exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock` [INFO] [stdout] --> tests/trailing_stop_tests.rs:9:23 [INFO] [stdout] | [INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange; [INFO] [stdout] | ^^^^ could not find `mock` in `exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved imports `xQuant::core::VwapSplitter`, `xQuant::core::IcebergManager`, `xQuant::core::TrailingStopManager` [INFO] [stdout] --> tests/integration_tests.rs:8:20 [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ no `TrailingStopManager` in `core` [INFO] [stdout] | | | [INFO] [stdout] | | no `IcebergManager` in `core` [INFO] [stdout] | no `VwapSplitter` in `core` [INFO] [stdout] | [INFO] [stdout] = help: consider importing this struct instead: [INFO] [stdout] xQuant::core::vwap_splitter::VwapSplitter [INFO] [stdout] = help: consider importing this struct instead: [INFO] [stdout] xQuant::core::iceberg_manager::IcebergManager [INFO] [stdout] = help: consider importing this struct instead: [INFO] [stdout] xQuant::core::trailing_stop_manager::TrailingStopManager [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager}; [INFO] [stdout] 8 + use xQuant::core::{vwap_splitter, IcebergManager, TrailingStopManager}; [INFO] [stdout] | [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager}; [INFO] [stdout] 8 + use xQuant::core::{VwapSplitter, iceberg_manager, TrailingStopManager}; [INFO] [stdout] | [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::{VwapSplitter, IcebergManager, TrailingStopManager}; [INFO] [stdout] 8 + use xQuant::core::{VwapSplitter, IcebergManager, trailing_stop_manager}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock` [INFO] [stdout] --> tests/integration_tests.rs:9:23 [INFO] [stdout] | [INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange; [INFO] [stdout] | ^^^^ could not find `mock` in `exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderType` [INFO] [stdout] --> tests/integration_tests.rs:10:40 [INFO] [stdout] | [INFO] [stdout] 10 | use xQuant::models::order::{OrderSide, OrderType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/integration_tests.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | let result = vwap.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 30 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 29 | let result: /* Type */ = vwap.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/trailing_stop_tests.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 31 | let result = trailing_stop.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 31 | let result: /* Type */ = trailing_stop.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/trailing_stop_tests.rs:35:7 [INFO] [stdout] | [INFO] [stdout] 35 | let update_result = trailing_stop.update_delta(3.0).await; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 36 | assert!(update_result.is_ok()); [INFO] [stdout] | ------------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `update_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 35 | let update_result: /* Type */ = trailing_stop.update_delta(3.0).await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::core::IcebergManager` [INFO] [stdout] --> tests/iceberg_tests.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::IcebergManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `IcebergManager` in `core` [INFO] [stdout] | [INFO] [stdout] help: a similar name exists in the module [INFO] [stdout] | [INFO] [stdout] 8 - use xQuant::core::IcebergManager; [INFO] [stdout] 8 + use xQuant::core::iceberg_manager; [INFO] [stdout] | [INFO] [stdout] help: consider importing this struct instead [INFO] [stdout] | [INFO] [stdout] 8 | use xQuant::core::iceberg_manager::IcebergManager; [INFO] [stdout] | +++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `xQuant::exchange::mock` [INFO] [stdout] --> tests/iceberg_tests.rs:9:23 [INFO] [stdout] | [INFO] [stdout] 9 | use xQuant::exchange::mock::MockExchange; [INFO] [stdout] | ^^^^ could not find `mock` in `exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/vwap_tests.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 31 | let result = vwap.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 31 | let result: /* Type */ = vwap.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/trailing_stop_tests.rs:46:7 [INFO] [stdout] | [INFO] [stdout] 46 | let stop_result = trailing_stop.stop().await; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 47 | assert!(stop_result.is_ok()); [INFO] [stdout] | ----------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `stop_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 46 | let stop_result: /* Type */ = trailing_stop.stop().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/integration_tests.rs:56:7 [INFO] [stdout] | [INFO] [stdout] 56 | let result = iceberg.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 57 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 56 | let result: /* Type */ = iceberg.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/iceberg_tests.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 31 | let result = iceberg.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 32 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 31 | let result: /* Type */ = iceberg.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/iceberg_tests.rs:38:7 [INFO] [stdout] | [INFO] [stdout] 38 | let update_result = iceberg.update_price(51000.0).await; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 39 | assert!(update_result.is_ok()); [INFO] [stdout] | ------------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `update_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 38 | let update_result: /* Type */ = iceberg.update_price(51000.0).await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/integration_tests.rs:63:7 [INFO] [stdout] | [INFO] [stdout] 63 | let stop_result = iceberg.stop().await; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 64 | assert!(stop_result.is_ok()); [INFO] [stdout] | ----------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `stop_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 63 | let stop_result: /* Type */ = iceberg.stop().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/iceberg_tests.rs:42:7 [INFO] [stdout] | [INFO] [stdout] 42 | let stop_result = iceberg.stop().await; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 43 | assert!(stop_result.is_ok()); [INFO] [stdout] | ----------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `stop_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 42 | let stop_result: /* Type */ = iceberg.stop().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/integration_tests.rs:84:7 [INFO] [stdout] | [INFO] [stdout] 84 | let result = trailing_stop.start().await; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 85 | assert!(result.is_ok()); [INFO] [stdout] | ------ type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `result` an explicit type [INFO] [stdout] | [INFO] [stdout] 84 | let result: /* Type */ = trailing_stop.start().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/integration_tests.rs:91:7 [INFO] [stdout] | [INFO] [stdout] 91 | let stop_result = trailing_stop.stop().await; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 92 | assert!(stop_result.is_ok()); [INFO] [stdout] | ----------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `stop_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 91 | let stop_result: /* Type */ = trailing_stop.stop().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0282]: type annotations needed [INFO] [stdout] --> tests/vwap_tests.rs:41:7 [INFO] [stdout] | [INFO] [stdout] 41 | let stop_result = vwap.stop().await; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 42 | assert!(stop_result.is_ok()); [INFO] [stdout] | ----------- type must be known at this point [INFO] [stdout] | [INFO] [stdout] help: consider giving `stop_result` an explicit type [INFO] [stdout] | [INFO] [stdout] 41 | let stop_result: /* Type */ = vwap.stop().await; [INFO] [stdout] | ++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `xQuant::backtest::data_provider::CsvDataProvider` [INFO] [stdout] --> tests/backtest_tests.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use xQuant::backtest::data_provider::CsvDataProvider; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0282, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] [INFO] [stdout] warning: unused import: `BacktestScenario` [INFO] [stdout] --> tests/backtest_tests.rs:13:34 [INFO] [stdout] | [INFO] [stdout] 13 | use xQuant::backtest::scenario::{BacktestScenario, BacktestScenarioBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0282, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0282, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] [INFO] [stderr] error: could not compile `xQuant` (test "trailing_stop_tests") due to 5 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `xQuant` (test "integration_tests") due to 7 previous errors; 1 warning emitted [INFO] [stderr] error: could not compile `xQuant` (test "iceberg_tests") due to 5 previous errors [INFO] [stdout] Some errors have detailed explanations: E0282, E0432. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0282`. [INFO] [stdout] [INFO] [stderr] error: could not compile `xQuant` (test "vwap_tests") due to 4 previous errors [INFO] [stdout] error[E0599]: no function or associated item named `from_csv` found for struct `BacktestEngine` in the current scope [INFO] [stdout] --> tests/backtest_tests.rs:24:39 [INFO] [stdout] | [INFO] [stdout] 24 | let engine_result = BacktestEngine::from_csv( [INFO] [stdout] | ^^^^^^^^ function or associated item not found in `BacktestEngine` [INFO] [stdout] | [INFO] [stdout] note: if you're trying to build a new `BacktestEngine`, consider using `BacktestEngine::new` which returns `BacktestEngine` [INFO] [stdout] --> /opt/rustwide/workdir/src/backtest/engine.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | / pub fn new( [INFO] [stdout] 35 | | name: String, [INFO] [stdout] 36 | | description: String, [INFO] [stdout] 37 | | start_time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 41 | | slippage: f64, [INFO] [stdout] 42 | | ) -> Self { [INFO] [stdout] | |_____________^ [INFO] [stdout] help: there is an associated function `from` with a similar name [INFO] [stdout] --> /rustc/e0e204f3e97ad5f79524b9c259dc38df606ed82c/library/core/src/convert/mod.rs:592:4 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0599`. [INFO] [stdout] [INFO] [stderr] error: could not compile `xQuant` (test "backtest_tests") due to 1 previous error; 2 warnings emitted [INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig` [INFO] [stdout] --> src/api/handlers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig; [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: `std::sync::Arc` [INFO] [stdout] --> src/backtest/engine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/backtest/engine.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/backtest/engine.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/backtest/engine.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::trade::Trade` [INFO] [stdout] --> src/backtest/engine.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::models::trade::Trade; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/backtest/scenario.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData` [INFO] [stdout] --> src/backtest/scenario.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::market_data::MarketData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HistoricalDataProvider` [INFO] [stdout] --> src/backtest/scenario.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/backtest/performance.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `engine::BacktestEngine` [INFO] [stdout] --> src/backtest/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use engine::BacktestEngine; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result::BacktestResult` [INFO] [stdout] --> src/backtest/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use result::BacktestResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BacktestScenarioBuilder` and `BacktestScenario` [INFO] [stdout] --> src/backtest/mod.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | pub use scenario::{BacktestScenario, BacktestScenarioBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `performance::PerformanceMetrics` [INFO] [stdout] --> src/backtest/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use performance::PerformanceMetrics; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `data_provider::HistoricalDataProvider` [INFO] [stdout] --> src/backtest/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use data_provider::HistoricalDataProvider; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::TradingError` [INFO] [stdout] --> src/prediction_client.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::error::TradingError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:14:55 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Order` [INFO] [stdout] --> src/core/execution_analyzer.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/core/strategy_manager.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::order_core::manager::OrderManager` [INFO] [stdout] --> src/http/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::order_core::manager::OrderManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::risk_manager::RiskManager` [INFO] [stdout] --> src/http/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::core::risk_manager::RiskManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/exchange/mocks.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/exchange/mocks.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DateTime` [INFO] [stdout] --> src/exchange/mocks.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/exchange/traits.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderType` [INFO] [stdout] --> src/exchange/traits.rs:7:57 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/market_data/stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Mutex` and `RwLock` [INFO] [stdout] --> src/market_data/stream.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/websocket.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/market_data/websocket.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/fix.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/order_core/manager.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/order_core/repository.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/order_core/repository.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/order_core/validator.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType` [INFO] [stdout] --> src/strategies/combined.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::signals::signal_types::SignalType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/strategies/technical.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/strategies/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `vwap::VwapStrategy` [INFO] [stdout] --> src/strategies/mod.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | pub use vwap::VwapStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `iceberg::IcebergStrategy` [INFO] [stdout] --> src/strategies/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub use iceberg::IcebergStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `trailing_stop::TrailingStopStrategy` [INFO] [stdout] --> src/strategies/mod.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub use trailing_stop::TrailingStopStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `twap::TwapStrategy` [INFO] [stdout] --> src/strategies/mod.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | pub use twap::TwapStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `combined::CombinedStrategy` [INFO] [stdout] --> src/strategies/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub use combined::CombinedStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/utils/logging.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Duration` [INFO] [stdout] --> src/utils/mod.rs:58:7 [INFO] [stdout] | [INFO] [stdout] 58 | use chrono::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `moving_averages::*` [INFO] [stdout] --> src/indicators/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use moving_averages::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `oscillators::*` [INFO] [stdout] --> src/indicators/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use oscillators::*; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `trend::*` [INFO] [stdout] --> src/indicators/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use trend::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `volume::*` [INFO] [stdout] --> src/indicators/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use volume::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `utils::*` [INFO] [stdout] --> src/indicators/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use utils::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/signals/position_sizing.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `signal_types::*` [INFO] [stdout] --> src/signals/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use signal_types::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `signal_analyzer::*` [INFO] [stdout] --> src/signals/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use signal_analyzer::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `position_sizing::*` [INFO] [stdout] --> src/signals/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use position_sizing::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json` [INFO] [stdout] --> src/trading_bots/bot_config.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use serde_json::{Value, json}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/trading_bots/base_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre... [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:13:36 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ma_crossover_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use ma_crossover_bot::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rsi_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use rsi_bot::*; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `macd_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub use macd_bot::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `multi_indicator_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use multi_indicator_bot::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `Utc` [INFO] [stdout] --> src/main.rs:30:14 [INFO] [stdout] | [INFO] [stdout] 30 | use chrono::{Utc, Duration}; [INFO] [stdout] | ^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::trading_bots::bot_config::TradingBotConfig` [INFO] [stdout] --> src/api/handlers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::trading_bots::bot_config::TradingBotConfig; [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: `std::sync::Arc` [INFO] [stdout] --> src/backtest/engine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/backtest/engine.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | use chrono::{DateTime, Duration, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/backtest/engine.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/backtest/engine.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderStatus}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::trade::Trade` [INFO] [stdout] --> src/backtest/engine.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::models::trade::Trade; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/backtest/scenario.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::models::market_data::MarketData` [INFO] [stdout] --> src/backtest/scenario.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::market_data::MarketData; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HistoricalDataProvider` [INFO] [stdout] --> src/backtest/scenario.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use super::data_provider::{HistoricalDataProvider, CsvDataProvider}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `chrono::Utc` [INFO] [stdout] --> src/backtest/performance.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use chrono::Utc; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `engine::BacktestEngine` [INFO] [stdout] --> src/backtest/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use engine::BacktestEngine; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result::BacktestResult` [INFO] [stdout] --> src/backtest/mod.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use result::BacktestResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BacktestScenarioBuilder` and `BacktestScenario` [INFO] [stdout] --> src/backtest/mod.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | pub use scenario::{BacktestScenario, BacktestScenarioBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `performance::PerformanceMetrics` [INFO] [stdout] --> src/backtest/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use performance::PerformanceMetrics; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `data_provider::HistoricalDataProvider` [INFO] [stdout] --> src/backtest/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use data_provider::HistoricalDataProvider; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::TradingError` [INFO] [stdout] --> src/prediction_client.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::error::TradingError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::sync::{RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderStatus` [INFO] [stdout] --> src/core/trailing_stop_manager.rs:14:55 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::models::order::{Order, OrderId, OrderSide, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Order` [INFO] [stdout] --> src/core/execution_analyzer.rs:11:28 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::models::order::{Order, OrderSide}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/core/strategy_manager.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::order_core::manager::OrderManager` [INFO] [stdout] --> src/http/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::order_core::manager::OrderManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::core::risk_manager::RiskManager` [INFO] [stdout] --> src/http/mod.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::core::risk_manager::RiskManager; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/exchange/mocks.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/exchange/mocks.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DateTime` [INFO] [stdout] --> src/exchange/mocks.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | use chrono::{DateTime, Utc}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `uuid::Uuid` [INFO] [stdout] --> src/exchange/traits.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use uuid::Uuid; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `OrderType` [INFO] [stdout] --> src/exchange/traits.rs:7:57 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/market_data/stream.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Mutex` and `RwLock` [INFO] [stdout] --> src/market_data/stream.rs:3:30 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/websocket.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/market_data/websocket.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::time::{interval, Duration}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/market_data/fix.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mutex` [INFO] [stdout] --> src/order_core/manager.rs:3:38 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::{broadcast, RwLock, Mutex}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `OrderSide` and `OrderType` [INFO] [stdout] --> src/order_core/manager.rs:8:57 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::models::order::{Order, OrderId, OrderStatus, OrderType, OrderSide}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/order_core/repository.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::RwLock` [INFO] [stdout] --> src/order_core/repository.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use tokio::sync::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/order_core/validator.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::signals::signal_types::SignalType` [INFO] [stdout] --> src/strategies/combined.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::signals::signal_types::SignalType; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `RwLock` [INFO] [stdout] --> src/strategies/technical.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::{Arc, RwLock}; [INFO] [stdout] | ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `async_trait::async_trait` [INFO] [stdout] --> src/strategies/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use async_trait::async_trait; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `vwap::VwapStrategy` [INFO] [stdout] --> src/strategies/mod.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | pub use vwap::VwapStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `iceberg::IcebergStrategy` [INFO] [stdout] --> src/strategies/mod.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub use iceberg::IcebergStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `trailing_stop::TrailingStopStrategy` [INFO] [stdout] --> src/strategies/mod.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub use trailing_stop::TrailingStopStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `twap::TwapStrategy` [INFO] [stdout] --> src/strategies/mod.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | pub use twap::TwapStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `combined::CombinedStrategy` [INFO] [stdout] --> src/strategies/mod.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | pub use combined::CombinedStrategy; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/utils/logging.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `moving_averages::*` [INFO] [stdout] --> src/indicators/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use moving_averages::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `oscillators::*` [INFO] [stdout] --> src/indicators/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use oscillators::*; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `trend::*` [INFO] [stdout] --> src/indicators/mod.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub use trend::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `volume::*` [INFO] [stdout] --> src/indicators/mod.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub use volume::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `utils::*` [INFO] [stdout] --> src/indicators/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use utils::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/signals/position_sizing.rs:9:27 [INFO] [stdout] | [INFO] [stdout] 9 | use super::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `signal_types::*` [INFO] [stdout] --> src/signals/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use signal_types::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `signal_analyzer::*` [INFO] [stdout] --> src/signals/mod.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use signal_analyzer::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `position_sizing::*` [INFO] [stdout] --> src/signals/mod.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use position_sizing::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `json` [INFO] [stdout] --> src/trading_bots/bot_config.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use serde_json::{Value, json}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/trading_bots/base_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, oscillators::RelativeStrengthIndex}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:11:36 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::indicators::{Indicator, IndicatorResult, trend::MACD}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/macd_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `IndicatorResult` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:12:36 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::indicators::{Indicator, IndicatorResult, moving_averages::MovingAverageCrossover, oscillators::RelativeStrengthIndex, tre... [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SignalType` [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:13:36 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::signals::signal_types::{SignalType, SignalWithMetadata}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ma_crossover_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | pub use ma_crossover_bot::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rsi_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub use rsi_bot::*; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `macd_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub use macd_bot::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `multi_indicator_bot::*` [INFO] [stdout] --> src/trading_bots/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use multi_indicator_bot::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `Utc` [INFO] [stdout] --> src/main.rs:30:14 [INFO] [stdout] | [INFO] [stdout] 30 | use chrono::{Utc, Duration}; [INFO] [stdout] | ^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/handlers.rs:461:11 [INFO] [stdout] | [INFO] [stdout] 461 | let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type)) [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/api/handlers.rs:461:11 [INFO] [stdout] | [INFO] [stdout] 461 | let mut builder = BacktestScenarioBuilder::new(format!("{} 백테스트", req.strategy_type)) [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/http/mod.rs:140:7 [INFO] [stdout] | [INFO] [stdout] 140 | let mut s = TrailingStopStrategy::new(req.symbol.clone(), side, req.qty, req.callback, req.activation); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/http/mod.rs:140:7 [INFO] [stdout] | [INFO] [stdout] 140 | let mut s = TrailingStopStrategy::new(req.symbol.clone(), side, req.qty, req.callback, req.activation); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | let mut cancelled_order = original_order.clone(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | let mut repo = self.repository.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(mut order) = repo.find_by_id(order_id).await? { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | let mut cancelled_order = original_order.clone(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:199:17 [INFO] [stdout] | [INFO] [stdout] 199 | let mut repo = self.repository.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:200:25 [INFO] [stdout] | [INFO] [stdout] 200 | if let Some(mut order) = repo.find_by_id(order_id).await? { [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/backtest/performance.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/backtest/performance.rs:111:51 [INFO] [stdout] | [INFO] [stdout] 111 | .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_millis`: use `DateTime::from_timestamp_millis` instead [INFO] [stdout] --> src/backtest/performance.rs:110:41 [INFO] [stdout] | [INFO] [stdout] 110 | let date = chrono::NaiveDateTime::from_timestamp_millis(trade.timestamp) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/backtest/performance.rs:111:51 [INFO] [stdout] | [INFO] [stdout] 111 | .unwrap_or_else(|| chrono::NaiveDateTime::from_timestamp_opt(0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/utils/mod.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated associated function `chrono::NaiveDateTime::from_timestamp_opt`: use `DateTime::from_timestamp` instead [INFO] [stdout] --> src/utils/mod.rs:13:30 [INFO] [stdout] | [INFO] [stdout] 13 | let naive = NaiveDateTime::from_timestamp_opt(secs, nsecs).unwrap_or_default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange` [INFO] [stdout] --> src/backtest/engine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::exchange::traits::Exchange; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/api/handlers.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 365 | if let Err(e) = indicator.update(candle.close, Some(candle.volume)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::exchange::traits::Exchange` [INFO] [stdout] --> src/backtest/engine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::exchange::traits::Exchange; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:41:3 [INFO] [stdout] | [INFO] [stdout] 41 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:553:3 [INFO] [stdout] | [INFO] [stdout] 553 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategy_manager` [INFO] [stdout] --> src/api/handlers.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | strategy_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/api/handlers.rs:365:16 [INFO] [stdout] | [INFO] [stdout] 365 | if let Err(e) = indicator.update(candle.close, Some(candle.volume)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/api/handlers.rs:553:3 [INFO] [stdout] | [INFO] [stdout] 553 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `strategy_manager` [INFO] [stdout] --> src/api/handlers.rs:554:3 [INFO] [stdout] | [INFO] [stdout] 554 | strategy_manager: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_strategy_manager` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config_filter` [INFO] [stdout] --> src/api/routes.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | let config_filter = warp::any().map(move || config_clone.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `config_filter` [INFO] [stdout] --> src/api/routes.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | let config_filter = warp::any().map(move || config_clone.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_filter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `auth` [INFO] [stdout] --> src/api/routes.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | let auth = warp::header::optional::("authorization").and_then(move |auth_header: Option| { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_auth` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_volume` is assigned to, but never used [INFO] [stdout] --> src/core/execution_analyzer.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | let mut total_volume = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_volume` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_volume` is never read [INFO] [stdout] --> src/core/execution_analyzer.rs:144:7 [INFO] [stdout] | [INFO] [stdout] 144 | total_volume += trade.quantity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `total_volume` is assigned to, but never used [INFO] [stdout] --> src/core/execution_analyzer.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | let mut total_volume = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_total_volume` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `total_volume` is never read [INFO] [stdout] --> src/core/execution_analyzer.rs:144:7 [INFO] [stdout] | [INFO] [stdout] 144 | total_volume += trade.quantity; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/market_data/stream.rs:69:55 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `receiver` [INFO] [stdout] --> src/market_data/stream.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let receiver = self.get_receiver(symbol)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_id` [INFO] [stdout] --> src/market_data/websocket.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(sub_id) = self.subscriptions.remove(symbol) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `host` [INFO] [stdout] --> src/market_data/fix.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | let host = self.host.clone(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_host` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> src/market_data/fix.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let port = self.port; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `interval` [INFO] [stdout] --> src/market_data/stream.rs:69:55 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_interval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `receiver` [INFO] [stdout] --> src/market_data/stream.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let receiver = self.get_receiver(symbol)?; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_receiver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sub_id` [INFO] [stdout] --> src/market_data/websocket.rs:132:21 [INFO] [stdout] | [INFO] [stdout] 132 | if let Some(sub_id) = self.subscriptions.remove(symbol) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sub_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `host` [INFO] [stdout] --> src/market_data/fix.rs:56:13 [INFO] [stdout] | [INFO] [stdout] 56 | let host = self.host.clone(); [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_host` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `port` [INFO] [stdout] --> src/market_data/fix.rs:57:13 [INFO] [stdout] | [INFO] [stdout] 57 | let port = self.port; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_port` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `repo` [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/order_core/repository.rs:101:22 [INFO] [stdout] | [INFO] [stdout] 101 | .filter(|o| statuses.contains(&OrderStatus::New)) // 이 부분은 실제 주문의 상태를 확인해야 함 [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_data` [INFO] [stdout] --> src/strategies/trailing_stop.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | if let Some(market_data) = &self.current_market_data { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `repo` [INFO] [stdout] --> src/order_core/manager.rs:256:29 [INFO] [stdout] | [INFO] [stdout] 256 | let mut repo = repository_clone.write().await; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_repo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `o` [INFO] [stdout] --> src/order_core/repository.rs:101:22 [INFO] [stdout] | [INFO] [stdout] 101 | .filter(|o| statuses.contains(&OrderStatus::New)) // 이 부분은 실제 주문의 상태를 확인해야 함 [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_o` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/main.rs:190:3 [INFO] [stdout] | [INFO] [stdout] 190 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_stream` [INFO] [stdout] --> src/main.rs:191:3 [INFO] [stdout] | [INFO] [stdout] 191 | market_stream: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_data` [INFO] [stdout] --> src/strategies/trailing_stop.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | if let Some(market_data) = &self.current_market_data { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_data` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `list_strategies` is never used [INFO] [stdout] --> src/api/handlers.rs:20:14 [INFO] [stdout] | [INFO] [stdout] 20 | pub async fn list_strategies( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateTAStrategyRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct CreateTAStrategyRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_ta_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:38:14 [INFO] [stdout] | [INFO] [stdout] 38 | pub async fn create_ta_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_strategy_status` is never used [INFO] [stdout] --> src/api/handlers.rs:169:14 [INFO] [stdout] | [INFO] [stdout] 169 | pub async fn get_strategy_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:189:14 [INFO] [stdout] | [INFO] [stdout] 189 | pub async fn delete_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ToggleStrategyRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub struct ToggleStrategyRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `toggle_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:221:14 [INFO] [stdout] | [INFO] [stdout] 221 | pub async fn toggle_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorQuery` is never constructed [INFO] [stdout] --> src/api/handlers.rs:249:12 [INFO] [stdout] | [INFO] [stdout] 249 | pub struct IndicatorQuery { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:262:12 [INFO] [stdout] | [INFO] [stdout] 262 | pub struct IndicatorResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorValue` is never constructed [INFO] [stdout] --> src/api/handlers.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 270 | pub struct IndicatorValue { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SignalInfo` is never constructed [INFO] [stdout] --> src/api/handlers.rs:276:12 [INFO] [stdout] | [INFO] [stdout] 276 | pub struct SignalInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_indicators` is never used [INFO] [stdout] --> src/api/handlers.rs:284:14 [INFO] [stdout] | [INFO] [stdout] 284 | pub async fn calculate_indicators( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestPerformanceRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:403:12 [INFO] [stdout] | [INFO] [stdout] 403 | pub struct BacktestPerformanceRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_backtest_performance` is never used [INFO] [stdout] --> src/api/handlers.rs:412:14 [INFO] [stdout] | [INFO] [stdout] 412 | pub async fn calculate_backtest_performance( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PortfolioOptimizationRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:524:12 [INFO] [stdout] | [INFO] [stdout] 524 | pub struct PortfolioOptimizationRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_portfolio` is never used [INFO] [stdout] --> src/api/handlers.rs:533:14 [INFO] [stdout] | [INFO] [stdout] 533 | pub async fn optimize_portfolio( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `analyze_trade_logs` is never used [INFO] [stdout] --> src/api/handlers.rs:552:14 [INFO] [stdout] | [INFO] [stdout] 552 | pub async fn analyze_trade_logs( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateOrderRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:577:12 [INFO] [stdout] | [INFO] [stdout] 577 | pub struct CreateOrderRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateOrderResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:586:12 [INFO] [stdout] | [INFO] [stdout] 586 | pub struct CreateOrderResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_order` is never used [INFO] [stdout] --> src/api/handlers.rs:590:14 [INFO] [stdout] | [INFO] [stdout] 590 | pub async fn create_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_orders` is never used [INFO] [stdout] --> src/api/handlers.rs:610:14 [INFO] [stdout] | [INFO] [stdout] 610 | pub async fn get_orders( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_order` is never used [INFO] [stdout] --> src/api/handlers.rs:624:14 [INFO] [stdout] | [INFO] [stdout] 624 | pub async fn cancel_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateVwapRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:642:12 [INFO] [stdout] | [INFO] [stdout] 642 | pub struct CreateVwapRequest { pub symbol: String, pub side: OrderSide, pub target_quantity: f64, pub execution_interval_ms: i64, p... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_vwap_order` is never used [INFO] [stdout] --> src/api/handlers.rs:644:14 [INFO] [stdout] | [INFO] [stdout] 644 | pub async fn create_vwap_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_vwap_status` is never used [INFO] [stdout] --> src/api/handlers.rs:666:14 [INFO] [stdout] | [INFO] [stdout] 666 | pub async fn get_vwap_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_vwap_order` is never used [INFO] [stdout] --> src/api/handlers.rs:677:14 [INFO] [stdout] | [INFO] [stdout] 677 | pub async fn cancel_vwap_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateIcebergRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:690:12 [INFO] [stdout] | [INFO] [stdout] 690 | pub struct CreateIcebergRequest { pub symbol: String, pub side: OrderSide, pub total_quantity: f64, pub display_size: f64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_iceberg_order` is never used [INFO] [stdout] --> src/api/handlers.rs:692:14 [INFO] [stdout] | [INFO] [stdout] 692 | pub async fn create_iceberg_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_iceberg_status` is never used [INFO] [stdout] --> src/api/handlers.rs:712:14 [INFO] [stdout] | [INFO] [stdout] 712 | pub async fn get_iceberg_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_iceberg_order` is never used [INFO] [stdout] --> src/api/handlers.rs:723:14 [INFO] [stdout] | [INFO] [stdout] 723 | pub async fn cancel_iceberg_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateTrailingStopRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:736:12 [INFO] [stdout] | [INFO] [stdout] 736 | pub struct CreateTrailingStopRequest { pub symbol: String, pub side: OrderSide, pub quantity: f64, pub trailing_delta: f64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_trailing_stop` is never used [INFO] [stdout] --> src/api/handlers.rs:738:14 [INFO] [stdout] | [INFO] [stdout] 738 | pub async fn create_trailing_stop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trailing_stop_status` is never used [INFO] [stdout] --> src/api/handlers.rs:756:14 [INFO] [stdout] | [INFO] [stdout] 756 | pub async fn get_trailing_stop_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_trailing_stop` is never used [INFO] [stdout] --> src/api/handlers.rs:767:14 [INFO] [stdout] | [INFO] [stdout] 767 | pub async fn cancel_trailing_stop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetPositionModeRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:781:12 [INFO] [stdout] | [INFO] [stdout] 781 | pub struct SetPositionModeRequest { pub hedge: bool } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_position_mode` is never used [INFO] [stdout] --> src/api/handlers.rs:783:14 [INFO] [stdout] | [INFO] [stdout] 783 | pub async fn set_position_mode( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetMarginModeRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:798:12 [INFO] [stdout] | [INFO] [stdout] 798 | pub struct SetMarginModeRequest { pub symbol: String, pub isolated: bool } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_margin_mode` is never used [INFO] [stdout] --> src/api/handlers.rs:800:14 [INFO] [stdout] | [INFO] [stdout] 800 | pub async fn set_margin_mode( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetLeverageRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:815:12 [INFO] [stdout] | [INFO] [stdout] 815 | pub struct SetLeverageRequest { pub symbol: String, pub leverage: u32 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_leverage` is never used [INFO] [stdout] --> src/api/handlers.rs:817:14 [INFO] [stdout] | [INFO] [stdout] 817 | pub async fn set_leverage( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FuturesSettingsRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:832:12 [INFO] [stdout] | [INFO] [stdout] 832 | pub struct FuturesSettingsRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FuturesSettingsResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:839:12 [INFO] [stdout] | [INFO] [stdout] 839 | pub struct FuturesSettingsResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_futures_settings` is never used [INFO] [stdout] --> src/api/handlers.rs:845:14 [INFO] [stdout] | [INFO] [stdout] 845 | pub async fn apply_futures_settings( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MarketDataResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:886:12 [INFO] [stdout] | [INFO] [stdout] 886 | pub struct MarketDataResponse { pub symbol: String, pub data: crate::models::market_data::MarketData } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_market_data` is never used [INFO] [stdout] --> src/api/handlers.rs:888:14 [INFO] [stdout] | [INFO] [stdout] 888 | pub async fn get_market_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_routes` is never used [INFO] [stdout] --> src/api/routes.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub fn create_routes( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read [INFO] [stdout] --> src/backtest/engine.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct BacktestEngine { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | exchange: MockExchange, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 26 | initial_balance: HashMap, [INFO] [stdout] 27 | fee_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 28 | slippage: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_market_data` is never used [INFO] [stdout] --> src/backtest/engine.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl BacktestEngine { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_market_data(&mut self, symbol: &str, data: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `description` is never read [INFO] [stdout] --> src/backtest/scenario.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct BacktestScenario { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 15 | name: String, [INFO] [stdout] 16 | description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `description` is never used [INFO] [stdout] --> src/backtest/scenario.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl BacktestScenario { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `symbol` and `csv_delimiter` are never used [INFO] [stdout] --> src/backtest/scenario.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl BacktestScenarioBuilder { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn symbol(mut self, symbol: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn csv_delimiter(mut self, delimiter: char) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MarketDataRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MarketDataRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct BacktestRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestResult` is never constructed [INFO] [stdout] --> src/prediction_client.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct BacktestResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestMetrics` is never constructed [INFO] [stdout] --> src/prediction_client.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct BacktestMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PredictionRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 72 | pub struct PredictionRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PredictionResponse` is never constructed [INFO] [stdout] --> src/prediction_client.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct PredictionResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `run_backtest`, `get_prediction`, and `list_strategies` are never used [INFO] [stdout] --> src/prediction_client.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 95 | impl PredictionClient { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 129 | pub async fn run_backtest(&self, request: BacktestRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub async fn get_prediction(&self, request: PredictionRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub async fn list_strategies(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PredictionBasedBot` is never constructed [INFO] [stdout] --> src/prediction_client.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 181 | pub struct PredictionBasedBot { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `get_next_action`, and `update_position` are never used [INFO] [stdout] --> src/prediction_client.rs:190:12 [INFO] [stdout] | [INFO] [stdout] 189 | impl PredictionBasedBot { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 190 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub async fn get_next_action(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn update_position(&mut self, position: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TradingAction` is never used [INFO] [stdout] --> src/prediction_client.rs:252:10 [INFO] [stdout] | [INFO] [stdout] 252 | pub enum TradingAction { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VwapSplitter` is never constructed [INFO] [stdout] --> src/core/vwap_splitter.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct VwapSplitter { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/vwap_splitter.rs:38:10 [INFO] [stdout] | [INFO] [stdout] 36 | impl VwapSplitter { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 37 | /// 새 VWAP 분할기 생성 [INFO] [stdout] 38 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub async fn start(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn status(&self) -> (bool, f64, f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | async fn get_historical_vwap_data(&self) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | fn calculate_volume_profile(&self, data: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 211 | async fn create_child_order(&self, quantity: f64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IcebergManager` is never constructed [INFO] [stdout] --> src/core/iceberg_manager.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct IcebergManager { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, `submit_visible_portion`, and `update_price` are never used [INFO] [stdout] --> src/core/iceberg_manager.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 40 | impl IcebergManager { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 41 | /// 새 Iceberg 관리자 생성 [INFO] [stdout] 42 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub async fn start(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn status(&self) -> (bool, f64, f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | async fn submit_visible_portion(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub async fn update_price(&mut self, new_price: f64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrailingStopManager` is never constructed [INFO] [stdout] --> src/core/trailing_stop_manager.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct TrailingStopManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, and `update_delta` are never used [INFO] [stdout] --> src/core/trailing_stop_manager.rs:44:10 [INFO] [stdout] | [INFO] [stdout] 42 | impl TrailingStopManager { [INFO] [stdout] | ------------------------ associated items in this implementation [INFO] [stdout] 43 | /// 새 Trailing Stop 관리자 생성 [INFO] [stdout] 44 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub async fn start(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn status(&self) -> (bool, bool, f64, f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | pub async fn update_delta(&mut self, new_delta: f64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TwapSplitter` is never constructed [INFO] [stdout] --> src/core/twap_splitter.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct TwapSplitter { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start`, `stop`, `status`, and `create_child_order` are never used [INFO] [stdout] --> src/core/twap_splitter.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 38 | impl TwapSplitter { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 39 | /// 새 TWAP 분할기 생성 [INFO] [stdout] 40 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub async fn start(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn status(&self) -> (bool, f64, f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | async fn create_child_order(&self, quantity: f64) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RiskManager` is never constructed [INFO] [stdout] --> src/core/risk_manager.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RiskManager { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/risk_manager.rs:32:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl RiskManager { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 31 | /// 새 리스크 관리자 생성 [INFO] [stdout] 32 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn set_max_position_size(&mut self, symbol: impl Into, size: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub async fn check_order(&mut self, order: &Order) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub async fn update_positions(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn get_position_size(&self, symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn get_unrealized_pnl(&self, symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn record_pnl(&mut self, amount: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn reset_daily_loss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn get_positions(&self) -> Vec<&Position> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExecutionAnalyzer` is never constructed [INFO] [stdout] --> src/core/execution_analyzer.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct ExecutionAnalyzer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/core/execution_analyzer.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 32 | impl ExecutionAnalyzer { [INFO] [stdout] | ---------------------- associated items in this implementation [INFO] [stdout] 33 | /// 새 실행 분석기 생성 [INFO] [stdout] 34 | pub fn new(symbol: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn add_trade(&mut self, trade: Trade) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn add_market_data(&mut self, data: MarketData) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn calculate_metrics(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | fn calculate_vwap(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | fn calculate_twap(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | fn calculate_slippage(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | fn calculate_market_impact(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn get_report(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_orders_from_strategy` and `get_strategy_status` are never used [INFO] [stdout] --> src/core/strategy_manager.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 21 | impl StrategyManager { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn get_orders_from_strategy(&mut self, name: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn get_strategy_status(&self, name: &str) -> Result<(String, bool), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/error.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum TradingError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | ExecutionError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | AlreadyRunning(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | NotSubscribed(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | LockError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | TaskNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | NoAvailableProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | InsufficientBalance, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | RiskLimitExceeded(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | MissingData(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/exchange/mocks.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct MockExchange { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 19 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `modify_order`, `get_recent_trades`, `get_historical_data`, and `get_balance` are never used [INFO] [stdout] --> src/exchange/traits.rs:21:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Exchange: Send + Sync { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 21 | async fn modify_order(&mut self, order_id: &OrderId, order: Order) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | async fn get_recent_trades(&self, symbol: &str, limit: Option) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | async fn get_historical_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | async fn get_balance(&self, asset: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_mid_price` is never used [INFO] [stdout] --> src/exchange/binance_futures.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl BinanceFuturesExchange { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 123 | async fn get_mid_price(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DryRunExchange` is never constructed [INFO] [stdout] --> src/exchange/dry_run.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct DryRunExchange; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `ts` are never used [INFO] [stdout] --> src/exchange/dry_run.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 12 | impl DryRunExchange { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] 13 | pub fn new() -> Self { Self } [INFO] [stdout] | ^^^ [INFO] [stdout] 14 | fn ts() -> i64 { SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as i64 } [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unsubscribe`, `get_receiver`, `get_current_data`, `is_connected`, and `disconnect` are never used [INFO] [stdout] --> src/market_data/provider.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait MarketDataProvider: Send + Sync { [INFO] [stdout] | ------------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 15 | async fn unsubscribe(&mut self, symbol: &str) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | fn get_receiver(&self, symbol: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_current_data(&self, symbol: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn is_connected(&self) -> bool; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | async fn disconnect(&mut self) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unsubscribe_all`, `disconnect_all`, `get_receiver`, and `get_current_data` are never used [INFO] [stdout] --> src/market_data/provider.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 39 | impl MarketDataManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub async fn unsubscribe_all(&mut self, symbol: &str) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub async fn disconnect_all(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn get_receiver(&self, symbol: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub async fn get_current_data(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `buffer_size` and `aggregation_tasks` are never read [INFO] [stdout] --> src/market_data/stream.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct MarketDataStream { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | buffer_size: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 14 | aggregation_tasks: HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_or_create_channel`, `get_latest_data`, `get_receiver`, `start_aggregation`, and `stop_aggregation` are never used [INFO] [stdout] --> src/market_data/stream.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl MarketDataStream { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn get_or_create_channel(&mut self, symbol: &str) -> broadcast::Sender { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn get_latest_data(&self, symbol: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn get_receiver(&self, symbol: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn stop_aggregation(&mut self, symbol: &str) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reconnect_interval` is never read [INFO] [stdout] --> src/market_data/websocket.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct WebSocketProvider { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | reconnect_interval: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FixProvider` is never constructed [INFO] [stdout] --> src/market_data/fix.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FixProvider { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `start_fix_session` are never used [INFO] [stdout] --> src/market_data/fix.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl FixProvider { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 27 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | async fn start_fix_session(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `vwap` are never used [INFO] [stdout] --> src/models/market_data.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl MarketData { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 15 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn vwap(&self) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_stop_price`, `with_time_in_force`, `with_client_order_id`, `with_trailing_delta`, and `with_vwap_params` are never used [INFO] [stdout] --> src/models/order.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl Order { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn with_stop_price(mut self, stop_price: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn with_time_in_force(mut self, time_in_force: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn with_client_order_id(mut self, client_order_id: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn with_trailing_delta(mut self, trailing_delta: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn with_vwap_params(mut self, execution_interval: i64, target_percentage: Option) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_long` and `is_short` are never used [INFO] [stdout] --> src/models/position.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Position { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn is_long(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn is_short(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `value` are never used [INFO] [stdout] --> src/models/trade.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Trade { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 17 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn value(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_validator`, `cancel_order`, `modify_order`, `get_order_status`, `get_open_orders`, and `subscribe_to_status_updates` are never used [INFO] [stdout] --> src/order_core/manager.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl OrderManager { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn add_validator(&mut self, validator: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub async fn cancel_order(&self, order_id: &OrderId) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn modify_order(&self, order_id: &OrderId, new_params: Order) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | pub async fn get_order_status(&self, order_id: &OrderId) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | pub async fn get_open_orders(&self) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn subscribe_to_status_updates(&mut self, client_order_id: &str) -> broadcast::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_by_id`, `find_by_client_id`, `find_by_symbol`, `find_all`, and `delete` are never used [INFO] [stdout] --> src/order_core/repository.rs:19:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait OrderRepository: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 19 | async fn find_by_id(&self, order_id: &OrderId) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | async fn find_by_client_id(&self, client_id: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | async fn find_by_symbol(&self, symbol: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | async fn find_all(&self) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | async fn delete(&mut self, order_id: &OrderId) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicOrderValidator` is never constructed [INFO] [stdout] --> src/order_core/validator.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct BasicOrderValidator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/order_core/validator.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl BasicOrderValidator { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] 19 | pub fn new(min_order_size: f64, max_order_size: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RiskOrderValidator` is never constructed [INFO] [stdout] --> src/order_core/validator.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct RiskOrderValidator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/order_core/validator.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl RiskOrderValidator { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 62 | pub fn new(max_position_size: f64, max_notional_value: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StrategyFactory` is never used [INFO] [stdout] --> src/strategies/mod.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub trait StrategyFactory: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/vwap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `entry_price` is never read [INFO] [stdout] --> src/strategies/trailing_stop.rs:23:3 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TrailingStopStrategy { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | entry_price: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_entry_price` is never used [INFO] [stdout] --> src/strategies/trailing_stop.rs:72:10 [INFO] [stdout] | [INFO] [stdout] 42 | impl TrailingStopStrategy { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 72 | pub fn set_entry_price(&mut self, price: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/twap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/strategies/combined.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CombinedStrategy { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 10 | name: String, [INFO] [stdout] 11 | symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `ma_crossover_iceberg` is never used [INFO] [stdout] --> src/strategies/combined.rs:100:10 [INFO] [stdout] | [INFO] [stdout] 17 | impl CombinedStrategy { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn ma_crossover_iceberg( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `timestamp_to_datetime` is never used [INFO] [stdout] --> src/utils/mod.rs:10:8 [INFO] [stdout] | [INFO] [stdout] 10 | pub fn timestamp_to_datetime(timestamp_ms: i64) -> DateTime { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `datetime_to_timestamp` is never used [INFO] [stdout] --> src/utils/mod.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn datetime_to_timestamp(dt: DateTime) -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `current_timestamp_ms` is never used [INFO] [stdout] --> src/utils/mod.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn current_timestamp_ms() -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_timestamp` is never used [INFO] [stdout] --> src/utils/mod.rs:28:8 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn format_timestamp(timestamp_ms: i64, format: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `time_diff_seconds` is never used [INFO] [stdout] --> src/utils/mod.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn time_diff_seconds(start_ts: i64, end_ts: i64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_time_slices` is never used [INFO] [stdout] --> src/utils/mod.rs:39:8 [INFO] [stdout] | [INFO] [stdout] 39 | pub fn calculate_time_slices(start_ts: i64, end_ts: i64, num_slices: usize) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_trading_start` is never used [INFO] [stdout] --> src/utils/logging.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn log_trading_start(strategy_name: &str, symbol: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_trading_end` is never used [INFO] [stdout] --> src/utils/logging.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn log_trading_end(strategy_name: &str, symbol: &str, result: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_created` is never used [INFO] [stdout] --> src/utils/logging.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn log_order_created(order_id: &str, symbol: &str, side: &str, quantity: f64, price: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_cancelled` is never used [INFO] [stdout] --> src/utils/logging.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn log_order_cancelled(order_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_filled` is never used [INFO] [stdout] --> src/utils/logging.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn log_order_filled(order_id: &str, symbol: &str, quantity: f64, price: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_error` is never used [INFO] [stdout] --> src/utils/logging.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn log_error(context: &str, error: &TradingError) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `message` is never read [INFO] [stdout] --> src/indicators/mod.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct IndicatorSignal { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IndicatorSignal` 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 `reset` is never used [INFO] [stdout] --> src/indicators/mod.rs:47:6 [INFO] [stdout] | [INFO] [stdout] 34 | pub trait Indicator: Debug + Send + Sync { [INFO] [stdout] | --------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 47 | fn reset(&mut self); [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/moving_averages.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 20 | impl SimpleMovingAverage { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/moving_averages.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 89 | impl ExponentialMovingAverage { [INFO] [stdout] | ----------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/oscillators.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 26 | impl RelativeStrengthIndex { [INFO] [stdout] | -------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VolumeWeightedAveragePrice` is never constructed [INFO] [stdout] --> src/indicators/volume.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct VolumeWeightedAveragePrice { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/indicators/volume.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 21 | impl VolumeWeightedAveragePrice { [INFO] [stdout] | ------------------------------- associated function in this implementation [INFO] [stdout] 22 | pub fn new(period: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_indicators` is never used [INFO] [stdout] --> src/indicators/utils.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn update_indicators( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_indicators_with_market_data` is never used [INFO] [stdout] --> src/indicators/utils.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn update_indicators_with_market_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reset_indicators` is never used [INFO] [stdout] --> src/indicators/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn reset_indicators(indicators: &mut [Box]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `CloseLong` and `CloseShort` are never constructed [INFO] [stdout] --> src/signals/signal_types.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum SignalType { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | CloseLong, // 롱 포지션 청산 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 21 | CloseShort, // 숏 포지션 청산 [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SignalType` 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 `is_buy`, `is_sell`, and `is_reduce` are never used [INFO] [stdout] --> src/signals/signal_types.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl SignalType { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn is_buy(&self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn is_sell(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn is_reduce(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `source`, `timestamp`, and `additional_info` are never read [INFO] [stdout] --> src/signals/signal_types.rs:59:7 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct SignalWithMetadata { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 58 | pub signal_type: SignalType, [INFO] [stdout] 59 | pub source: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 60 | pub strength: f64, // -1.0 ~ 1.0 [INFO] [stdout] 61 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 62 | pub confidence: f64, // 0.0 ~ 1.0 [INFO] [stdout] 63 | pub additional_info: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SignalWithMetadata` 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: associated items `new` and `add_info` are never used [INFO] [stdout] --> src/signals/signal_types.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 66 | impl SignalWithMetadata { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 67 | pub fn new(signal_type: SignalType, source: String, strength: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn add_info(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_weight` is never used [INFO] [stdout] --> src/signals/signal_analyzer.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 18 | impl SignalAnalyzer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn set_weight(&mut self, indicator_name: &str, weight: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KellyPositionSizer` is never constructed [INFO] [stdout] --> src/signals/position_sizing.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct KellyPositionSizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/signals/position_sizing.rs:57:10 [INFO] [stdout] | [INFO] [stdout] 56 | impl KellyPositionSizer { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 57 | pub fn new(max_risk: f64, win_rate: f64, reward_risk: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_bool` is never used [INFO] [stdout] --> src/trading_bots/bot_config.rs:81:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl TradingBotConfig { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn get_bool(&self, key: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `evaluate_signals`, `config`, `update_config`, `reset`, and `name` are never used [INFO] [stdout] --> src/trading_bots/base_bot.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 15 | pub trait TradingBot: Send + Sync { [INFO] [stdout] | ---------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 20 | fn evaluate_signals(&self) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn config(&self) -> &TradingBotConfig; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | fn update_config(&mut self, config: TradingBotConfig) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | fn reset(&mut self); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_bot` is never used [INFO] [stdout] --> src/trading_bots/base_bot.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn create_bot(symbol: &str, config: TradingBotConfig) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MACrossoverBot { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RSIBot { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/macd_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MACDBot { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:21:3 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct MultiIndicatorBot { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 20 | symbol: String, [INFO] [stdout] 21 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exchange` [INFO] [stdout] --> src/main.rs:190:3 [INFO] [stdout] | [INFO] [stdout] 190 | exchange: Arc>, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `market_stream` [INFO] [stdout] --> src/main.rs:191:3 [INFO] [stdout] | [INFO] [stdout] 191 | market_stream: Arc>, [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_market_stream` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `list_strategies` is never used [INFO] [stdout] --> src/api/handlers.rs:20:14 [INFO] [stdout] | [INFO] [stdout] 20 | pub async fn list_strategies( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateTAStrategyRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct CreateTAStrategyRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_ta_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:38:14 [INFO] [stdout] | [INFO] [stdout] 38 | pub async fn create_ta_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_strategy_status` is never used [INFO] [stdout] --> src/api/handlers.rs:169:14 [INFO] [stdout] | [INFO] [stdout] 169 | pub async fn get_strategy_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `delete_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:189:14 [INFO] [stdout] | [INFO] [stdout] 189 | pub async fn delete_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ToggleStrategyRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 216 | pub struct ToggleStrategyRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `toggle_strategy` is never used [INFO] [stdout] --> src/api/handlers.rs:221:14 [INFO] [stdout] | [INFO] [stdout] 221 | pub async fn toggle_strategy( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorQuery` is never constructed [INFO] [stdout] --> src/api/handlers.rs:249:12 [INFO] [stdout] | [INFO] [stdout] 249 | pub struct IndicatorQuery { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:262:12 [INFO] [stdout] | [INFO] [stdout] 262 | pub struct IndicatorResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IndicatorValue` is never constructed [INFO] [stdout] --> src/api/handlers.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 270 | pub struct IndicatorValue { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SignalInfo` is never constructed [INFO] [stdout] --> src/api/handlers.rs:276:12 [INFO] [stdout] | [INFO] [stdout] 276 | pub struct SignalInfo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_indicators` is never used [INFO] [stdout] --> src/api/handlers.rs:284:14 [INFO] [stdout] | [INFO] [stdout] 284 | pub async fn calculate_indicators( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestPerformanceRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:403:12 [INFO] [stdout] | [INFO] [stdout] 403 | pub struct BacktestPerformanceRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `calculate_backtest_performance` is never used [INFO] [stdout] --> src/api/handlers.rs:412:14 [INFO] [stdout] | [INFO] [stdout] 412 | pub async fn calculate_backtest_performance( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PortfolioOptimizationRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:524:12 [INFO] [stdout] | [INFO] [stdout] 524 | pub struct PortfolioOptimizationRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `optimize_portfolio` is never used [INFO] [stdout] --> src/api/handlers.rs:533:14 [INFO] [stdout] | [INFO] [stdout] 533 | pub async fn optimize_portfolio( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `analyze_trade_logs` is never used [INFO] [stdout] --> src/api/handlers.rs:552:14 [INFO] [stdout] | [INFO] [stdout] 552 | pub async fn analyze_trade_logs( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateOrderRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:577:12 [INFO] [stdout] | [INFO] [stdout] 577 | pub struct CreateOrderRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateOrderResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:586:12 [INFO] [stdout] | [INFO] [stdout] 586 | pub struct CreateOrderResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_order` is never used [INFO] [stdout] --> src/api/handlers.rs:590:14 [INFO] [stdout] | [INFO] [stdout] 590 | pub async fn create_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_orders` is never used [INFO] [stdout] --> src/api/handlers.rs:610:14 [INFO] [stdout] | [INFO] [stdout] 610 | pub async fn get_orders( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_order` is never used [INFO] [stdout] --> src/api/handlers.rs:624:14 [INFO] [stdout] | [INFO] [stdout] 624 | pub async fn cancel_order( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateVwapRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:642:12 [INFO] [stdout] | [INFO] [stdout] 642 | pub struct CreateVwapRequest { pub symbol: String, pub side: OrderSide, pub target_quantity: f64, pub execution_interval_ms: i64, p... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_vwap_order` is never used [INFO] [stdout] --> src/api/handlers.rs:644:14 [INFO] [stdout] | [INFO] [stdout] 644 | pub async fn create_vwap_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_vwap_status` is never used [INFO] [stdout] --> src/api/handlers.rs:666:14 [INFO] [stdout] | [INFO] [stdout] 666 | pub async fn get_vwap_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_vwap_order` is never used [INFO] [stdout] --> src/api/handlers.rs:677:14 [INFO] [stdout] | [INFO] [stdout] 677 | pub async fn cancel_vwap_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateIcebergRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:690:12 [INFO] [stdout] | [INFO] [stdout] 690 | pub struct CreateIcebergRequest { pub symbol: String, pub side: OrderSide, pub total_quantity: f64, pub display_size: f64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_iceberg_order` is never used [INFO] [stdout] --> src/api/handlers.rs:692:14 [INFO] [stdout] | [INFO] [stdout] 692 | pub async fn create_iceberg_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_iceberg_status` is never used [INFO] [stdout] --> src/api/handlers.rs:712:14 [INFO] [stdout] | [INFO] [stdout] 712 | pub async fn get_iceberg_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_iceberg_order` is never used [INFO] [stdout] --> src/api/handlers.rs:723:14 [INFO] [stdout] | [INFO] [stdout] 723 | pub async fn cancel_iceberg_order( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CreateTrailingStopRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:736:12 [INFO] [stdout] | [INFO] [stdout] 736 | pub struct CreateTrailingStopRequest { pub symbol: String, pub side: OrderSide, pub quantity: f64, pub trailing_delta: f64 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_trailing_stop` is never used [INFO] [stdout] --> src/api/handlers.rs:738:14 [INFO] [stdout] | [INFO] [stdout] 738 | pub async fn create_trailing_stop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_trailing_stop_status` is never used [INFO] [stdout] --> src/api/handlers.rs:756:14 [INFO] [stdout] | [INFO] [stdout] 756 | pub async fn get_trailing_stop_status( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cancel_trailing_stop` is never used [INFO] [stdout] --> src/api/handlers.rs:767:14 [INFO] [stdout] | [INFO] [stdout] 767 | pub async fn cancel_trailing_stop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetPositionModeRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:781:12 [INFO] [stdout] | [INFO] [stdout] 781 | pub struct SetPositionModeRequest { pub hedge: bool } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_position_mode` is never used [INFO] [stdout] --> src/api/handlers.rs:783:14 [INFO] [stdout] | [INFO] [stdout] 783 | pub async fn set_position_mode( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetMarginModeRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:798:12 [INFO] [stdout] | [INFO] [stdout] 798 | pub struct SetMarginModeRequest { pub symbol: String, pub isolated: bool } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_margin_mode` is never used [INFO] [stdout] --> src/api/handlers.rs:800:14 [INFO] [stdout] | [INFO] [stdout] 800 | pub async fn set_margin_mode( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetLeverageRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:815:12 [INFO] [stdout] | [INFO] [stdout] 815 | pub struct SetLeverageRequest { pub symbol: String, pub leverage: u32 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_leverage` is never used [INFO] [stdout] --> src/api/handlers.rs:817:14 [INFO] [stdout] | [INFO] [stdout] 817 | pub async fn set_leverage( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FuturesSettingsRequest` is never constructed [INFO] [stdout] --> src/api/handlers.rs:832:12 [INFO] [stdout] | [INFO] [stdout] 832 | pub struct FuturesSettingsRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FuturesSettingsResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:839:12 [INFO] [stdout] | [INFO] [stdout] 839 | pub struct FuturesSettingsResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_futures_settings` is never used [INFO] [stdout] --> src/api/handlers.rs:845:14 [INFO] [stdout] | [INFO] [stdout] 845 | pub async fn apply_futures_settings( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MarketDataResponse` is never constructed [INFO] [stdout] --> src/api/handlers.rs:886:12 [INFO] [stdout] | [INFO] [stdout] 886 | pub struct MarketDataResponse { pub symbol: String, pub data: crate::models::market_data::MarketData } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_market_data` is never used [INFO] [stdout] --> src/api/handlers.rs:888:14 [INFO] [stdout] | [INFO] [stdout] 888 | pub async fn get_market_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_routes` is never used [INFO] [stdout] --> src/api/routes.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | pub fn create_routes( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `exchange`, `fee_rate`, and `slippage` are never read [INFO] [stdout] --> src/backtest/engine.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct BacktestEngine { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | exchange: MockExchange, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 26 | initial_balance: HashMap, [INFO] [stdout] 27 | fee_rate: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 28 | slippage: f64, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_market_data` is never used [INFO] [stdout] --> src/backtest/engine.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 32 | impl BacktestEngine { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn add_market_data(&mut self, symbol: &str, data: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `description` is never read [INFO] [stdout] --> src/backtest/scenario.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct BacktestScenario { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 15 | name: String, [INFO] [stdout] 16 | description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `description` is never used [INFO] [stdout] --> src/backtest/scenario.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl BacktestScenario { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn description(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `symbol` and `csv_delimiter` are never used [INFO] [stdout] --> src/backtest/scenario.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl BacktestScenarioBuilder { [INFO] [stdout] | ---------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn symbol(mut self, symbol: impl Into) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn csv_delimiter(mut self, delimiter: char) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MarketDataRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct MarketDataRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct BacktestRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestResult` is never constructed [INFO] [stdout] --> src/prediction_client.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct BacktestResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BacktestMetrics` is never constructed [INFO] [stdout] --> src/prediction_client.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub struct BacktestMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PredictionRequest` is never constructed [INFO] [stdout] --> src/prediction_client.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 72 | pub struct PredictionRequest { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PredictionResponse` is never constructed [INFO] [stdout] --> src/prediction_client.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct PredictionResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `run_backtest`, `get_prediction`, and `list_strategies` are never used [INFO] [stdout] --> src/prediction_client.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 95 | impl PredictionClient { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 129 | pub async fn run_backtest(&self, request: BacktestRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub async fn get_prediction(&self, request: PredictionRequest) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub async fn list_strategies(&self) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `prediction_client`, `symbol`, `strategy`, and `timeframe` are never read [INFO] [stdout] --> src/prediction_client.rs:182:5 [INFO] [stdout] | [INFO] [stdout] 181 | pub struct PredictionBasedBot { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 182 | prediction_client: PredictionClient, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 183 | symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 184 | strategy: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 185 | timeframe: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_next_action` is never used [INFO] [stdout] --> src/prediction_client.rs:206:18 [INFO] [stdout] | [INFO] [stdout] 189 | impl PredictionBasedBot { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 206 | pub async fn get_next_action(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TradingAction` is never used [INFO] [stdout] --> src/prediction_client.rs:252:10 [INFO] [stdout] | [INFO] [stdout] 252 | pub enum TradingAction { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `target_percentage` is never read [INFO] [stdout] --> src/core/vwap_splitter.rs:27:3 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct VwapSplitter { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 27 | target_percentage: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stop` is never used [INFO] [stdout] --> src/core/vwap_splitter.rs:134:16 [INFO] [stdout] | [INFO] [stdout] 36 | impl VwapSplitter { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 134 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `status` and `update_price` are never used [INFO] [stdout] --> src/core/iceberg_manager.rs:195:10 [INFO] [stdout] | [INFO] [stdout] 40 | impl IcebergManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn status(&self) -> (bool, f64, f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 228 | pub async fn update_price(&mut self, new_price: f64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `update_delta` is never used [INFO] [stdout] --> src/core/trailing_stop_manager.rs:222:16 [INFO] [stdout] | [INFO] [stdout] 42 | impl TrailingStopManager { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 222 | pub async fn update_delta(&mut self, new_delta: f64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stop` is never used [INFO] [stdout] --> src/core/twap_splitter.rs:121:16 [INFO] [stdout] | [INFO] [stdout] 38 | impl TwapSplitter { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 121 | pub async fn stop(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `max_drawdown_percent` is never read [INFO] [stdout] --> src/core/risk_manager.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct RiskManager { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | max_drawdown_percent: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_unrealized_pnl`, `record_pnl`, `reset_daily_loss`, and `get_positions` are never used [INFO] [stdout] --> src/core/risk_manager.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 30 | impl RiskManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn get_unrealized_pnl(&self, symbol: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn record_pnl(&mut self, amount: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn reset_daily_loss(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn get_positions(&self) -> Vec<&Position> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_orders_from_strategy` and `get_strategy_status` are never used [INFO] [stdout] --> src/core/strategy_manager.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 21 | impl StrategyManager { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn get_orders_from_strategy(&mut self, name: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn get_strategy_status(&self, name: &str) -> Result<(String, bool), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/error.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum TradingError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 27 | ExecutionError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | NotSubscribed(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | LockError, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | TaskNotFound(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | NoAvailableProvider, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | InsufficientBalance, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 72 | RiskLimitExceeded(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | MissingData(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TradingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/exchange/mocks.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct MockExchange { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 19 | config: Config, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `modify_order`, `get_recent_trades`, and `get_balance` are never used [INFO] [stdout] --> src/exchange/traits.rs:21:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Exchange: Send + Sync { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 21 | async fn modify_order(&mut self, order_id: &OrderId, order: Order) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | async fn get_recent_trades(&self, symbol: &str, limit: Option) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | async fn get_balance(&self, asset: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_mid_price` is never used [INFO] [stdout] --> src/exchange/binance_futures.rs:123:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl BinanceFuturesExchange { [INFO] [stdout] | --------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 123 | async fn get_mid_price(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DryRunExchange` is never constructed [INFO] [stdout] --> src/exchange/dry_run.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct DryRunExchange; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `ts` are never used [INFO] [stdout] --> src/exchange/dry_run.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 12 | impl DryRunExchange { [INFO] [stdout] | ------------------- associated functions in this implementation [INFO] [stdout] 13 | pub fn new() -> Self { Self } [INFO] [stdout] | ^^^ [INFO] [stdout] 14 | fn ts() -> i64 { SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as i64 } [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unsubscribe`, `get_receiver`, `get_current_data`, `is_connected`, and `disconnect` are never used [INFO] [stdout] --> src/market_data/provider.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait MarketDataProvider: Send + Sync { [INFO] [stdout] | ------------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 15 | async fn unsubscribe(&mut self, symbol: &str) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | fn get_receiver(&self, symbol: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | async fn get_current_data(&self, symbol: &str) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 24 | async fn is_connected(&self) -> bool; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | async fn disconnect(&mut self) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unsubscribe_all`, `disconnect_all`, `get_receiver`, and `get_current_data` are never used [INFO] [stdout] --> src/market_data/provider.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 39 | impl MarketDataManager { [INFO] [stdout] | ---------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub async fn unsubscribe_all(&mut self, symbol: &str) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub async fn disconnect_all(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn get_receiver(&self, symbol: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub async fn get_current_data(&self, symbol: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `buffer_size` and `aggregation_tasks` are never read [INFO] [stdout] --> src/market_data/stream.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct MarketDataStream { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 13 | buffer_size: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 14 | aggregation_tasks: HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_or_create_channel`, `get_latest_data`, `get_receiver`, `start_aggregation`, and `stop_aggregation` are never used [INFO] [stdout] --> src/market_data/stream.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl MarketDataStream { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn get_or_create_channel(&mut self, symbol: &str) -> broadcast::Sender { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn get_latest_data(&self, symbol: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub fn get_receiver(&self, symbol: &str) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub fn start_aggregation(&mut self, symbol: &str, interval: u64) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn stop_aggregation(&mut self, symbol: &str) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reconnect_interval` is never read [INFO] [stdout] --> src/market_data/websocket.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct WebSocketProvider { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | reconnect_interval: Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FixProvider` is never constructed [INFO] [stdout] --> src/market_data/fix.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct FixProvider { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `start_fix_session` are never used [INFO] [stdout] --> src/market_data/fix.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl FixProvider { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 27 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | async fn start_fix_session(&mut self) -> Result<(), TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `vwap` are never used [INFO] [stdout] --> src/models/market_data.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl MarketData { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 15 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn vwap(&self) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_stop_price`, `with_time_in_force`, `with_client_order_id`, `with_trailing_delta`, and `with_vwap_params` are never used [INFO] [stdout] --> src/models/order.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl Order { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn with_stop_price(mut self, stop_price: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn with_time_in_force(mut self, time_in_force: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn with_client_order_id(mut self, client_order_id: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn with_trailing_delta(mut self, trailing_delta: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn with_vwap_params(mut self, execution_interval: i64, target_percentage: Option) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_long` and `is_short` are never used [INFO] [stdout] --> src/models/position.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl Position { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn is_long(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn is_short(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `value` are never used [INFO] [stdout] --> src/models/trade.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 16 | impl Trade { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 17 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn value(&self) -> f64 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_validator`, `modify_order`, `get_open_orders`, and `subscribe_to_status_updates` are never used [INFO] [stdout] --> src/order_core/manager.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl OrderManager { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn add_validator(&mut self, validator: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn modify_order(&self, order_id: &OrderId, new_params: Order) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | pub async fn get_open_orders(&self) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn subscribe_to_status_updates(&mut self, client_order_id: &str) -> broadcast::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_by_client_id`, `find_by_symbol`, `find_all`, and `delete` are never used [INFO] [stdout] --> src/order_core/repository.rs:22:14 [INFO] [stdout] | [INFO] [stdout] 11 | pub trait OrderRepository: Send + Sync { [INFO] [stdout] | --------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 22 | async fn find_by_client_id(&self, client_id: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | async fn find_by_symbol(&self, symbol: &str) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 31 | async fn find_all(&self) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | async fn delete(&mut self, order_id: &OrderId) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicOrderValidator` is never constructed [INFO] [stdout] --> src/order_core/validator.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct BasicOrderValidator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/order_core/validator.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl BasicOrderValidator { [INFO] [stdout] | ------------------------ associated function in this implementation [INFO] [stdout] 19 | pub fn new(min_order_size: f64, max_order_size: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RiskOrderValidator` is never constructed [INFO] [stdout] --> src/order_core/validator.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | pub struct RiskOrderValidator { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/order_core/validator.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl RiskOrderValidator { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 62 | pub fn new(max_position_size: f64, max_notional_value: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `StrategyFactory` is never used [INFO] [stdout] --> src/strategies/mod.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub trait StrategyFactory: Send + Sync { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/vwap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct VwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `execution_interval` is never read [INFO] [stdout] --> src/strategies/twap.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct TwapStrategy { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 23 | execution_interval: i64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `symbol` is never read [INFO] [stdout] --> src/strategies/combined.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CombinedStrategy { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 10 | name: String, [INFO] [stdout] 11 | symbol: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `ma_crossover_iceberg` is never used [INFO] [stdout] --> src/strategies/combined.rs:100:10 [INFO] [stdout] | [INFO] [stdout] 17 | impl CombinedStrategy { [INFO] [stdout] | --------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn ma_crossover_iceberg( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `current_timestamp_ms` is never used [INFO] [stdout] --> src/utils/mod.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn current_timestamp_ms() -> i64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_timestamp` is never used [INFO] [stdout] --> src/utils/mod.rs:28:8 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn format_timestamp(timestamp_ms: i64, format: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `time_diff_seconds` is never used [INFO] [stdout] --> src/utils/mod.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn time_diff_seconds(start_ts: i64, end_ts: i64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_trading_start` is never used [INFO] [stdout] --> src/utils/logging.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn log_trading_start(strategy_name: &str, symbol: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_trading_end` is never used [INFO] [stdout] --> src/utils/logging.rs:45:8 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn log_trading_end(strategy_name: &str, symbol: &str, result: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_created` is never used [INFO] [stdout] --> src/utils/logging.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn log_order_created(order_id: &str, symbol: &str, side: &str, quantity: f64, price: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_cancelled` is never used [INFO] [stdout] --> src/utils/logging.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn log_order_cancelled(order_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_order_filled` is never used [INFO] [stdout] --> src/utils/logging.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn log_order_filled(order_id: &str, symbol: &str, quantity: f64, price: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `log_error` is never used [INFO] [stdout] --> src/utils/logging.rs:67:8 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn log_error(context: &str, error: &TradingError) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `message` is never read [INFO] [stdout] --> src/indicators/mod.rs:31:7 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct IndicatorSignal { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 31 | pub message: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `IndicatorSignal` 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 `reset` is never used [INFO] [stdout] --> src/indicators/mod.rs:47:6 [INFO] [stdout] | [INFO] [stdout] 34 | pub trait Indicator: Debug + Send + Sync { [INFO] [stdout] | --------- method in this trait [INFO] [stdout] ... [INFO] [stdout] 47 | fn reset(&mut self); [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/moving_averages.rs:30:10 [INFO] [stdout] | [INFO] [stdout] 20 | impl SimpleMovingAverage { [INFO] [stdout] | ------------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/moving_averages.rs:103:10 [INFO] [stdout] | [INFO] [stdout] 89 | impl ExponentialMovingAverage { [INFO] [stdout] | ----------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `period` is never used [INFO] [stdout] --> src/indicators/oscillators.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 26 | impl RelativeStrengthIndex { [INFO] [stdout] | -------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn period(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VolumeWeightedAveragePrice` is never constructed [INFO] [stdout] --> src/indicators/volume.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct VolumeWeightedAveragePrice { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/indicators/volume.rs:22:10 [INFO] [stdout] | [INFO] [stdout] 21 | impl VolumeWeightedAveragePrice { [INFO] [stdout] | ------------------------------- associated function in this implementation [INFO] [stdout] 22 | pub fn new(period: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_indicators` is never used [INFO] [stdout] --> src/indicators/utils.rs:13:8 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn update_indicators( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_indicators_with_market_data` is never used [INFO] [stdout] --> src/indicators/utils.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn update_indicators_with_market_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reset_indicators` is never used [INFO] [stdout] --> src/indicators/utils.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn reset_indicators(indicators: &mut [Box]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `CloseLong` and `CloseShort` are never constructed [INFO] [stdout] --> src/signals/signal_types.rs:20:3 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum SignalType { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 20 | CloseLong, // 롱 포지션 청산 [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 21 | CloseShort, // 숏 포지션 청산 [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SignalType` 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 `is_buy`, `is_sell`, and `is_reduce` are never used [INFO] [stdout] --> src/signals/signal_types.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl SignalType { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn is_buy(&self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn is_sell(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn is_reduce(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `source`, `timestamp`, and `additional_info` are never read [INFO] [stdout] --> src/signals/signal_types.rs:59:7 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct SignalWithMetadata { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 58 | pub signal_type: SignalType, [INFO] [stdout] 59 | pub source: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 60 | pub strength: f64, // -1.0 ~ 1.0 [INFO] [stdout] 61 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 62 | pub confidence: f64, // 0.0 ~ 1.0 [INFO] [stdout] 63 | pub additional_info: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SignalWithMetadata` 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: associated items `new` and `add_info` are never used [INFO] [stdout] --> src/signals/signal_types.rs:67:10 [INFO] [stdout] | [INFO] [stdout] 66 | impl SignalWithMetadata { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 67 | pub fn new(signal_type: SignalType, source: String, strength: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn add_info(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_weight` is never used [INFO] [stdout] --> src/signals/signal_analyzer.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 18 | impl SignalAnalyzer { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn set_weight(&mut self, indicator_name: &str, weight: f64) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `KellyPositionSizer` is never constructed [INFO] [stdout] --> src/signals/position_sizing.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 50 | pub struct KellyPositionSizer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/signals/position_sizing.rs:57:10 [INFO] [stdout] | [INFO] [stdout] 56 | impl KellyPositionSizer { [INFO] [stdout] | ----------------------- associated function in this implementation [INFO] [stdout] 57 | pub fn new(max_risk: f64, win_rate: f64, reward_risk: f64) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_bool` is never used [INFO] [stdout] --> src/trading_bots/bot_config.rs:81:10 [INFO] [stdout] | [INFO] [stdout] 25 | impl TradingBotConfig { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn get_bool(&self, key: &str) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `evaluate_signals`, `config`, `update_config`, `reset`, and `name` are never used [INFO] [stdout] --> src/trading_bots/base_bot.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 15 | pub trait TradingBot: Send + Sync { [INFO] [stdout] | ---------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 20 | fn evaluate_signals(&self) -> Result, TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | fn config(&self) -> &TradingBotConfig; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | fn update_config(&mut self, config: TradingBotConfig) -> Result<(), TradingError>; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | fn reset(&mut self); [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | fn name(&self) -> &str { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_bot` is never used [INFO] [stdout] --> src/trading_bots/base_bot.rs:42:8 [INFO] [stdout] | [INFO] [stdout] 42 | pub fn create_bot(symbol: &str, config: TradingBotConfig) -> Result, TradingError> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/ma_crossover_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MACrossoverBot { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/rsi_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct RSIBot { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/macd_bot.rs:19:3 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct MACDBot { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] 18 | symbol: String, [INFO] [stdout] 19 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/trading_bots/multi_indicator_bot.rs:21:3 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct MultiIndicatorBot { [INFO] [stdout] | ----------------- field in this struct [INFO] [stdout] 20 | symbol: String, [INFO] [stdout] 21 | config: TradingBotConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952", kill_on_drop: false }` [INFO] [stdout] 966bcac18f45a53c4f37265df8957b85d6b7acdd4b3f5a9ccbc3f55dabf33952