File size: 3,063 Bytes
3f3a01c
79384a6
 
 
 
 
 
71ba210
4d6d28b
79384a6
 
 
4d6d28b
 
 
3f3a01c
4d6d28b
 
 
 
a2a7548
 
4d6d28b
 
 
 
 
 
 
 
ee77f9e
4d6d28b
a2a7548
 
4d6d28b
3f3a01c
4d6d28b
 
 
a2a7548
 
 
 
 
79384a6
4d6d28b
 
d114cd5
a2a7548
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4d6d28b
a2a7548
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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)}")