investfly-sdk 1.6__py3-none-any.whl → 1.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,21 +65,22 @@ class Quote:
65
65
  lastPrice: float
66
66
  prevClose: float| None = None
67
67
  todayChange: float | None = None
68
- todayChangePercent: float | None = None
68
+ todayChangePct: float | None = None
69
69
  dayOpen: float | None = None
70
70
  dayHigh: float | None = None
71
71
  dayLow: float | None = None
72
- dayVolume: int | None = None
72
+ volume: int | None = None
73
73
 
74
74
  @staticmethod
75
75
  def fromDict(jsonDict: Dict[str, Any]) -> Quote:
76
76
  quote = Quote(jsonDict["symbol"], parseDatetime(jsonDict["date"]), jsonDict["lastPrice"])
77
77
  quote.prevClose = jsonDict.get('prevClose')
78
78
  quote.todayChange = jsonDict.get("todayChange")
79
- quote.todayChangePercent = jsonDict.get('todayChangePercent')
79
+ quote.todayChangePct = jsonDict.get('todayChangePct')
80
80
  quote.dayOpen = jsonDict.get('dayOpen')
81
81
  quote.dayHigh = jsonDict.get('dayHigh')
82
82
  quote.dayLow = jsonDict.get('dayLow')
83
+ quote.volume = jsonDict.get('volume')
83
84
  return quote
84
85
 
85
86
  def toDict(self) -> Dict[str, Any]:
@@ -111,13 +112,13 @@ class Quote:
111
112
  raise Exception("DAY_CHANGE not available in Quote")
112
113
  return DatedValue(self.date, self.todayChange)
113
114
  elif quoteField == QuoteField.DAY_CHANGE_PCT:
114
- if self.todayChangePercent is None:
115
+ if self.todayChangePct is None:
115
116
  raise Exception("DAY_CHANGE_PCT value not available in Quote")
116
- return DatedValue(self.date, self.todayChangePercent)
117
+ return DatedValue(self.date, self.todayChangePct)
117
118
  elif quoteField == QuoteField.DAY_VOLUME:
118
- if self.dayVolume is None:
119
+ if self.volume is None:
119
120
  raise Exception("DAY_VOLUME not available in Quote")
120
- return DatedValue(self.date, self.dayVolume)
121
+ return DatedValue(self.date, self.volume)
121
122
  else:
122
123
  raise Exception("Invalid Quote Indicator ID: " + quoteField)
123
124
 
@@ -130,7 +131,7 @@ class Quote:
130
131
  bar['high'] = cast(float, self.dayHigh)
131
132
  bar['low'] = cast(float, self.dayLow)
132
133
  bar['close'] = cast(float, self.lastPrice)
133
- bar['volume'] = cast(int, self.dayVolume)
134
+ bar['volume'] = cast(int, self.volume)
134
135
  return bar
135
136
 
136
137
 
@@ -1,23 +1,26 @@
1
1
  from datetime import datetime
2
- import pytz
3
-
2
+ from zoneinfo import ZoneInfo
4
3
 
5
4
  class ModelUtils:
6
5
 
7
6
  # In Java, using Date includes timezone offset in JSON whereas using LocalDateTime does not
8
7
 
9
- est_tz = pytz.timezone('America/New_York')
8
+ est_zone = ZoneInfo("US/Eastern")
9
+
10
+ @staticmethod
11
+ def convertoToEst(dt: datetime) -> datetime:
12
+ return dt.astimezone(ModelUtils.est_zone)
10
13
 
11
14
  @staticmethod
12
15
  def localizeDateTime(dt: datetime) -> datetime:
13
- return ModelUtils.est_tz.localize(dt)
16
+ return dt.replace(tzinfo=ModelUtils.est_zone)
14
17
 
15
18
 
16
19
  @staticmethod
17
20
  def parseDatetime(date_str: str) -> datetime:
18
21
  dateFormat = '%Y-%m-%dT%H:%M:%S.%f' if "." in date_str else '%Y-%m-%dT%H:%M:%S'
19
22
  dt = datetime.strptime(date_str, dateFormat)
20
- dt = dt.astimezone(ModelUtils.est_tz)
23
+ dt = dt.astimezone(ModelUtils.est_zone)
21
24
  return dt
22
25
 
23
26
  @staticmethod
@@ -27,7 +30,7 @@ class ModelUtils:
27
30
  @staticmethod
28
31
  def parseZonedDatetime(date_str: str) -> datetime:
29
32
  dt = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%f%z')
30
- dt = dt.astimezone(ModelUtils.est_tz)
33
+ dt = dt.astimezone(ModelUtils.est_zone)
31
34
  return dt
32
35
 
33
36
  @staticmethod
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: investfly-sdk
3
- Version: 1.6
3
+ Version: 1.7
4
4
  Summary: Investfly SDK
5
5
  Author-email: "Investfly.com" <admin@investfly.com>
6
6
  License: The MIT License (MIT)
@@ -31,22 +31,20 @@ Classifier: Operating System :: OS Independent
31
31
  Requires-Python: >=3.7
32
32
  Description-Content-Type: text/markdown
33
33
  License-File: LICENSE.txt
34
- Requires-Dist: certifi ==2023.7.22
35
- Requires-Dist: charset-normalizer ==3.2.0
36
- Requires-Dist: idna ==3.4
37
- Requires-Dist: pandas ==2.0.3
38
- Requires-Dist: pandas-stubs ==2.0.3.230814
39
- Requires-Dist: pandas-ta ==0.3.14b0
40
- Requires-Dist: python-dateutil ==2.8.2
41
- Requires-Dist: pytz ==2023.3
42
- Requires-Dist: requests ==2.31.0
43
- Requires-Dist: types-requests ==2.31.0.2
44
- Requires-Dist: six ==1.16.0
45
- Requires-Dist: tzdata ==2023.3
46
- Requires-Dist: urllib3 ==1.26.15
47
- Requires-Dist: numpy ==1.26.4
48
- Requires-Dist: TA-Lib ==0.4.28
49
- Requires-Dist: mypy ==1.12.1
34
+ Requires-Dist: certifi==2023.7.22
35
+ Requires-Dist: charset-normalizer==3.2.0
36
+ Requires-Dist: idna==3.4
37
+ Requires-Dist: pandas==2.0.3
38
+ Requires-Dist: pandas-stubs==2.0.3.230814
39
+ Requires-Dist: python-dateutil==2.8.2
40
+ Requires-Dist: pytz==2023.3
41
+ Requires-Dist: requests==2.31.0
42
+ Requires-Dist: types-requests==2.31.0.2
43
+ Requires-Dist: six==1.16.0
44
+ Requires-Dist: tzdata==2023.3
45
+ Requires-Dist: urllib3==1.26.15
46
+ Requires-Dist: numpy==1.26.4
47
+ Requires-Dist: mypy==1.12.1
50
48
 
51
49
  # About
52
50
 
@@ -183,13 +181,24 @@ Using IDE editor will assist with auto-completion and type hints. Additionally,
183
181
  When using the IDE, open `investfly` directory created above as a project with your IDE.
184
182
  Make sure that Python Interpreter is configured to the virtual environment `investfly/venv/bin/python` created above.
185
183
 
184
+ ### TA-Lib Stubs
185
+ TA-Lib is a technical analysis library https://github.com/TA-Lib/ta-lib-python used to compute technical indicators by Investfly.
186
+ This library can also be used in custom indicators and strategies. However, installing Python ta-lib wrapper requires installing native ta-lib, which is challenging based on the OS you are working with.
187
+ So investfly-sdk ships with ta-lib stubs, so when you install investfly-sdk, pip does not try to install ta-lib.
188
+ This means that you can develop your code, but cannot run them locally if you are using ta-lib in your code. This is generally OK, because you will use the CLI
189
+ to upload your code to Investfly server, where it will be run.
190
+ If you want also want to run your code locally to test it, then follow the installation method described in the link above and then install ta-lib with the following command
191
+ ```commandline
192
+ pip install ta-lib==0.4.28
193
+ ```
194
+
186
195
 
187
196
  # API Docs
188
197
 
189
198
  API Docs are published at https://www.investfly.com/guides/docs/index.html
190
199
 
191
200
  # Getting Help
192
- Please email [admin@investfly.com](admin@investfly.com) for any support or bug report
201
+ Please email support@investfly.com for any support or bug report
193
202
 
194
203
 
195
204
 
@@ -11,9 +11,9 @@ investfly/cli/InvestflyCli.py,sha256=2dnJuGOL_qe3HeWqc0cyLss4H3HxDTXrvsHtJ6sIYSw
11
11
  investfly/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  investfly/models/CommonModels.py,sha256=kbyWsez1voii2K2wyflYCW7i9lYQh49nbrts4bTvvG4,2348
13
13
  investfly/models/Indicator.py,sha256=9v46Ozs2O8UPUjDzVC1MpoGx2iwnA__ZyrySVXxX8Qo,10660
14
- investfly/models/MarketData.py,sha256=NbyOh472uIXyHaTW9eYCBbiTu2szSq47iCz8i3qI1v0,6081
14
+ investfly/models/MarketData.py,sha256=xcthPem74KM-n48tWMQTT6K7qUC_xpqVmfBY59MgnfM,6095
15
15
  investfly/models/MarketDataIds.py,sha256=CTNCb7G8NgLb84LYCqqxwlhO8e6RV-AUGwJH9GDv53A,3248
16
- investfly/models/ModelUtils.py,sha256=fdKO0hswgRALfSj8UvNSdtQyDo0QzDc10j3YXa0YIIA,1040
16
+ investfly/models/ModelUtils.py,sha256=_VLDYu_PjT_G7zFQBZcSys7d68obbE_ZLUuARm77TDI,1178
17
17
  investfly/models/PortfolioModels.py,sha256=wEHzaxEMEmliNR1OXS0WNzzao7ZA5qhKIPzAjWQuUOM,8658
18
18
  investfly/models/SecurityFilterModels.py,sha256=4baTBBI-XOKh8uTpvqVvk3unD-xHoyooO3dd5lKWbXA,5806
19
19
  investfly/models/SecurityUniverseSelector.py,sha256=N2cYhgRz3PTh6T98liiiTbJNg27SBpaUaIQGgDHFbF4,8645
@@ -34,9 +34,10 @@ investfly/utils/CommonUtils.py,sha256=lCXAdI8-6PgbutcXJqUmSfuuLXp82FcnlxNVjCJpqL
34
34
  investfly/utils/PercentBasedPortfolioAllocator.py,sha256=EHrOyHbaYHLwE-4vUSQCVXwbEgLs-nDjLVRH3cdgslI,1563
35
35
  investfly/utils/__init__.py,sha256=2BqXoOQElv-GIU6wvmf2aaAABAcNny2TETcj7kf9rzM,129
36
36
  investfly/utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- investfly_sdk-1.6.dist-info/LICENSE.txt,sha256=Jmd2U7G7Z1oNdnRERRzFXN6C--bEo_K56j4v9EpJSTg,1090
38
- investfly_sdk-1.6.dist-info/METADATA,sha256=A1ebvr32y2SEMEd5jnuqHIxZMyn6kcpt9y--QDiu62c,7536
39
- investfly_sdk-1.6.dist-info/WHEEL,sha256=a7TGlA-5DaHMRrarXjVbQagU3Man_dCnGIWMJr5kRWo,91
40
- investfly_sdk-1.6.dist-info/entry_points.txt,sha256=GDRF4baJQXTh90DvdJJx1DeRezWfPt26E567lTs3g6U,66
41
- investfly_sdk-1.6.dist-info/top_level.txt,sha256=dlEJ2OGWA3prqMvXELeydS5RTdpSzh7hz1LwR3NMc7A,10
42
- investfly_sdk-1.6.dist-info/RECORD,,
37
+ talib/__init__.pyi,sha256=Sw9gkXACt6Rb9Q-_8FVK3NBdofjiJFtSJk2UFhUWdZM,15662
38
+ investfly_sdk-1.7.dist-info/LICENSE.txt,sha256=Jmd2U7G7Z1oNdnRERRzFXN6C--bEo_K56j4v9EpJSTg,1090
39
+ investfly_sdk-1.7.dist-info/METADATA,sha256=vWZBQ2hipqyUQNej8RaIKicrGElpeTMv19kRwStuCvI,8342
40
+ investfly_sdk-1.7.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
41
+ investfly_sdk-1.7.dist-info/entry_points.txt,sha256=GDRF4baJQXTh90DvdJJx1DeRezWfPt26E567lTs3g6U,66
42
+ investfly_sdk-1.7.dist-info/top_level.txt,sha256=FLuybzCKkAxnL8EONG9fb8zIkUs0P3JmKZ2QyEJes10,16
43
+ investfly_sdk-1.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.4.0)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
talib/__init__.pyi ADDED
@@ -0,0 +1,185 @@
1
+ """
2
+ TA-Lib type stub file for type checking and code completion.
3
+ This provides type hints for TA-Lib functions without implementation.
4
+ """
5
+
6
+ import numpy as np
7
+ from typing import Tuple
8
+
9
+ # Math Operators
10
+ def ADD(real0: np.ndarray, real1: np.ndarray) -> np.ndarray: ...
11
+ def DIV(real0: np.ndarray, real1: np.ndarray) -> np.ndarray: ...
12
+ def MAX(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
13
+ def MAXINDEX(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
14
+ def MIN(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
15
+ def MININDEX(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
16
+ def MINMAX(real: np.ndarray, timeperiod: int = 30) -> Tuple[np.ndarray, np.ndarray]: ...
17
+ def MINMAXINDEX(real: np.ndarray, timeperiod: int = 30) -> Tuple[np.ndarray, np.ndarray]: ...
18
+ def MULT(real0: np.ndarray, real1: np.ndarray) -> np.ndarray: ...
19
+ def SUB(real0: np.ndarray, real1: np.ndarray) -> np.ndarray: ...
20
+ def SUM(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
21
+
22
+ # Math Transform
23
+ def ACOS(real: np.ndarray) -> np.ndarray: ...
24
+ def ASIN(real: np.ndarray) -> np.ndarray: ...
25
+ def ATAN(real: np.ndarray) -> np.ndarray: ...
26
+ def CEIL(real: np.ndarray) -> np.ndarray: ...
27
+ def COS(real: np.ndarray) -> np.ndarray: ...
28
+ def COSH(real: np.ndarray) -> np.ndarray: ...
29
+ def EXP(real: np.ndarray) -> np.ndarray: ...
30
+ def FLOOR(real: np.ndarray) -> np.ndarray: ...
31
+ def LN(real: np.ndarray) -> np.ndarray: ...
32
+ def LOG10(real: np.ndarray) -> np.ndarray: ...
33
+ def SIN(real: np.ndarray) -> np.ndarray: ...
34
+ def SINH(real: np.ndarray) -> np.ndarray: ...
35
+ def SQRT(real: np.ndarray) -> np.ndarray: ...
36
+ def TAN(real: np.ndarray) -> np.ndarray: ...
37
+ def TANH(real: np.ndarray) -> np.ndarray: ...
38
+
39
+ # Overlap Studies
40
+ def BBANDS(real: np.ndarray, timeperiod: int = 5, nbdevup: float = 2.0, nbdevdn: float = 2.0, matype: int = 0) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: ...
41
+ def DEMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
42
+ def EMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
43
+ def HT_TRENDLINE(real: np.ndarray) -> np.ndarray: ...
44
+ def KAMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
45
+ def MA(real: np.ndarray, timeperiod: int = 30, matype: int = 0) -> np.ndarray: ...
46
+ def MAMA(real: np.ndarray, fastlimit: float = 0.5, slowlimit: float = 0.05) -> Tuple[np.ndarray, np.ndarray]: ...
47
+ def MAVP(real: np.ndarray, periods: np.ndarray, minperiod: int = 2, maxperiod: int = 30, matype: int = 0) -> np.ndarray: ...
48
+ def MIDPOINT(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
49
+ def MIDPRICE(high: np.ndarray, low: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
50
+ def SAR(high: np.ndarray, low: np.ndarray, acceleration: float = 0.02, maximum: float = 0.2) -> np.ndarray: ...
51
+ def SAREXT(high: np.ndarray, low: np.ndarray, startvalue: float = 0, offsetonreverse: float = 0, accelerationinitlong: float = 0.02, accelerationlong: float = 0.02, accelerationmaxlong: float = 0.2, accelerationinitshort: float = 0.02, accelerationshort: float = 0.02, accelerationmaxshort: float = 0.2) -> np.ndarray: ...
52
+ def SMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
53
+ def T3(real: np.ndarray, timeperiod: int = 5, vfactor: float = 0.7) -> np.ndarray: ...
54
+ def TEMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
55
+ def TRIMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
56
+ def WMA(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
57
+
58
+ # Momentum Indicators
59
+ def ADX(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
60
+ def ADXR(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
61
+ def APO(real: np.ndarray, fastperiod: int = 12, slowperiod: int = 26, matype: int = 0) -> np.ndarray: ...
62
+ def AROON(high: np.ndarray, low: np.ndarray, timeperiod: int = 14) -> Tuple[np.ndarray, np.ndarray]: ...
63
+ def AROONOSC(high: np.ndarray, low: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
64
+ def BOP(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
65
+ def CCI(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
66
+ def CMO(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
67
+ def DX(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
68
+ def MACD(real: np.ndarray, fastperiod: int = 12, slowperiod: int = 26, signalperiod: int = 9) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: ...
69
+ def MACDEXT(real: np.ndarray, fastperiod: int = 12, fastmatype: int = 0, slowperiod: int = 26, slowmatype: int = 0, signalperiod: int = 9, signalmatype: int = 0) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: ...
70
+ def MACDFIX(real: np.ndarray, signalperiod: int = 9) -> Tuple[np.ndarray, np.ndarray, np.ndarray]: ...
71
+ def MFI(high: np.ndarray, low: np.ndarray, close: np.ndarray, volume: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
72
+ def MINUS_DI(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
73
+ def MINUS_DM(high: np.ndarray, low: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
74
+ def MOM(real: np.ndarray, timeperiod: int = 10) -> np.ndarray: ...
75
+ def PLUS_DI(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
76
+ def PLUS_DM(high: np.ndarray, low: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
77
+ def PPO(real: np.ndarray, fastperiod: int = 12, slowperiod: int = 26, matype: int = 0) -> np.ndarray: ...
78
+ def ROC(real: np.ndarray, timeperiod: int = 10) -> np.ndarray: ...
79
+ def ROCP(real: np.ndarray, timeperiod: int = 10) -> np.ndarray: ...
80
+ def ROCR(real: np.ndarray, timeperiod: int = 10) -> np.ndarray: ...
81
+ def ROCR100(real: np.ndarray, timeperiod: int = 10) -> np.ndarray: ...
82
+ def RSI(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
83
+ def STOCH(high: np.ndarray, low: np.ndarray, close: np.ndarray, fastk_period: int = 5, slowk_period: int = 3, slowk_matype: int = 0, slowd_period: int = 3, slowd_matype: int = 0) -> Tuple[np.ndarray, np.ndarray]: ...
84
+ def STOCHF(high: np.ndarray, low: np.ndarray, close: np.ndarray, fastk_period: int = 5, fastd_period: int = 3, fastd_matype: int = 0) -> Tuple[np.ndarray, np.ndarray]: ...
85
+ def STOCHRSI(real: np.ndarray, timeperiod: int = 14, fastk_period: int = 5, fastd_period: int = 3, fastd_matype: int = 0) -> Tuple[np.ndarray, np.ndarray]: ...
86
+ def TRIX(real: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
87
+ def ULTOSC(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod1: int = 7, timeperiod2: int = 14, timeperiod3: int = 28) -> np.ndarray: ...
88
+ def WILLR(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
89
+
90
+ # Volume Indicators
91
+ def AD(high: np.ndarray, low: np.ndarray, close: np.ndarray, volume: np.ndarray) -> np.ndarray: ...
92
+ def ADOSC(high: np.ndarray, low: np.ndarray, close: np.ndarray, volume: np.ndarray, fastperiod: int = 3, slowperiod: int = 10) -> np.ndarray: ...
93
+ def OBV(close: np.ndarray, volume: np.ndarray) -> np.ndarray: ...
94
+
95
+ # Volatility Indicators
96
+ def ATR(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
97
+ def NATR(high: np.ndarray, low: np.ndarray, close: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
98
+ def TRANGE(high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
99
+
100
+ # Price Transform
101
+ def AVGPRICE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
102
+ def MEDPRICE(high: np.ndarray, low: np.ndarray) -> np.ndarray: ...
103
+ def TYPPRICE(high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
104
+ def WCLPRICE(high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
105
+
106
+ # Cycle Indicators
107
+ def HT_DCPERIOD(real: np.ndarray) -> np.ndarray: ...
108
+ def HT_DCPHASE(real: np.ndarray) -> np.ndarray: ...
109
+ def HT_PHASOR(real: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: ...
110
+ def HT_SINE(real: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: ...
111
+ def HT_TRENDMODE(real: np.ndarray) -> np.ndarray: ...
112
+
113
+ # Pattern Recognition
114
+ def CDL2CROWS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
115
+ def CDL3BLACKCROWS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
116
+ def CDL3INSIDE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
117
+ def CDL3LINESTRIKE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
118
+ def CDL3OUTSIDE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
119
+ def CDL3STARSINSOUTH(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
120
+ def CDL3WHITESOLDIERS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
121
+ def CDLABANDONEDBABY(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.3) -> np.ndarray: ...
122
+ def CDLADVANCEBLOCK(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
123
+ def CDLBELTHOLD(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
124
+ def CDLBREAKAWAY(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
125
+ def CDLCLOSINGMARUBOZU(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
126
+ def CDLCONCEALBABYSWALL(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
127
+ def CDLCOUNTERATTACK(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
128
+ def CDLDARKCLOUDCOVER(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.5) -> np.ndarray: ...
129
+ def CDLDOJI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
130
+ def CDLDOJISTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
131
+ def CDLDRAGONFLYDOJI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
132
+ def CDLENGULFING(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
133
+ def CDLEVENINGDOJISTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.3) -> np.ndarray: ...
134
+ def CDLEVENINGSTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.3) -> np.ndarray: ...
135
+ def CDLGAPSIDESIDEWHITE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
136
+ def CDLGRAVESTONEDOJI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
137
+ def CDLHAMMER(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
138
+ def CDLHANGINGMAN(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
139
+ def CDLHARAMI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
140
+ def CDLHARAMICROSS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
141
+ def CDLHIGHWAVE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
142
+ def CDLHIKKAKE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
143
+ def CDLHIKKAKEMOD(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
144
+ def CDLHOMINGPIGEON(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
145
+ def CDLIDENTICAL3CROWS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
146
+ def CDLINNECK(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
147
+ def CDLINVERTEDHAMMER(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
148
+ def CDLKICKING(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
149
+ def CDLKICKINGBYLENGTH(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
150
+ def CDLLADDERBOTTOM(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
151
+ def CDLLONGLEGGEDDOJI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
152
+ def CDLLONGLINE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
153
+ def CDLMARUBOZU(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
154
+ def CDLMATCHINGLOW(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
155
+ def CDLMATHOLD(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.5) -> np.ndarray: ...
156
+ def CDLMORNINGDOJISTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.3) -> np.ndarray: ...
157
+ def CDLMORNINGSTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray, penetration: float = 0.3) -> np.ndarray: ...
158
+ def CDLONNECK(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
159
+ def CDLPIERCING(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
160
+ def CDLRICKSHAWMAN(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
161
+ def CDLRISEFALL3METHODS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
162
+ def CDLSEPARATINGLINES(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
163
+ def CDLSHOOTINGSTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
164
+ def CDLSHORTLINE(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
165
+ def CDLSPINNINGTOP(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
166
+ def CDLSTALLEDPATTERN(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
167
+ def CDLSTICKSANDWICH(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
168
+ def CDLTAKURI(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
169
+ def CDLTASUKIGAP(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
170
+ def CDLTHRUSTING(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
171
+ def CDLTRISTAR(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
172
+ def CDLUNIQUE3RIVER(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
173
+ def CDLUPSIDEGAP2CROWS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
174
+ def CDLXSIDEGAP3METHODS(open: np.ndarray, high: np.ndarray, low: np.ndarray, close: np.ndarray) -> np.ndarray: ...
175
+
176
+ # Statistic Functions
177
+ def BETA(real0: np.ndarray, real1: np.ndarray, timeperiod: int = 5) -> np.ndarray: ...
178
+ def CORREL(real0: np.ndarray, real1: np.ndarray, timeperiod: int = 30) -> np.ndarray: ...
179
+ def LINEARREG(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
180
+ def LINEARREG_ANGLE(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
181
+ def LINEARREG_INTERCEPT(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
182
+ def LINEARREG_SLOPE(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
183
+ def STDDEV(real: np.ndarray, timeperiod: int = 5, nbdev: float = 1.0) -> np.ndarray: ...
184
+ def TSF(real: np.ndarray, timeperiod: int = 14) -> np.ndarray: ...
185
+ def VAR(real: np.ndarray, timeperiod: int = 5, nbdev: float = 1.0) -> np.ndarray: ...