class_docstr: A stream operator that computes an exponential weighted moving average
  on a given float stream.
  
  Parameters
  ----------
  alpha : float
      The smoothing factor :math:`\alpha` directly,
      :math:`0 < \alpha \leq 1`.
  adjust : bool
      Divide by decaying adjustment factor in beginning periods to account
      for imbalance in relative weightings (viewing EWMA as a moving average).
  ignore_na : bool
      Ignore missing values when calculating weights.
  min_periods : int
      Minimum number of observations in window required to have a value
      (otherwise result is NA).
  
  References
  ----------
  .. [1] https://github.com/pandas-dev/pandas/blob/d9fff2792bf16178d4e450fe7384244e50635733/pandas/_libs/window/aggregations.pyx#L1801
class_docstr_tok: ["A","stream","operator","that","computes","an","exponential","weighted","moving","average","on","a","given","float","stream",".","Parameters","--","--","--","--","--","alpha",":","float","The","smoothing","factor",":","math",":","`","\\alpha","`","directly",",",":","math",":","`","0","<","\\alpha","\\leq","1","`",".","adjust",":","bool","Divide","by","decaying","adjustment","factor","in","beginning","periods","to","account","for","imbalance","in","relative","weightings","(","viewing","EWMA","as","a","moving","average",")",".","ignore_na",":","bool","Ignore","missing","values","when","calculating","weights",".","min_periods",":","int","Minimum","number","of","observations","in","window","required","to","have","a","value","(","otherwise","result","is","NA",")",".","References","--","--","--","--","--","..","[","1","]","https",":","\/\/github.com\/pandas-dev\/pandas\/blob\/d9fff2792bf16178d4e450fe7384244e50635733\/pandas\/_libs\/window\/aggregations.pyx","#","L1801"]
code: def __init__(
      self,
      alpha: float,
      adjust: bool,
      ignore_na: bool,
      min_periods: int,
  ) -> None:
      super().__init__()
      self.alpha = alpha
      self.adjust = adjust
      self.ignore_na = ignore_na
      self.min_periods = max(min_periods, 1)
  
      self.i = 0
      self.n = 0
  
      self.avg = None
      self.factor = 1 - alpha
      self.new_wt = 1 if self.adjust else self.alpha
      self.old_wt = 1
  
imports: from typing import List, Tuple
  import numpy
  from tensortrade.feed.core.base import Stream
  from tensortrade.feed.api.float import Float
label_desc: Use image node_id 1 to create a new ExponentialWeightedMovingAverage object from inherited base classes: Stream with example: obj = ExponentialWeightedMovingAverage(alpha, adjust, ignore_na, min_periods)