A Python package for detecting trends in stock tickers using technical indicators like RSI, Knoxville Divergence, and Moving Average Envelopes.
This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.
Stock trading and investing involve substantial risk of loss and are not suitable for every investor. The signals and outputs generated by this tool are based on historical data and technical indicators, which are not guarantees of future performance. Past results do not indicate future outcomes.
Always thoroughly backtest any signals on historical data, verify them independently, and consider paper trading before applying them to real investments. Do not rely solely on this tool for making trading decisions.
- Python 3.7+
This is a private repo (https://github.com/krantboy/tradeginja.git), so you need to authenticate:
- Generate a PAT (GitHub > Settings > Developer settings > Personal access tokens > Tokens (classic),
reposcope). - Clone:
git clone https://krantboy:<your-pat>@github.com/krantboy/tradeginja.git
- Set up SSH (
ssh-keygen -t ed25519, add public key to GitHub > Settings > SSH and GPG keys). - Clone:
git clone git@github.com:krantboy/tradeginja.git
cd tradeginja
pip install -e .The detect_reversals.py script is the main tool for analyzing stock tickers. It fetches data from Yahoo Finance, detects reversals, saves results to CSV files, and optionally sends email notifications for new signals. Run it from the tradeginja/ directory.
python tradeginja/scripts/detect_reversals.py --tickers AAPL- Processes AAPL for the last 180 days (default), saves to
stock_data_aapl.csvandsignals_aapl.csv.
To enable email notifications without typing credentials each time, use environment variables:
-
Set Environment Variables:
export TRADEGINJA_SENDER_EMAIL="your_email@gmail.com" export TRADEGINJA_RECEIVER_EMAIL="your_email@gmail.com" export TRADEGINJA_EMAIL_PASSWORD="your_app_password"
- Replace with your email and app-specific password (e.g. https://myaccount.google.com/apppasswords).
- Make permanent by adding to
~/.bashrcor~/.zshrcand runningsource ~/.bashrc. - Do not use your original gmail password :)
-
Run with Email:
python tradeginja/scripts/detect_reversals.py --tickers AAPL TSLA
- Sends emails for new signals using the stored credentials.
-
Single Ticker:
python tradeginja/scripts/detect_reversals.py --tickers AAPL
- Output: Signals for AAPL, files
stock_data_aapl.csvandsignals_aapl.csv.
- Output: Signals for AAPL, files
-
Multiple Tickers:
python tradeginja/scripts/detect_reversals.py --tickers AAPL TSLA MSFT
- Output: Signals for each ticker, files like
stock_data_tsla.csv,signals_msft.csv.
- Output: Signals for each ticker, files like
-
Custom Date Range:
python tradeginja/scripts/detect_reversals.py --tickers AAPL TSLA --days-back 90 --end-date "2025-04-01"- Analyzes 90 days ending April 1, 2025.
-
Custom Output Files:
python tradeginja/scripts/detect_reversals.py --tickers AAPL --data-key "my_data.csv" --signal-key "my_signals.csv"
- Saves to
my_data_aapl.csvandmy_signals_aapl.csv.
- Saves to
-
Override Email Settings (Optional):
python tradeginja/scripts/detect_reversals.py --tickers AAPL TSLA --sender-email "other_email@gmail.com" --receiver-email "other_receiver@gmail.com" --email-password "other_password"
- Overrides environment variables if provided.
- Console: Prints signals (e.g., Date, Close, Signal) for each ticker.
- Files:
stock_data_<ticker>.csv: Full data per ticker.signals_<ticker>.csv: Detected signals per ticker.
- Email: Sent for new signals (if email vars are set), one per ticker with signal details.
--tickers: Ticker symbols (required, e.g.,AAPL TSLA).--days-back: Days of data to fetch (default: 180).--end-date: End date (default: today, format: YYYY-MM-DD).--data-key: Base filename for data (default: stock_data.csv).--signal-key: Base filename for signals (default: signals.csv).--sender-email: Sender email (default:$TRADEGINJA_SENDER_EMAIL).--receiver-email: Receiver email (default:$TRADEGINJA_RECEIVER_EMAIL).--email-password: Email password (default:$TRADEGINJA_EMAIL_PASSWORD).
- No Output: Ensure Python and dependencies (
yfinance,pandas,numpy) are installed. - No Signals: Delete old
signals_*.csvfiles or adjust--days-backfor recent data. - Email Not Working: Verify environment variables and use an app-specific password for Gmail.