Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| import sys | |
| # Add the 'utils' directory to sys.path so Python can find modules within it | |
| sys.path.append(os.path.join(os.path.dirname(__file__), "utils")) | |
| from utils.forex_signals import generate_forex_signals | |
| # Streamlit page configuration | |
| st.set_page_config(page_title="AI Forex Bot", page_icon=":guardsman:", layout="wide") | |
| # Authentication logic | |
| if "authenticated" not in st.session_state: | |
| st.session_state.authenticated = False | |
| if not st.session_state.authenticated: | |
| st.title("Authentication Required") | |
| username = st.text_input("Enter your username", "") | |
| if st.button("Login"): | |
| # Simple authentication | |
| ALLOWED_USERNAMES = ["ddilloud", "ved", "aditya", "karlmax", "bento"] | |
| if username in ALLOWED_USERNAMES: | |
| st.session_state.authenticated = True | |
| st.success("Login successful! Welcome!") | |
| else: | |
| st.error("Invalid username. Access denied.") | |
| else: | |
| # Title of the application | |
| st.title("AI Forex Trading Bot") | |
| st.markdown(""" | |
| This tool provides forex trading signals based on AI analysis and is for informational purposes only. | |
| Use at your own risk as forex trading involves substantial risk of loss. | |
| """) | |
| # Sidebar for user inputs | |
| st.sidebar.header("User Input") | |
| trading_capital = st.sidebar.number_input("Enter Trading Capital (USD)", min_value=1, max_value=10000, value=1000) | |
| market_risk = st.sidebar.selectbox("Select Market Risk Level", ["Low", "Medium", "High"]) | |
| additional_pairs = [ | |
| "EUR/USD", "GBP/USD", "USD/JPY", "AUD/USD", "CAD/JPY", | |
| "NZD/USD", "CHF/JPY", "AUD/JPY", "GBP/CHF", "EUR/GBP" | |
| ] | |
| if st.sidebar.button("Get Trading Signals"): | |
| try: | |
| signals = generate_forex_signals(trading_capital, market_risk, additional_pairs) | |
| if signals["best_signal"]: | |
| best_signal = signals["best_signal"] | |
| st.subheader("Best Recommended Forex Trade") | |
| st.write(f"**Currency Pair**: {best_signal['currency_pair']}") | |
| st.write(f"**Entry Time**: {best_signal['entry_time']}") | |
| st.write(f"**Exit Time**: {best_signal['exit_time']}") | |
| st.write(f"**ROI**: {best_signal['roi']}%") | |
| st.write(f"**Signal Strength**: {best_signal['signal_strength']}") | |
| st.subheader("All Generated Signals") | |
| for signal in signals["all_signals"]: | |
| st.write(f"**Currency Pair**: {signal['currency_pair']}") | |
| st.write(f"**Entry Time**: {signal['entry_time']}") | |
| st.write(f"**Exit Time**: {signal['exit_time']}") | |
| st.write(f"**ROI**: {signal['roi']}%") | |
| st.write(f"**Signal Strength**: {signal['signal_strength']}") | |
| st.markdown("---") | |
| else: | |
| st.warning("No signals were generated. Please try again later.") | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |