Technicall analysis
Technical Analysis Script Overview
This script performs a comprehensive technical analysis on cryptocurrency market data. The script uses various financial indicators, models, and data sources to predict future price movements and provide investment suggestions. Below is a breakdown of the key components and functionality of the code.
Key Libraries and Imports
The script imports a wide range of libraries to handle various aspects of the analysis:
- requests: For making HTTP requests to fetch market data.
- warnings: To filter warnings, specifically for ignoring ConvergenceWarnings from statistical models.
- sys, os: For file system operations and environment variable management.
- Binance API: Access to cryptocurrency market data.
- dotenv: Loads environment variables from a
.env
file. - pandas, numpy: Data manipulation and analysis.
- scipy.stats: Statistical functions.
- ta, sklearn, statsmodels, xgboost: For technical analysis, machine learning, and statistical modeling.
- joblib: For saving and loading machine learning models.
- multiprocessing, concurrent.futures: For parallel processing.
Script Functionality
1. Fetching Historical Data
The get_historical_data
function retrieves historical market data (OHLCV) for a given cryptocurrency symbol from Binance.
2. Technical Indicator Calculation
The analyze_data_with_indicators
function calculates various technical indicators, such as:
- EMA (Exponential Moving Average)
- MACD (Moving Average Convergence Divergence)
- RSI (Relative Strength Index)
- OBV (On Balance Volume)
- ATR (Average True Range)
- VWAP (Volume Weighted Average Price)
These indicators help in understanding market trends, momentum, and volatility.
3. Fibonacci Levels Calculation
The calculate_fibonacci_levels
function computes Fibonacci retracement levels based on historical price data, which are used to identify potential support and resistance levels.
4. Predicting Prices Using Different Models
The script includes three different models for price prediction:
- Linear Regression (
predict_next_price_linear
) - ARIMA Model (
predict_next_price_arima
) - XGBoost (
predict_next_price_xgboost
)
These models are trained on historical price data and are saved for future predictions. If the models already exist, they are loaded and used for prediction.
5. Signal Interpretation
The interpret_signals
function analyzes the calculated technical indicators and provides an overall bullish, bearish, or neutral signal.
6. Risk Management Calculations
The script includes functions for managing risk:
- Stop Loss (
calculate_stop_loss
): Determines a stop-loss price based on ATR. - Trailing Stop Loss (
calculate_trailing_stop_loss
): Adjusts the stop-loss price as the market price moves in favor of the trade. - Maximum Investment (
calculate_max_investment
): Calculates the maximum amount to invest based on trading volume and price.
7. Market Sentiment Analysis
The get_fear_and_greed_index
function fetches the Fear and Greed Index from an external API to gauge the current market sentiment.
8. Liquidity Analysis
Functions like fetch_market_depth
and fetch_bid_ask_spread
analyze market liquidity, helping to understand trading costs and market stability.
9. Elliott Wave Confirmation
The script uses Elliott Wave theory to confirm bullish or bearish signals, especially for BTC, which can indicate the overall market trend.
10. Comprehensive Technical Analysis
The technical_analysis
function ties everything together, performing a full technical analysis on the given symbol, interval, and historical data. It provides:
- Overall market signal (bullish/bearish/neutral)
- Suggested price targets based on Fibonacci levels and predictions
- Risk management suggestions (stop loss, trailing stop loss)
- Investment recommendations
- Market sentiment and liquidity analysis
Usage
- Select the technicall analysis in the menu option.
- Enter the symbol you want to analyze. If the symbol does not exist on Binance, an exception will be thrown.
- Select the interval: 1h, 4h, or 1d. If the interval is not within this range, an exception will be thrown.