使用Python可视化外汇数据


历史外汇数据对于识别趋势、评估过去的表现以及对货币市场做出明智的预测至关重要。通过清晰地显示价格波动和模式,可视化这些数据可以增强分析,帮助交易者和分析师做出更好的决策。

本教程将指导您使用TraderMade API检索历史货币数据,并使用Plotly将其可视化为烛形图格式。烛形图在金融分析中很流行,因为它可以清晰地显示价格波动,包括特定时期内开盘价、最高价、最低价和收盘价。我们将使用指定日期范围内的欧元/美元货币对数据。

在本教程结束时,您将能够

  • 使用Python发出获取历史数据的API请求。
  • 将JSON数据格式化并处理成数据框。
  • 使用Plotly创建交互式烛形图进行金融分析。

前提条件

在开始之前,请确保您拥有以下内容:

1. Python基础知识:熟悉Python编程,特别是函数和错误处理,将非常有帮助。

2. TraderMade API密钥:访问“https://tradermade.com/dashboard”获取API密钥。在TraderMade注册以获得免费的API密钥,您将在教程中使用它。

3. 已安装所需的库

requests:要安装requests,请使用以下命令:

pip install requests

此库使您可以向API发出HTTP请求。

pandas:要安装pandas,请使用以下命令:

pip install pandas

Pandas将用于以表格格式组织和操作API数据。

plotly:要安装plotly,请使用以下命令:

pip install plotly

此库有助于创建交互式图表,在本教程中特别是烛形图。

示例

导入所需的库

这些库是必不可少的

  • requests:向TraderMade API发出HTTP请求。
  • pandas:组织和操作从API获取的数据。
  • datetime:用于日期格式化和转换。
  • plotly.graph_objects:用于创建可视化效果,在本教程中特别是烛形图。
import requests
import pandas as pd
from datetime import datetime
import plotly.graph_objects as go

设置API密钥和基本URL

要访问数据,请使用您的TraderMade API密钥和历史数据的基本URL。请务必将“KEY”替换为您实际的API密钥。

API_KEY = 'KEY' # Replace with your TraderMade API Key
BASE_URL = 'https://marketdata.tradermade.com/api/v1/historical'

定义参数

Set the currency pair and the date range for the historical data you wish to retrieve.
symbol = 'EURUSD' # For EUR/USD currency pair
start_date = '01-01-2023' # Start date in DD-MM-YYYY format
end_date = '31-01-2023' # End date in DD-MM-YYYY format

定义日期转换函数

API期望日期采用YYYY-MM-DD格式,因此辅助函数将转换DD-MM-YYYY输入格式。
def convert_date_to_api_format(date_str):
    return datetime.strptime(date_str, '%d-%m-%Y').strftime('%Y-%m-%d')

获取历史数据函数

此函数从API检索数据。
def fetch_historical_data(symbol, start_date, end_date):
    # Convert date formats
    api_start_date = convert_date_to_api_format(start_date)
    api_end_date = convert_date_to_api_format(end_date)
    
    params = {
        'currency': symbol,
        'date': api_start_date, # Starting date
        'end_date': api_end_date, # Ending date
        'api_key': API_KEY
    }
    
    response = requests.get(BASE_URL, params=params)
    
    # Check if the request was successful
    if response.status_code != 200:
        print(f"Error: Received status code {response.status_code}")
        print("Response:", response.json())
        raise Exception("Failed to fetch data from TraderMade API")
    
    # Log raw response for reference
    data = response.json()
    print("Raw API Response:", data)
    
    # Check for the 'quotes' field in response
    if 'quotes' not in data:
        print("Error: 'quotes' field not found in response")
        print("Response:", data)
        raise KeyError("'quotes' field missing from API response")
    
    # Convert the 'quotes' field to DataFrame
    df = pd.DataFrame(data['quotes'])
    print("DataFrame structure:\n", df.head())
    
    # Handle date column
    if 'date' in data:
        df['date'] = data['date']
    else:
        # Estimate dates if only one is provided
        df['date'] = pd.date_range(start=api_start_date, periods=len(pdf), freq='D')
    
    # Ensure the date column is datetime
    df['date'] = pd.to_datetime(df['date'])
    return df

获取和显示数据

使用该函数获取数据,确保结构已准备好进行绘图。

df = fetch_historical_data(symbol, start_date, end_date)

检查所需列

烛形图需要“开盘价”、“最高价”、“最低价”和“收盘价”列。验证这些列是否存在。

required_columns = {'open', 'high', 'low', 'close'}
if not required_columns.issubset(df.columns):
    missing_cols = required_columns - set(df.columns)
    raise ValueError(f"Missing columns in data for candlestick chart: {missing_cols}")

创建和自定义烛形图

现在您已经拥有了数据,您可以使用Plotly对其进行可视化。

fig = go.Figure(data=[go.Candlestick(
    x=df['date'],
    open=df['open'],
    high=df['high'],
    low=df['low'],
    close=df['close'],
    name=f'{symbol} OHLC'
)])
fig.update_layout(
    title=f'{symbol} Candlestick Chart from {start_date} to {end_date}',
    xaxis_title='Date',
    yaxis_title='Price',
    xaxis_rangeslider_visible=False
)
fig.show()

处理错误

如果上述步骤中发生错误,则会捕获并打印该错误,以帮助诊断问题。

except Exception as e:
    print(f"An error occurred: {e}")

结论

通过此设置,您可以轻松修改符号或日期范围,并使用TraderMade API可视化各种货币对的历史数据。如果将其应用于较大的项目,请记住安全地处理API密钥,并在“https://tradermade.com/docs/restful-api”文档中查看API使用限制。

naga chitrika
naga chitrika

架起技术与故事讲述之间的桥梁

更新于:2024年11月15日

浏览量:11

启动您的职业生涯

完成课程获得认证

开始学习
广告