import pandas as pd
import pandas_datareader.data as web
import ta
import matplotlib.pyplot as plt
from datetime import datetime

# Fetch historical data
def fetch_data(symbol, start, end):
df = web.DataReader(symbol, 'yahoo', start, end)
return df

# Calculate indicators
def apply_indicators(df):
# Moving Averages
df['SMA50'] = ta.trend.sma_indicator(df['Close'], window=50)
df['SMA200'] = ta.trend.sma_indicator(df['Close'], window=200)

# RSI
df['RSI'] = ta.momentum.rsi(df['Close'], window=14)

# MACD
macd = ta.trend.MACD(df['Close'])
df['MACD_diff'] = macd.macd_diff()

return df

# Identify entry points
def identify_entries(df):
conditions = [
(df['SMA50'] > df['SMA200']), # SMA50 above SMA200
(df['RSI'] > 50), # RSI above 50
(df['MACD_diff'] > 0) # MACD histogram positive
]

df['Entry'] = (conditions[0] & conditions[1] & conditions[2])
return df

# Plotting
def plot_data(df):
plt.figure(figsize=(14, 7))
plt.plot(df['Close'], label='Close Price')
plt.plot(df['SMA50'], label='50-Day SMA')
plt.plot(df['SMA200'], label='200-Day SMA')

# Highlight entry points
entries = df[df['Entry']]
plt.scatter(entries.index, entries['Close'], color='g', label='Entry Point', marker='^', s=100)

plt.title('XAUUSD Entry Points')
plt.legend()
plt.show()

# Main function
def main():
symbol = 'XAUUSD=X'
start = datetime(2020, 1, 1)
end = datetime.now()

df = fetch_data(symbol, start, end)
df = apply_indicators(df)
df = identify_entries(df)
plot_data(df)
return df

# Run the script
df = main()
Trend Analysis

Declinazione di responsabilità