Metadata-Version: 2.1
Name: fx-analytics
Version: 1.6.5
Home-page: https://github.com/jaybfn/fx_analytics
Author: Jayesh Arun Bafna
Author-email: jayesh.bfn@gmail.com
License: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: dev
License-File: LICENSE

# Forex Dashboard

## Project Status

| **Testing** | **Package** |
|-------------|-------------|
| [![Testing Status](https://github.com/jaybfn/fx_analytics/actions/workflows/pytest_ci.yml/badge.svg)](https://github.com/jaybfn/fx_analytics/actions) | [![PyPI Latest Release](https://img.shields.io/pypi/v/fx-analytics)](https://pypi.org/project/fx-analytics/) |

## Overview

Forex Dashboard is a comprehensive tool designed for Forex traders to monitor and analyze their trading performance metrics. By seamlessly integrating with the MT5 terminal on Windows, the tool extracts trading deals, processes the data, and presents it in a user-friendly dashboard using Streamlit. This dashboard provides traders with insights into their daily wins, traded commodities, profit margins, and overall growth percentages.

Also, you can read on Medium : [Introducing Forex Dashboard: A Comprehensive Tool for Forex Traders](https://medium.com/@jayesh.bfn/introducing-forex-dashboard-a-comprehensive-tool-for-forex-traders-d56afb1d84a0)

## Features

- **ETL Process**: Extracts trading data from the MT5 terminal, transforms it for analysis, and loads it into a CSV file.
- **Streamlit Dashboard**: Displays key performance metrics, including:
  - Daily wins and losses.
  - Traded commodities breakdown.
  - Profit gains and losses. 
  - Daily and overall portfolio growth.
  - Commissions paid.
  - Daily and Total Trades executed.
  - Weekly and Monthly gains.

## Prerequisites
- Operating System: Windows (Tested on Windows 11)
- MT5 terminal installed on a Windows machine [MT5 Downloads](https://www.metatrader5.com/en/download).
- Python >= 3.11 environment with necessary packages.

## Setup and Usage
1. Create a Conda Environment:

   ```bash
   conda create --name <env_name> python=3.11
   ```

2. Clone the Repository:

   ```bash
   pip install fx_analytics
   pip install MetaTrader5 -> required to access MT5 for your historical trade deals!
   ```

3. To extract all your historical trades data from MT5 Terminal:

   ```python
   import fx_analytics
   from fx_analytics.main_functions import ETL

   
   # replace '****' with your login credential from MT5 terminal!
   mt5_credentials = {'login': '******', 'server':'******','password':'******'}
   df = ETL(from_date='2023-09-01', mt5_credentials = mt5_credentials)
   print(df)
   ```

4. To use/test the streamlit app from the package: To test app you can download the example data 
which was extracted from MT5, download [data](https://github.com/jaybfn/fx_analytics/blob/main/fx_history.csv).
   - Copy the below code into .py file

   ```python
   import fx_analytics 
   from fx_analytics.app import main

   main('fx_history.csv')
   ```

   To Run this file from CLI:
   ```bash
   streamlit run {file_name.py}
   ```

5. To run both ETL to extract your data from MT5 and view the analytics streamlit dashboard
   - create a python script 'app.py' and copy and past the below code, change the 'from_date' with your desired date and 'data_file_path', where you choose to stores the data extracted from ETL function, I prefer to use a data folder eg: 'data/{file_name.csv}'

   ```python
   import fx_analytics 
   from fx_analytics.app import main
   from fx_analytics.main_functions import ETL

   # replace '****' with your login credential from MT5 terminal!
   mt5_credentials = {'login': '******', 'server':'******','password':'******'}
   df = ETL(from_date='2023-09-28', mt5_credentials = mt5_credentials)
   df.to_csv('data_file_path')
   main('data_file_path')
   ```
   To Run this file from CLI:
   ```bash
   streamlit run app.py
   ```

## Output
   - streamlit app preview:
   ![picture alt](https://github.com/jaybfn/fx_analytics/blob/main/fx_analytics/streamlit_preview.jpg?raw=true)

## Feedback and Contribution
- We welcome feedback and contributions! If you encounter any issues or have suggestions, please open an issue. If you'd like to contribute, please create a pull request.
   
   
