Búsqueda de sitios web

Visualizando datos de Forex usando Python



Los datos históricos de Forex son cruciales para identificar tendencias, evaluar el desempeño pasado y hacer predicciones informadas en los mercados de divisas. La visualización de estos datos mejora el análisis al mostrar claramente los movimientos y patrones de precios, lo que ayuda a los comerciantes y analistas a tomar mejores decisiones.

Este tutorial lo guiará a través de la recuperación de datos históricos de divisas utilizando la API TraderMade y su visualización en un formato de gráfico de velas con Plotly. Los gráficos de velas japonesas son populares en el análisis financiero porque brindan una visión clara de los movimientos de precios, incluidos los precios de apertura, máximo, mínimo y cierre para un período específico. Utilizaremos los datos del par de divisas EUR/USD durante un rango de fechas específico.

Al final de este tutorial, podrá:

  • Utilice Python para realizar solicitudes API de datos históricos.
  • Formatee y procese datos JSON en un marco de datos.
  • Cree un gráfico de velas interactivo para análisis financiero utilizando Plotly.

Requisitos previos

Antes de comenzar, asegúrese de tener lo siguiente:

1. Conocimientos básicos de Python: Será útil estar familiarizado con la programación de Python, especialmente con las funciones y el manejo de errores.

2. Clave API TraderMade: Acceso a "https://tradermade.com/dashboard" para obtener una clave API. Regístrese en TraderMade para obtener una clave API gratuita, que utilizará en el tutorial.

3. Bibliotecas requeridas instaladas

solicitudes: Para instalar solicitudes, utilice el siguiente comando,

pip install requests

Esta biblioteca le permite realizar solicitudes HTTP a la API.

pandas: Para instalar pandas, utilice el siguiente comando,

pip install pandas

Pandas se utilizará para estructurar y manipular los datos de la API en formato tabular.

plotly: para instalar plotly, use el siguiente comando −

pip install plotly

Esta biblioteca ayuda a crear gráficos interactivos, específicamente un gráfico de velas, en este tutorial.

Ejemplo

Importar bibliotecas requeridas

Estas bibliotecas son esenciales:

  • solicitudes: para realizar solicitudes HTTP a la API TraderMade.
  • pandas: para estructurar y manipular los datos obtenidos de la API.
  • datetime: Para formato y conversión de fechas.
  • plotly.graph_objects: se utiliza para crear visualizaciones, específicamente un gráfico de velas.
import requests
import pandas as pd
from datetime import datetime
import plotly.graph_objects as go

Configuración de la clave API y la URL base

Para acceder a los datos, utilice su clave API TraderMade y la URL base para datos históricos. Asegúrese de reemplazar 'CLAVE' con su clave API real.

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

Definir parámetros

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

Definir una función de conversión de fecha

def convert_date_to_api_format(date_str):
    return datetime.strptime(date_str, '%d-%m-%Y').strftime('%Y-%m-%d')

Función de recuperación de datos históricos

Esta función recupera los datos de la 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

Obtener y mostrar datos

Utilice la función para obtener datos, asegurándose de que la estructura esté lista para trazar.

df = fetch_historical_data(symbol, start_date, end_date)

Verifique las columnas requeridas

Un gráfico de velas necesita columnas de "apertura", "alto", "bajo" y "cierre". Valide que estén presentes.

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}")

Crear y personalizar el gráfico de velas japonesas

Ahora que tienes los datos, puedes visualizarlos con 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()

Manejar errores

Si se produce un error durante los pasos anteriores, se detectará e imprimirá para ayudar a diagnosticar el problema.

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

Conclusión

Con esta configuración, puede modificar fácilmente el símbolo o el rango de fechas y visualizar datos históricos para varios pares de divisas utilizando la API TraderMade. Si aplica esto a proyectos más grandes, recuerde manejar las claves API de forma segura y revisar las limitaciones de uso de API en la documentación "https://tradermade.com/docs/restful-api".