ta_lib_in_rust/strategy/mod.rs
1//! # Trading Strategies
2//!
3//! This module provides a collection of trading strategies that combine multiple technical indicators
4//! for making trading decisions.
5//!
6//! ## Available Strategy Types
7//!
8//! - [`daily`](daily/index.html): Strategies optimized for daily timeframe analysis
9//! - [`minute`](minute/index.html): Strategies optimized for minute timeframe (intraday) analysis
10//!
11//! Each strategy module typically provides:
12//!
13//! - A `StrategyParams` struct for configuring the strategy parameters
14//! - A `run_strategy` function that applies the strategy to price data
15//! - A `calculate_performance` function to evaluate the strategy's performance
16//!
17//! ## Example Usage
18//!
19//! ```rust,no_run
20//! use polars::prelude::*;
21//! use ta_lib_in_rust::strategy::{run_strategy_1, StrategyParams1};
22//!
23//! fn main() -> Result<(), PolarsError> {
24//! // Create or load a DataFrame with OHLCV data
25//! let df = DataFrame::default(); // Replace with actual data loading
26//!
27//! // Use default parameters for strategy 1
28//! let params = StrategyParams1::default();
29//!
30//! // Run the strategy
31//! let signals = run_strategy_1(&df, ¶ms)?;
32//!
33//! // Analyze the signals
34//! let close_prices = df.column("close")?;
35//! let (final_value, return_pct, num_trades, win_rate, max_drawdown, profit_factor) =
36//! ta_lib_in_rust::strategy::daily::multi_indicator_daily_1::calculate_performance(
37//! close_prices,
38//! &signals.buy_signals,
39//! &signals.sell_signals,
40//! 10000.0 // Initial capital
41//! );
42//!
43//! println!("Strategy return: {:.2}%", return_pct);
44//! println!("Win rate: {:.2}%", win_rate);
45//!
46//! Ok(())
47//! }
48//! ```
49
50pub mod daily;
51pub mod minute;
52
53// Re-export daily strategies
54pub use daily::multi_indicator_daily_1::{
55 run_strategy as run_strategy_1, StrategyParams as StrategyParams1,
56};
57pub use daily::multi_indicator_daily_2::{
58 run_strategy as run_strategy_222, StrategyParams as StrategyParams222,
59};
60pub use daily::multi_indicator_daily_3::{
61 run_strategy as run_strategy_3, StrategyParams as StrategyParams3,
62};
63pub use daily::multi_indicator_daily_4::{
64 run_strategy as run_strategy_4, StrategyParams as StrategyParams4,
65};
66
67// Re-export minute strategies with shorter names for direct access
68pub use minute::enhanced_minute_strategy as enhanced_minute;
69pub use minute::multi_indicator_minute_1 as minute_1;
70pub use minute::multi_indicator_minute_2 as minute_2;
71pub use minute::multi_indicator_minute_3 as minute_3;
72pub use minute::multi_indicator_minute_4 as minute_4;