
    Q-j                         d dl mZ d dlmZmZmZmZ d dlm	Z
 d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZmZ 	 	 dd	ed
ededededefdZy)    )
float_info)arctannanpi
zeros_like)version)Series)DictLikeInt)Imports)strided_windowv_offsetv_pos_defaultv_seriesv_talibzeroNcloselengthtaliboffsetkwargsreturnc                    t        d      t        |       } | yt        |      }t        |      }|j	                  dd      |j	                  dd      |j	                  dd      |j	                  dd      |j	                  dd      |j	                  d	d      | j                         }t        d
   rQ|rOsMddlm}m	}m
}	m}
m} r ||       }nr |
|       }nr |	|       }nՉr ||       }n ||       }nt        |      }t        ddz         dz  dz   z  dz  dz   z  dz  z  z  z
  fd}t        dk\  r#ddlm}  ||      D cg c]
  } ||       }}nt%        |      D cg c]
  } ||       }}t'        t(        gdz
  z  |z   | j*                        }|dk7  r|j-                  |      }d|v r|j/                  |d   d       d|_        r|xj0                  dz  c_        r|xj0                  dz  c_        r|xj0                  dz  c_        r|xj0                  dz  c_        |xj0                  d z  c_        d|_        |S c c}w c c}w )a  Linear Regression Moving Average

    This indicator is a simplified version of Standard Linear Regression. It is
    one variable rolling regression whereas a Standard Linear Regression is
    between two or more variables.

    Sources:
        * [TA Lib](https://ta-lib.org)

    Parameters:
        close (Series): ```close``` Series
        length (int): The period. Default: ```10```
        talib (bool): If installed, use TA Lib. Default: ```True```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        angle (bool): Returns the slope angle in radians.
            Default: ```False```
        degrees (bool): Return the slope angle in degrees.
            Default: ```False```
        intercept (bool): Return the intercept. Default: ```False```
        r (bool): Return the 'r' correlation. Default: ```False```
        slope (bool): Return the slope. Default: ```False```
        tsf (bool): Return the Time Series Forecast value.
            Default: ```False```
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (Series): 1 column

    Warning:
        TA-Lib Correlation: ```np.float64(0.9985638477660118)```

    Tip:
        Corrective contributions welcome!
       NangleF	interceptdegreesrslopetsfr   r   )	LINEARREGLINEARREG_ANGLELINEARREG_INTERCEPTLINEARREG_SLOPETSF)
timeperiod         ?      c                    | j                         }| z  j                         }|z  |z  z
  z  }r|S |z  |z  z
  z  }r|S 	rt        |      }
r|dt        z  z  }|S rR| | z  j                         }|z  |z  z
  }|z  ||z  z
  z  dz  }t        |      dk(  rt        j
                  }||z  S s|z  |z   S |dz
  z  |z   S )N   r(   r   r'   )sumr   r   r   sfltepsilon)seriesy_sumxy_summbthetay2_sumrnrdr   r   divisorr   r   r   r   r    xx2_sumx_sums            f/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/overlap/linreg.pylinear_regressionz!linreg.<locals>.linear_regressiond   s   JJLE&j%%'F&55=0G;A%&.0G;Aq	S2X%E 6/..0f_uu}4&55=!@AcI8q=BBw),1v:>F!vz2BQ2FF    z1.20.0)sliding_window_view)indexfillnaT)inplaceLINREGr3   r4   a_overlap)r   r   r   r   popto_numpyr   r   r!   r"   r#   r$   r%   r   range
np_versionnumpy.lib.stride_tricksr@   r   r	   r   rA   shiftrB   namecategory)r   r   r   r   r   mode_talnp_closer!   r"   r#   r$   r%   linreglinreg_r>   r@   rF   r   r   r9   r   r   r   r    r:   r;   r<   s    `               @@@@@@@@@@r=   rR   rR      s   R 62&FUF#E}u~HfFJJw&E

;.IjjE*G

3AJJw&E
**UE
"C ~~HwHQ__62F$Uv>F(6BF$Uv>Fu8FX&!VaZ f
+!f*q.)A-6/EEM1	G 	G6 !C.Af/&/&!!$ /&   /=f/&/&!!$ /&  
 !,w6ekkJ {f% 6fX&5 FKssss
KKQvh<KFOMGs   :JJ	)NNN)sysr   r.   numpyr   r   r   r   numpy.versionr   rK   pandasr	   pandas_ta._typingr
   r   pandas_ta.mapsr   pandas_ta.utilsr   r   r   r   r   r   boolrR    r?   r=   <module>r]      sj    " - - /  + "  6:QQQ.2QQ"*Q Qr?   