@@ -48,7 +48,7 @@ pub fn calculate_vwap(df: &DataFrame, lookback: usize) -> PolarsResult<Series> {
4848
4949 // Calculate price * volume (cumulative money flow)
5050 let mut price_volume = Vec :: with_capacity ( df. height ( ) ) ;
51- for i in 0 .. df. height ( ) {
51+ for ( i , _ ) in typical_prices . iter ( ) . enumerate ( ) . take ( df. height ( ) ) {
5252 price_volume. push ( typical_prices[ i] * volume. get ( i) . unwrap_or ( 0.0 ) ) ;
5353 }
5454
@@ -60,8 +60,8 @@ pub fn calculate_vwap(df: &DataFrame, lookback: usize) -> PolarsResult<Series> {
6060 let mut cumulative_pv = 0.0 ;
6161 let mut cumulative_volume = 0.0 ;
6262
63- for i in 0 .. df. height ( ) {
64- cumulative_pv += price_volume [ i ] ;
63+ for ( i , & pv ) in price_volume . iter ( ) . enumerate ( ) . take ( df. height ( ) ) {
64+ cumulative_pv += pv ;
6565 cumulative_volume += volume. get ( i) . unwrap_or ( 0.0 ) ;
6666
6767 if cumulative_volume > 0.0 {
@@ -78,8 +78,8 @@ pub fn calculate_vwap(df: &DataFrame, lookback: usize) -> PolarsResult<Series> {
7878 let mut window_pv = 0.0 ;
7979 let mut window_volume = 0.0 ;
8080
81- for j in start_idx..=i {
82- window_pv += price_volume [ j ] ;
81+ for ( j , & pv ) in price_volume . iter ( ) . enumerate ( ) . take ( i + 1 ) . skip ( start_idx ) {
82+ window_pv += pv ;
8383 window_volume += volume. get ( j) . unwrap_or ( 0.0 ) ;
8484 }
8585
0 commit comments