[INFO] cloning repository https://github.com/alfredricker/backtester
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alfredricker/backtester" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falfredricker%2Fbacktester", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falfredricker%2Fbacktester'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 017d99415cdd74e5d563d084c4b53e54338ef856
[INFO] checking alfredricker/backtester against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falfredricker%2Fbacktester" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/alfredricker/backtester
[INFO] finished tweaking git repo https://github.com/alfredricker/backtester
[INFO] tweaked toml for git repo https://github.com/alfredricker/backtester written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/alfredricker/backtester on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/alfredricker/backtester 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded array-init-cursor v0.2.1
[INFO] [stderr]   Downloaded serde_stacker v0.1.14
[INFO] [stderr]   Downloaded polars-error v0.51.0
[INFO] [stderr]   Downloaded uuid-macro-internal v1.19.0
[INFO] [stderr]   Downloaded planus v1.1.1
[INFO] [stderr]   Downloaded rustls-native-certs v0.8.2
[INFO] [stderr]   Downloaded polars-arrow-format v0.2.1
[INFO] [stderr]   Downloaded streaming-decompression v0.1.2
[INFO] [stderr]   Downloaded polars-schema v0.51.0
[INFO] [stderr]   Downloaded now v0.1.3
[INFO] [stderr]   Downloaded polars-dtype v0.51.0
[INFO] [stderr]   Downloaded unicode-reverse v1.0.9
[INFO] [stderr]   Downloaded polars-row v0.51.0
[INFO] [stderr]   Downloaded fs4 v0.13.1
[INFO] [stderr]   Downloaded boxcar v0.2.14
[INFO] [stderr]   Downloaded polars-utils v0.51.0
[INFO] [stderr]   Downloaded polars-mem-engine v0.51.0
[INFO] [stderr]   Downloaded polars-parquet-format v0.1.0
[INFO] [stderr]   Downloaded polars-expr v0.51.0
[INFO] [stderr]   Downloaded polars-sql v0.51.0
[INFO] [stderr]   Downloaded polars-lazy v0.51.0
[INFO] [stderr]   Downloaded polars v0.51.0
[INFO] [stderr]   Downloaded polars-compute v0.51.0
[INFO] [stderr]   Downloaded polars-io v0.51.0
[INFO] [stderr]   Downloaded polars-parquet v0.51.0
[INFO] [stderr]   Downloaded polars-ops v0.51.0
[INFO] [stderr]   Downloaded polars-stream v0.51.0
[INFO] [stderr]   Downloaded skiplist v0.6.0
[INFO] [stderr]   Downloaded object_store v0.12.4
[INFO] [stderr]   Downloaded sqlparser v0.53.0
[INFO] [stderr]   Downloaded argminmax v0.6.3
[INFO] [stderr]   Downloaded polars-arrow v0.51.0
[INFO] [stderr]   Downloaded polars-time v0.51.0
[INFO] [stderr]   Downloaded polars-core v0.51.0
[INFO] [stderr]   Downloaded polars-plan v0.51.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3ec6ff77557083378ee85be402b4d0653c3e2318897568dfa7ba9e5336a6ebf8
[INFO] running `Command { std: "docker" "start" "-a" "3ec6ff77557083378ee85be402b4d0653c3e2318897568dfa7ba9e5336a6ebf8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3ec6ff77557083378ee85be402b4d0653c3e2318897568dfa7ba9e5336a6ebf8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3ec6ff77557083378ee85be402b4d0653c3e2318897568dfa7ba9e5336a6ebf8", kill_on_drop: false }`
[INFO] [stdout] 3ec6ff77557083378ee85be402b4d0653c3e2318897568dfa7ba9e5336a6ebf8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3f3dcafb69a87edc3bb2975ea8d413e1c94fea690dc97f04347b58d1a2284287
[INFO] running `Command { std: "docker" "start" "-a" "3f3dcafb69a87edc3bb2975ea8d413e1c94fea690dc97f04347b58d1a2284287", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling find-msvc-tools v0.1.4
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling syn v2.0.109
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking hashbrown v0.16.0
[INFO] [stderr]     Checking zerocopy v0.8.27
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking rustls-pki-types v1.13.0
[INFO] [stderr]    Compiling object v0.32.2
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking iri-string v0.7.9
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking array-init-cursor v0.2.1
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking rustls-native-certs v0.8.2
[INFO] [stderr]     Checking zlib-rs v0.5.2
[INFO] [stderr]    Compiling virtue v0.0.18
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]    Compiling polars-utils v0.51.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking unty v0.0.4
[INFO] [stderr]     Checking slotmap v1.0.7
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]    Compiling polars-schema v0.51.0
[INFO] [stderr]    Compiling polars-arrow v0.51.0
[INFO] [stderr]     Checking streaming-iterator v0.1.9
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]     Checking ethnum v1.5.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling generic-array v0.14.9
[INFO] [stderr]    Compiling polars-compute v0.51.0
[INFO] [stderr]     Checking rmp v0.8.14
[INFO] [stderr]     Checking debug_unsafe v0.1.3
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking strength_reduce v0.2.4
[INFO] [stderr]     Checking atoi_simd v0.16.1
[INFO] [stderr]    Compiling cc v1.2.45
[INFO] [stderr]     Checking fast-float2 v0.2.3
[INFO] [stderr]     Checking boxcar v0.2.14
[INFO] [stderr]    Compiling polars-core v0.51.0
[INFO] [stderr]    Compiling polars-ops v0.51.0
[INFO] [stderr]    Compiling bincode_derive v2.0.1
[INFO] [stderr]     Checking xxhash-rust v0.8.15
[INFO] [stderr]    Compiling snap v1.1.1
[INFO] [stderr]     Checking argminmax v0.6.3
[INFO] [stderr]     Checking streaming-decompression v0.1.2
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling polars-stream v0.51.0
[INFO] [stderr]     Checking libz-rs-sys v0.5.2
[INFO] [stderr]    Compiling polars-lazy v0.51.0
[INFO] [stderr]    Compiling polars v0.51.0
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling stacker v0.1.22
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]    Compiling polars-plan v0.51.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking indexmap v2.12.0
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking rand_distr v0.5.1
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling ar_archive_writer v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling psm v0.1.28
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling uuid-macro-internal v1.19.0
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking serde_stacker v0.1.14
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking fs4 v0.13.1
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling recursive-proc-macro-impl v0.1.1
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking comfy-table v7.2.1
[INFO] [stderr]     Checking recursive v0.1.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking skiplist v0.6.0
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking quick-xml v0.38.3
[INFO] [stderr]     Checking bincode v2.0.1
[INFO] [stderr]     Checking rmp-serde v1.3.0
[INFO] [stderr]     Checking compact_str v0.9.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking polars-parquet-format v0.1.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking planus v1.1.1
[INFO] [stderr]     Checking chrono-tz v0.10.4
[INFO] [stderr]     Checking now v0.1.3
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking polars-arrow-format v0.2.1
[INFO] [stderr]     Checking lz4 v1.28.1
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking hyper v1.7.0
[INFO] [stderr]     Checking hyper-util v0.1.17
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.24
[INFO] [stderr]     Checking object_store v0.12.4
[INFO] [stderr]     Checking polars-error v0.51.0
[INFO] [stderr]     Checking polars-dtype v0.51.0
[INFO] [stderr]     Checking polars-row v0.51.0
[INFO] [stderr]     Checking polars-parquet v0.51.0
[INFO] [stderr]     Checking polars-time v0.51.0
[INFO] [stderr]     Checking polars-io v0.51.0
[INFO] [stderr]     Checking polars-expr v0.51.0
[INFO] [stderr]     Checking polars-mem-engine v0.51.0
[INFO] [stderr]     Checking strategy_tester v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/position/sizing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::Config;
[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: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/sizing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/position/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::indicators::indicator::Indicator`
[INFO] [stdout]  --> src/position/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::indicators::indicator::Indicator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/position.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/indicators/window.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Datelike`
[INFO] [stdout]  --> src/indicators/window.rs:2:39
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Duration, Utc, Datelike, Timelike};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/strategy.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::Config;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/position/sizing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::Config;
[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: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/sizing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/position/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::indicators::indicator::Indicator`
[INFO] [stdout]  --> src/position/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::indicators::indicator::Indicator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/position.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/indicators/window.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Datelike`
[INFO] [stdout]  --> src/indicators/window.rs:2:39
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Duration, Utc, Datelike, Timelike};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/strategy.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::Config;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/position/sizing.rs:35:41
[INFO] [stdout]    |
[INFO] [stdout] 35 |             SizingStrategy::SignalBased(func) => {
[INFO] [stdout]    |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/position/sizing.rs:35:41
[INFO] [stdout]    |
[INFO] [stdout] 35 |             SizingStrategy::SignalBased(func) => {
[INFO] [stdout]    |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]   --> src/backtest/portfolio.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 let (action, side) = match maybe_pos {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_SAVE_DIR` is never used
[INFO] [stdout]  --> src/parsing/mod.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const DATA_SAVE_DIR: &str = "../../data/";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPSILON` is never used
[INFO] [stdout]    --> src/indicators/indicators/acv.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 |         const EPSILON: f64 = 2247135.5315805604;  // 77^2.3
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `highLow` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod highLow;
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `high_low`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `movingAverage` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod movingAverage;
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `moving_average`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]   --> src/backtest/portfolio.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 let (action, side) = match maybe_pos {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_SAVE_DIR` is never used
[INFO] [stdout]  --> src/parsing/mod.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const DATA_SAVE_DIR: &str = "../../data/";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPSILON` is never used
[INFO] [stdout]    --> src/indicators/indicators/acv.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 |         const EPSILON: f64 = 2247135.5315805604;  // 77^2.3
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `highLow` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod highLow;
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `high_low`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `movingAverage` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod movingAverage;
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `moving_average`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/position/sizing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::Config;
[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: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/sizing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/position/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::indicators::indicator::Indicator`
[INFO] [stdout]  --> src/position/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::indicators::indicator::Indicator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/position.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `status::Status`
[INFO] [stdout]  --> src/position/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use status::Status;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order::Order`
[INFO] [stdout]   --> src/position/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use order::Order;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/indicators/window.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Datelike`
[INFO] [stdout]  --> src/indicators/window.rs:2:39
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Duration, Utc, Datelike, Timelike};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `variance::VarianceTracker`
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use variance::VarianceTracker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `history::HistoryTracker`
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use history::HistoryTracker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `acv::ACV`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use acv::ACV;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adv::ADV`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use adv::ADV;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HighOfPeriod` and `LowOfPeriod`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use highLow::{HighOfPeriod, LowOfPeriod};
[INFO] [stdout]    |                   ^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rsi::RSI`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use rsi::RSI;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vwap::VWAP`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use vwap::VWAP;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `momentum::Momentum`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use momentum::Momentum;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/strategy.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::Config;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_mo_timestamp`, `get_pmc_timestamp`, and `get_pmo_timestamp`
[INFO] [stdout]  --> src/utils/mod.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use time::{get_mc_timestamp, get_mo_timestamp, get_pmo_timestamp, get_pmc_timestamp};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/position/sizing.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::Config;
[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: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/sizing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/position/position.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::indicators::indicator::Indicator`
[INFO] [stdout]  --> src/position/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::indicators::indicator::Indicator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/position/position.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `status::Status`
[INFO] [stdout]  --> src/position/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use status::Status;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `order::Order`
[INFO] [stdout]   --> src/position/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use order::Order;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]  --> src/indicators/window.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::VecDeque;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Datelike`
[INFO] [stdout]  --> src/indicators/window.rs:2:39
[INFO] [stdout]   |
[INFO] [stdout] 2 | use chrono::{DateTime, Duration, Utc, Datelike, Timelike};
[INFO] [stdout]   |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `variance::VarianceTracker`
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use variance::VarianceTracker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `history::HistoryTracker`
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use history::HistoryTracker;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `acv::ACV`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use acv::ACV;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adv::ADV`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use adv::ADV;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HighOfPeriod` and `LowOfPeriod`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use highLow::{HighOfPeriod, LowOfPeriod};
[INFO] [stdout]    |                   ^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rsi::RSI`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use rsi::RSI;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vwap::VWAP`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use vwap::VWAP;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `momentum::Momentum`
[INFO] [stdout]   --> src/indicators/indicators/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use momentum::Momentum;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::ohlcv::Row`
[INFO] [stdout]  --> src/strategy.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::ohlcv::Row;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::Config`
[INFO] [stdout]  --> src/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::config::Config;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_mo_timestamp`, `get_pmc_timestamp`, and `get_pmo_timestamp`
[INFO] [stdout]  --> src/utils/mod.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use time::{get_mc_timestamp, get_mo_timestamp, get_pmo_timestamp, get_pmc_timestamp};
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/position/sizing.rs:35:41
[INFO] [stdout]    |
[INFO] [stdout] 35 |             SizingStrategy::SignalBased(func) => {
[INFO] [stdout]    |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `func`
[INFO] [stdout]   --> src/position/sizing.rs:35:41
[INFO] [stdout]    |
[INFO] [stdout] 35 |             SizingStrategy::SignalBased(func) => {
[INFO] [stdout]    |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_func`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]   --> src/backtest/portfolio.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 let (action, side) = match maybe_pos {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_SAVE_DIR` is never used
[INFO] [stdout]  --> src/parsing/mod.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const DATA_SAVE_DIR: &str = "../../data/";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Conditionable` is never used
[INFO] [stdout]  --> src/position/condition.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Conditionable {
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Condition` is never constructed
[INFO] [stdout]   --> src/position/condition.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Condition<L: Conditionable, R: Conditionable> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `cross_above`, and `cross_below` are never used
[INFO] [stdout]   --> src/position/condition.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl<L: Conditionable, R: Conditionable> Condition<L,R>{
[INFO] [stdout]    | ------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new(left: L, right: R) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn cross_above(&mut self, row: &Row) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn cross_below(&mut self, row: &Row) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SizingStrategy` is never used
[INFO] [stdout]  --> src/position/sizing.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SizingStrategy {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]   --> src/position/sizing.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl SizingStrategy {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 20 |     /// Calculate the number of shares to trade
[INFO] [stdout] 21 |     pub fn calculate(&self, price: f64, account_value: f64, _signal: Option<&Signal>) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Order` is never constructed
[INFO] [stdout]  --> src/position/order.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Order {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check` are never used
[INFO] [stdout]   --> src/position/order.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Order {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(order_type: OrderType, open_or_close: OrderAction, 
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn check(&mut self, row: &Row) -> Result<(), OrderError> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderAction` is never used
[INFO] [stdout]    --> src/position/order.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum OrderAction {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderDistance` is never used
[INFO] [stdout]    --> src/position/order.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum OrderDistance {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]    --> src/position/order.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl OrderDistance {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 137 |     /// Calculate the order price given current price and side
[INFO] [stdout] 138 |     pub fn calculate(&self, current_price: f64, order_type: OrderType, _atr: Option<f64>) -> Result<f64, OrderError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/position/order.rs:173:10
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_buy`, `is_sell`, and `validate` are never used
[INFO] [stdout]    --> src/position/order.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl OrderType {    
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 187 |     /// Check if this is a buy order
[INFO] [stdout] 188 |     pub fn is_buy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn is_sell(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn validate(&self, current_price: f64) -> Result<(), OrderError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderTimeline` is never used
[INFO] [stdout]    --> src/position/order.rs:234:10
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub enum OrderTimeline {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderError` is never used
[INFO] [stdout]    --> src/position/order.rs:241:10
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub enum OrderError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionError` is never used
[INFO] [stdout]  --> src/position/position.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum PositionError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionState` is never used
[INFO] [stdout]   --> src/position/position.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum PositionState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/position/position.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `close`, `pnl`, `pnl_percent`, and `unrealized_pnl` are never used
[INFO] [stdout]    --> src/position/position.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl Position {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  52 |     /// Create a new position
[INFO] [stdout]  53 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn close(&mut self, exit_price: f64, exit_timestamp: i64) -> Result<(), PositionError> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn pnl(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pnl_percent(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unrealized_pnl(&self, current_price: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Action` is never used
[INFO] [stdout]   --> src/position/strategy.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Action {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionStrategy` is never constructed
[INFO] [stdout]   --> src/position/strategy.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PositionStrategy<L: Conditionable,R: Conditionable> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/position/strategy.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<L: Conditionable, R:Conditionable> PositionStrategy<L,R> {
[INFO] [stdout]    | ------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(condition: Condition<L,R>, sizing: SizingStrategy, order: OrderType, action: Action, name: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Side` is never used
[INFO] [stdout]  --> src/position/side.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Side{
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `to_string` is never used
[INFO] [stdout]   --> src/position/side.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Side{
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn to_string(side: &Self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Status` is never constructed
[INFO] [stdout]  --> src/position/status.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Status {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/position/status.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Status {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(order: Order) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]  --> src/config.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Config {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketHours` is never constructed
[INFO] [stdout]   --> src/config.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MarketHours {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `earliest_valid_time`, `latest_valid_time`, and `is_valid_time` are never used
[INFO] [stdout]   --> src/config.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl MarketHours {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 65 |     /// Get the earliest valid time for the trading session on a given day
[INFO] [stdout] 66 |     pub fn earliest_valid_time(&self) -> NaiveTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn latest_valid_time(&self) -> NaiveTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_valid_time(&self, time: NaiveTime) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplacementStrategy` is never used
[INFO] [stdout]   --> src/config.rs:93:10
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub enum ReplacementStrategy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_CONFIG` is never used
[INFO] [stdout]    --> src/config.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | static GLOBAL_CONFIG: OnceLock<RwLock<Config>> = OnceLock::new();
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_config` is never used
[INFO] [stdout]    --> src/config.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn init_config(config: Config) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config` is never used
[INFO] [stdout]    --> src/config.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn get_config() -> Config {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Window` is never used
[INFO] [stdout]  --> src/indicators/window.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Window {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `to_duration`, `to_bars`, `contains`, `rounded`, `get_start_time`, and `round_to_day_start` are never used
[INFO] [stdout]    --> src/indicators/window.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl Window {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  23 |     /// Convert the time window to a Duration (for time-based windows)
[INFO] [stdout]  24 |     pub fn to_duration(&self) -> Option<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn to_bars(&self) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn contains(&self, reference_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn rounded(self) -> Window {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn get_start_time(&self, current_time: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn round_to_day_start(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WindowTracker` is never used
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub trait WindowTracker {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExtremumTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/extremum.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ExtremumTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_max`, `new_min`, and `should_replace` are never used
[INFO] [stdout]    --> src/indicators/trackers/extremum.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl ExtremumTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn new(window: Window, track_max: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn new_max(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn new_min(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn should_replace(&self, new_value: f64, old_value: f64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SumTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/sum.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SumTracker {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sum`, `count`, and `average` are never used
[INFO] [stdout]   --> src/indicators/trackers/sum.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl SumTracker {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn sum(&self) -> f64 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn average(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VarianceTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/variance.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct VarianceTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `mean`, `variance`, `std_dev`, and `recalculate` are never used
[INFO] [stdout]   --> src/indicators/trackers/variance.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl VarianceTracker {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 29 |     /// Create a new VarianceTracker
[INFO] [stdout] 30 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn mean(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn variance(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn std_dev(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn recalculate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangeTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/change.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ChangeTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/indicators/trackers/change.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl ChangeTracker {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn new(window: Window, use_percentage: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn absolute(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn percentage(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn changes(&self) -> &VecDeque<(i64, f64)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn sum(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn average(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn sum_gains(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn sum_losses(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn average_gain(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn average_loss(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn in_window(&self, current_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HistoryTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/history.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct HistoryTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `values`, `len`, `is_empty`, and `in_window` are never used
[INFO] [stdout]   --> src/indicators/trackers/history.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl HistoryTracker {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 27 |     /// Create a new HistoryTracker
[INFO] [stdout] 28 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn values(&self) -> &VecDeque<(i64, f64)> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn in_window(&self, current_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CommonField` is never used
[INFO] [stdout]  --> src/indicators/fields.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum CommonField{
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extract` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl CommonField {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 17 |     pub fn extract(&self, row: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PriceField` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum PriceField{
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extract` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl PriceField {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 42 |     pub fn extract(&self, row: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Indicator` is never used
[INFO] [stdout]   --> src/indicators/indicator.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Indicator: std::fmt::Debug {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ACV` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/acv.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ACV {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side`
[INFO] [stdout]   --> src/backtest/portfolio.rs:64:30
[INFO] [stdout]    |
[INFO] [stdout] 64 |                 let (action, side) = match maybe_pos {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_side`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/indicators/indicators/acv.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl ACV {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn new(days: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn with_premarket_volume(days: usize, premarket_vol: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn set_premarket_volume(&mut self, volume: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn on_market_close(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn current_volume(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn adv(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn volume_distribution(interval: i64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     fn timestamp_to_interval(timestamp: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ADV` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/adv.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct ADV {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `on_market_close`, and `current_day_volume` are never used
[INFO] [stdout]   --> src/indicators/indicators/adv.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ADV {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn new(days: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn on_market_close(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn current_day_volume(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HighOfPeriod` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct HighOfPeriod {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl HighOfPeriod {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LowOfPeriod` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct LowOfPeriod {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl LowOfPeriod {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 52 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingAverage` is never constructed
[INFO] [stdout]  --> src/indicators/indicators/movingAverage.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MovingAverage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/movingAverage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MovingAverage {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Momentum` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/momentum.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Momentum {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/momentum.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Momentum {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(window: Window, field: CommonField)->Self{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RSI` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/rsi.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RSI {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `close` are never used
[INFO] [stdout]   --> src/indicators/indicators/rsi.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RSI {
[INFO] [stdout]    | -------- associated functions in this implementation
[INFO] [stdout] 19 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn close(window: Window) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]  --> src/indicators/indicators/vwap.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct VWAP {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/vwap.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl VWAP {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(window: Window, price_field: Option<PriceField>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLog` is never constructed
[INFO] [stdout]  --> src/types/log.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TradeLog {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/types/log.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl TradeLog {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Row` is never constructed
[INFO] [stdout]  --> src/types/ohlcv.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Row {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OHLCV` is never used
[INFO] [stdout]   --> src/types/ohlcv.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum OHLCV {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/types/ohlcv.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Row {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 23 |     /// Convert a timestamp (nanoseconds) to a DateTime<Utc>
[INFO] [stdout] 24 |     pub fn timestamp_to_datetime(timestamp: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn datetime(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_field(&self, field: OHLCV) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn typical_price(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn weighted_close(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn median_price(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn true_range(&self, previous: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DataWindow` is never used
[INFO] [stdout]   --> src/types/ohlcv.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub trait DataWindow {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `ALL` is never used
[INFO] [stdout]    --> src/types/ohlcv.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl OHLCV {
[INFO] [stdout]     | ---------- associated constant in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub const ALL: &'static [OHLCV] = &[OHLCV::Open, OHLCV::High, OHLCV::Low, OHLCV::Close, OHLCV::Volume];
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickerContext` is never constructed
[INFO] [stdout]  --> src/backtest/context.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct TickerContext {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_indicator`, `update`, `get_indicator`, `get_indicator_values`, and `get_indicator_mut` are never used
[INFO] [stdout]   --> src/backtest/context.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl TickerContext {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(ticker: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn add_indicator(&mut self, name: &str, indicator: Box<dyn Indicator>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_indicator(&self, name: &str) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_indicator_values(&self) -> HashMap<String, f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_indicator_mut(&mut self, name: &str) -> Option<&mut Box<dyn Indicator>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PendingOrder` is never constructed
[INFO] [stdout]   --> src/backtest/portfolio.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PendingOrder {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Portfolio` is never constructed
[INFO] [stdout]   --> src/backtest/portfolio.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Portfolio {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/backtest/portfolio.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Portfolio {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  28 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn update_prices(&mut self, _ticker: &str, _price: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn process_signal(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     fn handle_replacement_strategy(&mut self, pending: PendingOrder) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn get_oldest_position_ticker(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn get_newest_position_ticker(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn check_orders(&mut self, row: &Row) -> Vec<TradeLog> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn execute_trade(&mut self, pending: PendingOrder, fill_price: f64) -> Option<TradeLog> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestEngine` is never constructed
[INFO] [stdout]  --> src/backtest/engine.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct BacktestEngine {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `process_row` are never used
[INFO] [stdout]   --> src/backtest/engine.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl BacktestEngine {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(_config: Config, strategy_factory: Box<dyn Fn() -> Box<dyn Strategy>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn process_row(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalType` is never used
[INFO] [stdout]  --> src/backtest/signal.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum SignalType {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Signal` is never constructed
[INFO] [stdout]   --> src/backtest/signal.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Signal {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_trigger` and `new_value` are never used
[INFO] [stdout]   --> src/backtest/signal.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Signal {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 20 |     pub fn new_trigger(ticker: String, order_type: OrderType) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn new_value(ticker: String, value: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Strategy` is never used
[INFO] [stdout]  --> src/strategy.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Strategy {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaMomentumStrategy` is never constructed
[INFO] [stdout]  --> src/strategies/maMomentum.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MaMomentumStrategy {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/strategies/maMomentum.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MaMomentumStrategy {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_ma_momentum` is never used
[INFO] [stdout]   --> src/strategies/maMomentum.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn create_ma_momentum() -> Box<dyn Strategy> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_time_to_timestamp` is never used
[INFO] [stdout]  --> src/utils/time.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn apply_time_to_timestamp(timestamp: i64, target_time: chrono::NaiveTime) -> i64 {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mc_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn get_mc_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mo_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_mo_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pmo_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn get_pmo_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pmc_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn get_pmc_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `highLow` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod highLow;
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `high_low`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `movingAverage` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod movingAverage;
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `moving_average`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `maMomentum` should have a snake case name
[INFO] [stdout]  --> src/strategies/mod.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod maMomentum;
[INFO] [stdout]   |         ^^^^^^^^^^ help: convert the identifier to snake case: `ma_momentum`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DATA_SAVE_DIR` is never used
[INFO] [stdout]  --> src/parsing/mod.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const DATA_SAVE_DIR: &str = "../../data/";
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Conditionable` is never used
[INFO] [stdout]  --> src/position/condition.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Conditionable {
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Condition` is never constructed
[INFO] [stdout]   --> src/position/condition.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Condition<L: Conditionable, R: Conditionable> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `cross_above`, and `cross_below` are never used
[INFO] [stdout]   --> src/position/condition.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl<L: Conditionable, R: Conditionable> Condition<L,R>{
[INFO] [stdout]    | ------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new(left: L, right: R) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn cross_above(&mut self, row: &Row) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn cross_below(&mut self, row: &Row) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SizingStrategy` is never used
[INFO] [stdout]  --> src/position/sizing.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum SizingStrategy {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]   --> src/position/sizing.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl SizingStrategy {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 20 |     /// Calculate the number of shares to trade
[INFO] [stdout] 21 |     pub fn calculate(&self, price: f64, account_value: f64, _signal: Option<&Signal>) -> i64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Order` is never constructed
[INFO] [stdout]  --> src/position/order.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Order {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check` are never used
[INFO] [stdout]   --> src/position/order.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Order {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(order_type: OrderType, open_or_close: OrderAction, 
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn check(&mut self, row: &Row) -> Result<(), OrderError> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderAction` is never used
[INFO] [stdout]    --> src/position/order.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub enum OrderAction {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderDistance` is never used
[INFO] [stdout]    --> src/position/order.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum OrderDistance {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate` is never used
[INFO] [stdout]    --> src/position/order.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl OrderDistance {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 137 |     /// Calculate the order price given current price and side
[INFO] [stdout] 138 |     pub fn calculate(&self, current_price: f64, order_type: OrderType, _atr: Option<f64>) -> Result<f64, OrderError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderType` is never used
[INFO] [stdout]    --> src/position/order.rs:173:10
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub enum OrderType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_buy`, `is_sell`, and `validate` are never used
[INFO] [stdout]    --> src/position/order.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl OrderType {    
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 187 |     /// Check if this is a buy order
[INFO] [stdout] 188 |     pub fn is_buy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn is_sell(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn validate(&self, current_price: f64) -> Result<(), OrderError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderTimeline` is never used
[INFO] [stdout]    --> src/position/order.rs:234:10
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub enum OrderTimeline {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OrderError` is never used
[INFO] [stdout]    --> src/position/order.rs:241:10
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub enum OrderError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionError` is never used
[INFO] [stdout]  --> src/position/position.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum PositionError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PositionState` is never used
[INFO] [stdout]   --> src/position/position.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum PositionState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/position/position.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `close`, `pnl`, `pnl_percent`, and `unrealized_pnl` are never used
[INFO] [stdout]    --> src/position/position.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl Position {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  52 |     /// Create a new position
[INFO] [stdout]  53 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn close(&mut self, exit_price: f64, exit_timestamp: i64) -> Result<(), PositionError> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn pnl(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn pnl_percent(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn unrealized_pnl(&self, current_price: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Action` is never used
[INFO] [stdout]   --> src/position/strategy.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Action {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionStrategy` is never constructed
[INFO] [stdout]   --> src/position/strategy.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PositionStrategy<L: Conditionable,R: Conditionable> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/position/strategy.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<L: Conditionable, R:Conditionable> PositionStrategy<L,R> {
[INFO] [stdout]    | ------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(condition: Condition<L,R>, sizing: SizingStrategy, order: OrderType, action: Action, name: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Side` is never used
[INFO] [stdout]  --> src/position/side.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Side{
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `to_string` is never used
[INFO] [stdout]   --> src/position/side.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Side{
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn to_string(side: &Self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Status` is never constructed
[INFO] [stdout]  --> src/position/status.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Status {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/position/status.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Status {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(order: Order) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Config` is never constructed
[INFO] [stdout]  --> src/config.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Config {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarketHours` is never constructed
[INFO] [stdout]   --> src/config.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct MarketHours {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `earliest_valid_time`, `latest_valid_time`, and `is_valid_time` are never used
[INFO] [stdout]   --> src/config.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl MarketHours {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 65 |     /// Get the earliest valid time for the trading session on a given day
[INFO] [stdout] 66 |     pub fn earliest_valid_time(&self) -> NaiveTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn latest_valid_time(&self) -> NaiveTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_valid_time(&self, time: NaiveTime) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplacementStrategy` is never used
[INFO] [stdout]   --> src/config.rs:93:10
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub enum ReplacementStrategy {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_CONFIG` is never used
[INFO] [stdout]    --> src/config.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | static GLOBAL_CONFIG: OnceLock<RwLock<Config>> = OnceLock::new();
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_config` is never used
[INFO] [stdout]    --> src/config.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn init_config(config: Config) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_config` is never used
[INFO] [stdout]    --> src/config.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn get_config() -> Config {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Minutes`, `Hours`, `HoursRounded`, `Days`, `DaysRounded`, and `Bars` are never constructed
[INFO] [stdout]   --> src/indicators/window.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum Window {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout]  8 |     /// Number of minutes of data to look back
[INFO] [stdout]  9 |     Minutes(i64),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 10 |     /// Number of hours of data to look back
[INFO] [stdout] 11 |     Hours(i64),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 12 |     /// Number of hours, rounded to start of hour
[INFO] [stdout] 13 |     HoursRounded(i64),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 14 |     /// Number of trading days to look back
[INFO] [stdout] 15 |     Days(i64),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     /// Number of trading days, rounded to market open
[INFO] [stdout] 17 |     DaysRounded(i64),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 18 |     /// Raw number of bars/candles to look back
[INFO] [stdout] 19 |     Bars(usize),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Window` 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 `to_duration`, `to_bars`, `contains`, `rounded`, `get_start_time`, and `round_to_day_start` are never used
[INFO] [stdout]    --> src/indicators/window.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl Window {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  23 |     /// Convert the time window to a Duration (for time-based windows)
[INFO] [stdout]  24 |     pub fn to_duration(&self) -> Option<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn to_bars(&self) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn contains(&self, reference_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn rounded(self) -> Window {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn get_start_time(&self, current_time: DateTime<Utc>) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn round_to_day_start(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WindowTracker` is never used
[INFO] [stdout]   --> src/indicators/trackers/mod.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub trait WindowTracker {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ExtremumTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/extremum.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct ExtremumTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_max`, `new_min`, and `should_replace` are never used
[INFO] [stdout]    --> src/indicators/trackers/extremum.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl ExtremumTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn new(window: Window, track_max: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn new_max(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn new_min(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn should_replace(&self, new_value: f64, old_value: f64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `values`, `sum`, and `window` are never read
[INFO] [stdout]   --> src/indicators/trackers/sum.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SumTracker {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 21 |     /// Deque of (timestamp, value) pairs in the window
[INFO] [stdout] 22 |     values: VecDeque<(i64, f64)>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     sum: f64,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     window: Window,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SumTracker` 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`, `sum`, `count`, and `average` are never used
[INFO] [stdout]   --> src/indicators/trackers/sum.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl SumTracker {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn sum(&self) -> f64 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn average(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VarianceTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/variance.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct VarianceTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `mean`, `variance`, `std_dev`, and `recalculate` are never used
[INFO] [stdout]   --> src/indicators/trackers/variance.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl VarianceTracker {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 29 |     /// Create a new VarianceTracker
[INFO] [stdout] 30 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn mean(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn variance(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn std_dev(&self) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn recalculate(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangeTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/change.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct ChangeTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/indicators/trackers/change.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl ChangeTracker {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn new(window: Window, use_percentage: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn absolute(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn percentage(window: Window) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn changes(&self) -> &VecDeque<(i64, f64)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn sum(&self) -> f64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn average(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn sum_gains(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn sum_losses(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn average_gain(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn average_loss(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn in_window(&self, current_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HistoryTracker` is never constructed
[INFO] [stdout]   --> src/indicators/trackers/history.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct HistoryTracker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `values`, `len`, `is_empty`, and `in_window` are never used
[INFO] [stdout]   --> src/indicators/trackers/history.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl HistoryTracker {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 27 |     /// Create a new HistoryTracker
[INFO] [stdout] 28 |     pub fn new(window: Window) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn values(&self) -> &VecDeque<(i64, f64)> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn in_window(&self, current_timestamp: i64, check_timestamp: i64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CommonField` is never used
[INFO] [stdout]  --> src/indicators/fields.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum CommonField{
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extract` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl CommonField {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 17 |     pub fn extract(&self, row: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PriceField` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum PriceField{
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extract` is never used
[INFO] [stdout]   --> src/indicators/fields.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl PriceField {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 42 |     pub fn extract(&self, row: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Indicator` is never used
[INFO] [stdout]   --> src/indicators/indicator.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub trait Indicator: std::fmt::Debug {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_day_tracker`, `daily_avg_tracker`, `last_day_timestamp`, and `premarket_volume` are never read
[INFO] [stdout]   --> src/indicators/indicators/acv.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct ACV {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 36 |     /// Tracker for the current day's volume
[INFO] [stdout] 37 |     current_day_tracker: SumTracker,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     daily_avg_tracker: SumTracker,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     last_day_timestamp: Option<i64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     premarket_volume: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ACV` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/indicators/indicators/acv.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl ACV {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn new(days: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn with_premarket_volume(days: usize, premarket_vol: f64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn set_premarket_volume(&mut self, volume: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn on_market_close(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn current_volume(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn adv(&self) -> Option<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     fn timestamp_to_interval(timestamp: i64) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EPSILON` is never used
[INFO] [stdout]    --> src/indicators/indicators/acv.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 |         const EPSILON: f64 = 2247135.5315805604;  // 77^2.3
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ADV` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/adv.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct ADV {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `on_market_close`, and `current_day_volume` are never used
[INFO] [stdout]   --> src/indicators/indicators/adv.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ADV {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn new(days: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn on_market_close(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn current_day_volume(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HighOfPeriod` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct HighOfPeriod {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl HighOfPeriod {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LowOfPeriod` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct LowOfPeriod {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/highLow.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl LowOfPeriod {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 52 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingAverage` is never constructed
[INFO] [stdout]  --> src/indicators/indicators/movingAverage.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MovingAverage {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/movingAverage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MovingAverage {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 15 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Momentum` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/momentum.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Momentum {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/momentum.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Momentum {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(window: Window, field: CommonField)->Self{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RSI` is never constructed
[INFO] [stdout]   --> src/indicators/indicators/rsi.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct RSI {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `close` are never used
[INFO] [stdout]   --> src/indicators/indicators/rsi.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl RSI {
[INFO] [stdout]    | -------- associated functions in this implementation
[INFO] [stdout] 19 |     pub fn new(window: Window, field: CommonField) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn close(window: Window) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VWAP` is never constructed
[INFO] [stdout]  --> src/indicators/indicators/vwap.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct VWAP {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/indicators/indicators/vwap.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl VWAP {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new(window: Window, price_field: Option<PriceField>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TradeLog` is never constructed
[INFO] [stdout]  --> src/types/log.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TradeLog {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/types/log.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl TradeLog {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Row` is never constructed
[INFO] [stdout]  --> src/types/ohlcv.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Row {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OHLCV` is never used
[INFO] [stdout]   --> src/types/ohlcv.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum OHLCV {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/types/ohlcv.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Row {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 23 |     /// Convert a timestamp (nanoseconds) to a DateTime<Utc>
[INFO] [stdout] 24 |     pub fn timestamp_to_datetime(timestamp: i64) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn datetime(&self) -> DateTime<Utc> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_field(&self, field: OHLCV) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn typical_price(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn weighted_close(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn median_price(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn true_range(&self, previous: &Row) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DataWindow` is never used
[INFO] [stdout]   --> src/types/ohlcv.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub trait DataWindow {
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `ALL` is never used
[INFO] [stdout]    --> src/types/ohlcv.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl OHLCV {
[INFO] [stdout]     | ---------- associated constant in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub const ALL: &'static [OHLCV] = &[OHLCV::Open, OHLCV::High, OHLCV::Low, OHLCV::Close, OHLCV::Volume];
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TickerContext` is never constructed
[INFO] [stdout]  --> src/backtest/context.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct TickerContext {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_indicator`, `update`, `get_indicator`, `get_indicator_values`, and `get_indicator_mut` are never used
[INFO] [stdout]   --> src/backtest/context.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl TickerContext {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(ticker: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn add_indicator(&mut self, name: &str, indicator: Box<dyn Indicator>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn update(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_indicator(&self, name: &str) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_indicator_values(&self) -> HashMap<String, f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_indicator_mut(&mut self, name: &str) -> Option<&mut Box<dyn Indicator>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PendingOrder` is never constructed
[INFO] [stdout]   --> src/backtest/portfolio.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PendingOrder {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Portfolio` is never constructed
[INFO] [stdout]   --> src/backtest/portfolio.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Portfolio {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/backtest/portfolio.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Portfolio {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  28 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub fn update_prices(&mut self, _ticker: &str, _price: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn process_signal(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     fn handle_replacement_strategy(&mut self, pending: PendingOrder) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn get_oldest_position_ticker(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn get_newest_position_ticker(&self) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn check_orders(&mut self, row: &Row) -> Vec<TradeLog> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn execute_trade(&mut self, pending: PendingOrder, fill_price: f64) -> Option<TradeLog> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BacktestEngine` is never constructed
[INFO] [stdout]  --> src/backtest/engine.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct BacktestEngine {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `process_row` are never used
[INFO] [stdout]   --> src/backtest/engine.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl BacktestEngine {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(_config: Config, strategy_factory: Box<dyn Fn() -> Box<dyn Strategy>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn process_row(&mut self, row: &Row) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SignalType` is never used
[INFO] [stdout]  --> src/backtest/signal.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum SignalType {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Signal` is never constructed
[INFO] [stdout]   --> src/backtest/signal.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Signal {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_trigger` and `new_value` are never used
[INFO] [stdout]   --> src/backtest/signal.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Signal {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 20 |     pub fn new_trigger(ticker: String, order_type: OrderType) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn new_value(ticker: String, value: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Strategy` is never used
[INFO] [stdout]  --> src/strategy.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Strategy {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaMomentumStrategy` is never constructed
[INFO] [stdout]  --> src/strategies/maMomentum.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MaMomentumStrategy {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/strategies/maMomentum.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl MaMomentumStrategy {
[INFO] [stdout]    | ----------------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_ma_momentum` is never used
[INFO] [stdout]   --> src/strategies/maMomentum.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn create_ma_momentum() -> Box<dyn Strategy> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_time_to_timestamp` is never used
[INFO] [stdout]  --> src/utils/time.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn apply_time_to_timestamp(timestamp: i64, target_time: chrono::NaiveTime) -> i64 {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mc_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn get_mc_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mo_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_mo_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pmo_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn get_pmo_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pmc_timestamp` is never used
[INFO] [stdout]   --> src/utils/time.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn get_pmc_timestamp(timestamp: i64) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `highLow` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod highLow;
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `high_low`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `movingAverage` should have a snake case name
[INFO] [stdout]  --> src/indicators/indicators/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod movingAverage;
[INFO] [stdout]   |         ^^^^^^^^^^^^^ help: convert the identifier to snake case: `moving_average`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `maMomentum` should have a snake case name
[INFO] [stdout]  --> src/strategies/mod.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod maMomentum;
[INFO] [stdout]   |         ^^^^^^^^^^ help: convert the identifier to snake case: `ma_momentum`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 06s
[INFO] running `Command { std: "docker" "inspect" "3f3dcafb69a87edc3bb2975ea8d413e1c94fea690dc97f04347b58d1a2284287", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3f3dcafb69a87edc3bb2975ea8d413e1c94fea690dc97f04347b58d1a2284287", kill_on_drop: false }`
[INFO] [stdout] 3f3dcafb69a87edc3bb2975ea8d413e1c94fea690dc97f04347b58d1a2284287
