pkscreener 0.46.20250218.722__tar.gz → 0.46.20250219.725__tar.gz
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.
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/PKG-INFO +8 -8
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/README.md +6 -6
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/README.txt +6 -6
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ScreeningStatistics.py +12 -2
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/WorkflowManager.py +1 -1
- pkscreener-0.46.20250219.725/pkscreener/classes/__init__.py +1 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/globals.py +1 -1
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/pkscreenerbot.py +2 -2
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/pkscreenercli.py +9 -1
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/PKG-INFO +8 -8
- pkscreener-0.46.20250218.722/pkscreener/classes/__init__.py +0 -1
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/LICENSE +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/Disclaimer.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/LICENSE-Others.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/LICENSE.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/LogoWM.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/__init__.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ArtTexts.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/AssetsManager.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Backtest.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Barometer.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/BaseScreeningStatistics.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/CandlePatterns.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Changelog.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ConfigManager.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ConsoleMenuUtility.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ConsoleUtility.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Fetcher.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/GlobalStore.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ImageUtility.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MarketMonitor.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MarketStatus.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MenuOptions.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Messenger.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/OtaUpdater.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKAnalytics.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKDataService.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKDemoHandler.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKMarketOpenCloseAnalyser.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKPremiumHandler.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKScanRunner.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKScheduledTaskProgress.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKScheduler.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKSpreadsheets.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKTask.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKUserRegistration.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Pktalib.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Portfolio.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PortfolioXRay.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/StockScreener.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/StockSentiment.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/UserMenuChoicesHandler.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Utility.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/keys.py +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/courbd.ttf +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/pkscreener.ini +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/requirements.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/SOURCES.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/dependency_links.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/entry_points.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/not-zip-safe +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/requires.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/top_level.txt +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/setup.cfg +0 -0
- {pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/setup.py +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.
|
3
|
+
Version: 0.46.20250219.725
|
4
4
|
Summary: A Python-based stock screener for NSE, India with alerts to Telegram Channel (pkscreener)
|
5
5
|
Home-page: https://github.com/pkjmesra/pkscreener
|
6
|
-
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250219.725.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -69,7 +69,7 @@ Dynamic: summary
|
|
69
69
|
| :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
|
70
70
|
| Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
|
71
71
|
| Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
|
72
|
-
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] |
|
72
|
+
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | <a href="https://coveralls.io/github/pkjmesra/PKScreener?branch=main"><img src="https://coveralls.io/repos/github/pkjmesra/PKScreener/badge.svg?branch=main"></a> | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
|
73
73
|
|
74
74
|
## What is PKScreener?
|
75
75
|
| Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
|
@@ -392,15 +392,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
392
392
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
393
393
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
394
394
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
395
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli.exe
|
396
396
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
397
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.bin
|
398
398
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
399
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.bin
|
400
400
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
401
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.run
|
402
402
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
403
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.run
|
404
404
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
405
405
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
406
406
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -5,7 +5,7 @@
|
|
5
5
|
| :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
|
6
6
|
| Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
|
7
7
|
| Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
|
8
|
-
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] |
|
8
|
+
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | <a href="https://coveralls.io/github/pkjmesra/PKScreener?branch=main"><img src="https://coveralls.io/repos/github/pkjmesra/PKScreener/badge.svg?branch=main"></a> | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
|
9
9
|
|
10
10
|
## What is PKScreener?
|
11
11
|
| Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
|
@@ -328,15 +328,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
328
328
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
329
329
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
330
330
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
331
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli.exe
|
332
332
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
333
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.bin
|
334
334
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
335
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.bin
|
336
336
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
337
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.run
|
338
338
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
339
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.run
|
340
340
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
341
341
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
342
342
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -5,7 +5,7 @@
|
|
5
5
|
| :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
|
6
6
|
| Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
|
7
7
|
| Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
|
8
|
-
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] |
|
8
|
+
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | <a href="https://coveralls.io/github/pkjmesra/PKScreener?branch=main"><img src="https://coveralls.io/repos/github/pkjmesra/PKScreener/badge.svg?branch=main"></a> | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
|
9
9
|
|
10
10
|
## What is PKScreener?
|
11
11
|
| Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
|
@@ -328,15 +328,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
328
328
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
329
329
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
330
330
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
331
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
331
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli.exe
|
332
332
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
333
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
333
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.bin
|
334
334
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
335
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
335
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.bin
|
336
336
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
337
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
337
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.run
|
338
338
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
339
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
339
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.run
|
340
340
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
341
341
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
342
342
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -114,6 +114,8 @@ class ScreeningStatistics:
|
|
114
114
|
#Calculating signals
|
115
115
|
def computeBuySellSignals(self,df,ema_period=200,retry=True):
|
116
116
|
try:
|
117
|
+
df["Above"] = False
|
118
|
+
df["Below"] = False
|
117
119
|
if Imports["vectorbt"]:
|
118
120
|
from vectorbt.indicators import MA as vbt
|
119
121
|
if df is not None:
|
@@ -127,7 +129,11 @@ class ScreeningStatistics:
|
|
127
129
|
df["Above"] = ema > df["ATRTrailingStop"]
|
128
130
|
df["Below"] = ema < df["ATRTrailingStop"]
|
129
131
|
except (OSError,FileNotFoundError) as e: # pragma: no cover
|
130
|
-
|
132
|
+
msg = f"{colorText.FAIL}Some dependencies are missing. Try and run this option again.{colorText.END}"
|
133
|
+
if 'unittest' in sys.modules or any("pytest" in arg for arg in sys.argv):
|
134
|
+
print(msg)
|
135
|
+
else:
|
136
|
+
OutputControls().printOutput(msg)
|
131
137
|
# OSError:RALLIS: [Errno 2] No such file or directory: '/tmp/_MEIzoTV6A/vectorbt/templates/light.json'
|
132
138
|
# if "No such file or directory" in str(e):
|
133
139
|
try:
|
@@ -148,7 +154,11 @@ class ScreeningStatistics:
|
|
148
154
|
return self.computeBuySellSignals(df,ema_period=ema_period,retry=False)
|
149
155
|
return None
|
150
156
|
except ImportError as e: # pragma: no cover
|
151
|
-
|
157
|
+
msg = f"{colorText.FAIL}The main module needed for best Buy/Sell result calculation is missing. Falling back on an alternative, but it is not very reliable.{colorText.END}"
|
158
|
+
if 'unittest' in sys.modules or any("pytest" in arg for arg in sys.argv):
|
159
|
+
print(msg)
|
160
|
+
else:
|
161
|
+
OutputControls().printOutput(msg)
|
152
162
|
if df is not None:
|
153
163
|
ema = pktalib.EMA(df["Close"], ema_period) if ema_period > 1 else df["Close"]#short_name='EMA', ewm=True)
|
154
164
|
df["Above"] = ema > df["ATRTrailingStop"]
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/WorkflowManager.py
RENAMED
@@ -107,7 +107,7 @@ def run_workflow(command=None, user=None, options=None, workflowType="B",repo=No
|
|
107
107
|
+ '","inputs":{"user":"'
|
108
108
|
+ f"{user}"
|
109
109
|
+ '","params":"'
|
110
|
-
+ f'{cmd_options}'
|
110
|
+
+ f'{cmd_options} --triggertimestamp {timestamp}'
|
111
111
|
+ f'","ref":"{branch}","alertTrigger":"'
|
112
112
|
+ f"{alertTrigger}"
|
113
113
|
+ '","name":"'
|
@@ -0,0 +1 @@
|
|
1
|
+
VERSION='0.46.20250219.725'
|
@@ -4032,7 +4032,7 @@ def handleAlertSubscriptions(user,message):
|
|
4032
4032
|
[{"text": f"Yes! Subscribe", "callback_data": f"SUB_{scanId}"}]
|
4033
4033
|
],
|
4034
4034
|
}
|
4035
|
-
send_message(message=f"
|
4035
|
+
send_message(message=f"🔴 <b>Please check your current alerts, balance and subscriptions using /OTP before subscribing for alerts</b>.🔴 If you are not already subscribed to this alert, would you like to subscribe to this ({scanId}) automated scan alert for a day during market hours (NSE - IST timezone)? You will need to pay ₹ {'40' if str(scanId).upper().startswith('P') else '31'} (One time) for automated alerts to {scanId} all day on the day of subscription. 🔴 If you say <b>Yes</b>, the corresponding charges will be deducted from your alerts balance!🔴",
|
4036
4036
|
userID=int(user),
|
4037
4037
|
reply_markup=reply_markup)
|
4038
4038
|
elif alertUser is not None and len(alertUser.scannerJobs) > 0 and str(scanId) in alertUser.scannerJobs:
|
@@ -1545,7 +1545,7 @@ def sendSubscriptionOption(update:Update,context:CallbackContext,scanId):
|
|
1545
1545
|
[{"text": f"Yes! Subscribe", "callback_data": f"SUB_{scanId}"}]
|
1546
1546
|
],
|
1547
1547
|
}
|
1548
|
-
message=f"
|
1548
|
+
message=f"🔴 <b>Please check your current alerts, balance and subscriptions using /OTP before subscribing for alerts</b>.🔴 If you are not already subscribed to this alert, would you like to subscribe to this (<b>{scanId}</b>) automated scan alert for a day during market hours (NSE - IST timezone)? You will need to pay ₹ {'40' if str(scanId).upper().startswith('P') else '31'} (One time) for automated alerts to <b>{scanId}</b> all day on the day of subscription. 🔴 If you say <b>Yes</b>, the corresponding charges will be deducted from your alerts balance!🔴"
|
1549
1549
|
if len(str(scanId).strip()) > 0 and not str(scanId).startswith("B"):
|
1550
1550
|
context.bot.send_message(
|
1551
1551
|
chat_id=user.id, text=message, reply_markup=reply_markup, parse_mode="HTML"
|
@@ -2053,7 +2053,7 @@ def help_command(update: Update, context: CallbackContext) -> None:
|
|
2053
2053
|
# Get user that sent /start and log his name
|
2054
2054
|
user = updateCarrier.from_user
|
2055
2055
|
|
2056
|
-
if user.id in user_states and user.
|
2056
|
+
if user.id in user_states and user.username.lower() == OWNER_USER.lower():
|
2057
2057
|
if "_awaiting_input_1" in user_states[user.id]:
|
2058
2058
|
hskCmd = user_states[user.id].split("_")[0]
|
2059
2059
|
user_states[user.id] = f"{hskCmd}_awaiting_input_2_{updateCarrier.text}"
|
@@ -89,7 +89,6 @@ def decorator(func):
|
|
89
89
|
|
90
90
|
return new_func
|
91
91
|
|
92
|
-
|
93
92
|
# print = decorator(print) # current file
|
94
93
|
def disableSysOut(input=True, disable=True):
|
95
94
|
global printenabled,originalStdOut, original__stdout
|
@@ -638,6 +637,15 @@ def runApplication():
|
|
638
637
|
MarketMonitor().refresh(screen_df=results,screenOptions=monitorOption_org, chosenMenu=chosenMenu[:120],dbTimestamp=f"{dbTimestamp} | CycleTime:{elapsed_time}s",telegram=args.telegram)
|
639
638
|
menuChoiceHierarchy = ""
|
640
639
|
args.pipedtitle = ""
|
640
|
+
# check to see if the monitor was launched before the market close hours.
|
641
|
+
# If so, close it.
|
642
|
+
if "RUNNER" in os.environ.keys() and args.triggertimestamp is not None:
|
643
|
+
from datetime import timezone
|
644
|
+
from PKDevTools.classes.MarketHours import MarketHours
|
645
|
+
marketCloseTS = PKDateUtilities.currentDateTime(simulate=True,hour=MarketHours().closeHour,minute=MarketHours().closeMinute).replace(tzinfo=timezone.utc).timestamp()
|
646
|
+
if int(args.triggertimestamp) < int(marketCloseTS) and int(PKDateUtilities.currentDateTimestamp()) >= marketCloseTS:
|
647
|
+
OutputControls().printOutput("Exiting monitor now since market has closed!",enableMultipleLineOutput=True)
|
648
|
+
sys.exit(0)
|
641
649
|
|
642
650
|
def updateProgressStatus(args,monitorOptions=None):
|
643
651
|
from pkscreener.classes.MenuOptions import PREDEFINED_SCAN_MENU_TEXTS,PREDEFINED_SCAN_MENU_VALUES
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: pkscreener
|
3
|
-
Version: 0.46.
|
3
|
+
Version: 0.46.20250219.725
|
4
4
|
Summary: A Python-based stock screener for NSE, India with alerts to Telegram Channel (pkscreener)
|
5
5
|
Home-page: https://github.com/pkjmesra/pkscreener
|
6
|
-
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.
|
6
|
+
Download-URL: https://github.com/pkjmesra/pkscreener/archive/v0.46.20250219.725.zip
|
7
7
|
Author: pkjmesra
|
8
8
|
Author-email: pkjmesra@gmail.com
|
9
9
|
License: OSI Approved (MIT)
|
@@ -69,7 +69,7 @@ Dynamic: summary
|
|
69
69
|
| :-------------: | :-----------------: | :-----------------: | :-----------------: | :-----------------: |
|
70
70
|
| Platforms | [![Windows][Windows-badge]][Windows] | [![Linux(x64)][Linux-badge_x64]][Linux_x64] [![Linux(arm64)][Linux-badge_arm64]][Linux_arm64] | [![Mac OS(x64)][Mac OS-badge_x64]][Mac OS_x64] [![Mac OS(arm64)][Mac OS-badge_arm64]][Mac OS_arm64] | [![Docker Status][Docker Status-badge]][Docker Status] |
|
71
71
|
| Package / Docs | [![Documentation][Documentation-badge]][Documentation] [![OpenSSF Best Practices][OpenSSF-Badge]][OpenSSF-pkscreener] | [![PyPI][pypi-badge]][pypi] | [![is wheel][wheel-badge]][pypi] | ![github license][github-license] |
|
72
|
-
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] |
|
72
|
+
| Tests/Code-Quality | [![CodeFactor][Codefactor-badge]][Codefactor] | <a href="https://coveralls.io/github/pkjmesra/PKScreener?branch=main"><img src="https://coveralls.io/repos/github/pkjmesra/PKScreener/badge.svg?branch=main"></a> | [![codecov][codecov-badge]][codecov] | [![After Market][After Market-badge]][After Market] |
|
73
73
|
|
74
74
|
## What is PKScreener?
|
75
75
|
| Telegram Alerts | Nifty AI Prediction | Scheduling Cron Jobs | On-Demand Telegram Bot | Backtesting / Growth of 10k|
|
@@ -392,15 +392,15 @@ After you have finished the run, go to that copied path, zip the contents of the
|
|
392
392
|
[MADE-IN-INDIA-badge]: https://img.shields.io/badge/MADE%20WITH%20%E2%9D%A4%20IN-INDIA-orange
|
393
393
|
[MADE-IN-INDIA]: https://en.wikipedia.org/wiki/India
|
394
394
|
[Windows-badge]: https://img.shields.io/badge/Windows-0078D6?logo=windows&logoColor=white
|
395
|
-
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
395
|
+
[Windows]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli.exe
|
396
396
|
[Linux-badge_x64]: https://img.shields.io/badge/Linux(x64)-FCC624?logo=linux&logoColor=black
|
397
|
-
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
397
|
+
[Linux_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.bin
|
398
398
|
[Linux-badge_arm64]: https://img.shields.io/badge/Linux(arm64)-FCC624?logo=linux&logoColor=black
|
399
|
-
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
399
|
+
[Linux_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.bin
|
400
400
|
[Mac OS-badge_x64]: https://img.shields.io/badge/mac%20os(x64)-D3D3D3?logo=apple&logoColor=000000
|
401
|
-
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
401
|
+
[Mac OS_x64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_x64.run
|
402
402
|
[Mac OS-badge_arm64]: https://img.shields.io/badge/mac%20os(arm64)-D3D3D3?logo=apple&logoColor=000000
|
403
|
-
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.
|
403
|
+
[Mac OS_arm64]: https://github.com/pkjmesra/PKScreener/releases/download/0.46.20250219.724/pkscreenercli_arm64.run
|
404
404
|
[GitHub release (latest by date)-badge]: https://img.shields.io/github/v/release/pkjmesra/PKScreener
|
405
405
|
[GitHub release (latest by date)]: https://github.com/pkjmesra/PKScreener/releases/latest
|
406
406
|
[pypi-badge]: https://img.shields.io/pypi/v/pkscreener.svg?style=flat-square
|
@@ -1 +0,0 @@
|
|
1
|
-
VERSION='0.46.20250218.722'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ArtTexts.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/AssetsManager.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Backtest.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Barometer.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/CandlePatterns.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Changelog.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ConfigManager.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ConsoleUtility.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/GlobalStore.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/ImageUtility.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MarketMonitor.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MarketStatus.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/MenuOptions.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Messenger.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/OtaUpdater.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKAnalytics.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKDataService.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKDemoHandler.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKPremiumHandler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKScanRunner.py
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKScheduler.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PKSpreadsheets.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/Portfolio.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/PortfolioXRay.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/StockScreener.py
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener/classes/StockSentiment.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/entry_points.txt
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/not-zip-safe
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/requires.txt
RENAMED
File without changes
|
{pkscreener-0.46.20250218.722 → pkscreener-0.46.20250219.725}/pkscreener.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|