كيفية تحليل البيانات الكبيرة باستخدام R banner image

By Language

Quick Start Guides

كيفية تحليل البيانات الكبيرة باستخدام R

دليل عملي لاسترداد وتنظيف وتصور سلسلة زمنية مؤشرات FXMacroData في R باستخدام httr2، jsonlite، و ggplot2 من دعوة API إلى مخطط جاهز للنشر في أقل من 50 سطر من الشفرة.

متوفر أيضًا في English

R هي واحدة من أقوى لغات التحليل الإحصائي والنمذجة المالية ولديها نظام بيئي ناضج للعمل مع بيانات السلسلة الزمنية. هذا الدليل يمر من خلال كل ما تحتاجه لاسترداد وتنظيف وتحليل سلسلة مؤشرات FXMacroData في R، باستخدام httr2 و جسونليت بحلول النهاية سيكون لديك سير عمل R قابلة لإعادة الاستخدام التي تسحب بيانات البنك المركزي، وبناء تيبل مرتب، وإنتاج مخطط جاهز للنشر كل ذلك في أقل من 50 سطر من الشفرة.

ما الذي ستبنيه

برنامج R القابل للتكرار بالكامل الذي يقوم بالتحقق من صحة الفوركس ماكروداتا REST API، ويستعيد سعر السياسة وتسلسلات التضخم الزمنية للعديد من العملات، ويضمها إلى تيبل واحد، ويرسمها مع ggplot2 جاهزًا لإدراجها في تقرير Quarto أو R Markdown.

الشروط المسبقة

  • R ≥ 4.2 و RStudio (أو أي بيئة R)
  • الحزم التالية: httr2- لا jsonlite- لا dplyr- لا tidyr- لا lubridate- لا ggplot2
  • مفتاح FXMacroData API تسجيل في / اشترك للحصول على واحدة

قم بتثبيت الحزم المطلوبة مرة واحدة إذا لم تكن لديك بالفعل:

install.packages(c("httr2", "jsonlite", "dplyr", "tidyr", "lubridate", "ggplot2"))

الخطوة 1 فهم شكل API

كل نقطة نهاية مؤشر FXMacroData تتبع نمط URL نفسه:

GET https://fxmacrodata.com/api/v1/announcements/{currency}/{indicator}?api_key=YOUR_API_KEY

الرد هو كائن JSON مع data صفوف حيث كل عنصر لديه date و val الميدان (وإختيارياً announcement_datetime على سبيل المثال، الحصول على سعر الفائدة السياسية للاحتياطي الفيدرالي الأمريكي:

curl "https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2022-01-01"
{
  "data": [
    { "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
    { "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
    { "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
  ]
}

هذا الهيكل النظيف يُرسّم بشكل مثالي إلى إطار بيانات R مع الحد الأدنى من التحويل.

الخطوة 2 إعداد مفتاح API الخاص بك

تخزين مفتاح API الخاص بك في متغير البيئة بدلا من تشفيرها في البرامج النصية. أضف هذا السطر إلى ~/.Renviron الملف:

FXMD_API_KEY=your_actual_api_key_here

ثم إعادة تحميل البيئة واسترداد المفتاح في أعلى كل نص:

readRenviron("~/.Renviron")
API_KEY <- Sys.getenv("FXMD_API_KEY")
if (nchar(API_KEY) == 0) stop("FXMD_API_KEY is not set in .Renviron")

نصيحة أمنية

لا تلتزم أبداً بمفاتيح واجهة برمجة التطبيقات إلى مراقبة الإصدارات. .Renviron إلى .gitignore إذا كنت تحتفظ به في دليل المشروع. لتنفيذات قابلة للتكرار، استخدم مدير أسرار أو متغير بيئة CI.

الخطوة 3 اكتب مساعدة عامة للحصول

مع httr2 يمكنك إنشاء الطلبات بشكل إعلاني ، ومعالجة الأخطاء بشكل صريح ، وتفكيك JSON في خط أنابيب واحد. الوظيفة أدناه تغلف جميع الخطوات الثلاث في مساعد واحد قابل لإعادة الاستخدام:

library(httr2)
library(jsonlite)
library(dplyr)
library(lubridate)

BASE_URL <- "https://fxmacrodata.com/api/v1"

#' Fetch an indicator time series from FXMacroData
#'
#' @param currency  Three-letter currency code, e.g. "usd", "eur", "gbp"
#' @param indicator Indicator slug, e.g. "policy_rate", "inflation", "gdp"
#' @param start     Optional start date as "YYYY-MM-DD" string
#' @param end       Optional end date as "YYYY-MM-DD" string
#' @return A tibble with columns: date (Date), val (numeric), currency (chr), indicator (chr)
fetch_indicator <- function(currency, indicator, start = NULL, end = NULL) {
  req <- request(BASE_URL) |>
    req_url_path_append("announcements", currency, indicator) |>
    req_url_query(api_key = API_KEY) |>
    req_error(is_error = \(resp) resp_status(resp) >= 400)

  if (!is.null(start)) req <- req |> req_url_query(start = start)
  if (!is.null(end))   req <- req |> req_url_query(end   = end)

  resp <- req |> req_perform()
  rows <- resp |> resp_body_json(simplifyVector = TRUE)

  as_tibble(rows$data) |>
    mutate(
      date      = as_date(date),
      val       = as.numeric(val),
      currency  = toupper(currency),
      indicator = indicator
    )
}

الخيارات الرئيسية هنا: req_error() يضمن أن ردود HTTP 4xx/5xx ترمي شرط R بدلاً من إرجاع البيانات السيئة بصمت resp_body_json(simplifyVector = TRUE) يجبر المصفوفات المتداخلة مباشرة إلى إطار بيانات بدلاً من قائمة as_date() من التشحيم يعطيك مناسبة Date العمود فوراً

الخطوة 4 احصل على عملات ومؤشرات متعددة

الآن استخدم المساعد لسحب أسعار السياسة لأربع عملات من دول مجموعة الأربعة على مدى نافذة ثلاث سنوات بالضبط النوع من المقارنة متعددة العملات التي تدفع قرارات التداول التباين:

currencies <- c("usd", "eur", "gbp", "jpy")
START      <- "2022-01-01"

# Pull policy rates for all four currencies and stack into one tibble
policy_rates <- purrr::map_dfr(
  currencies,
  \(ccy) fetch_indicator(ccy, "policy_rate", start = START)
)

# Quick check
dplyr::glimpse(policy_rates)
#> Rows: ~80
#> Columns: date <date>, val <dbl>, currency <chr>, indicator <chr>

يمكنك الحصول على مؤشرات إضافية بنفس السهولة. على سبيل المثال، سحب التضخم الرئيسي جنبا إلى جنب مع أسعار الفائدة السياسية يسمح لك لحساب فروق الفائدت الحقيقية، وهو محرك رئيسي لموقع التجارة حمل:

inflation <- purrr::map_dfr(
  currencies,
  \(ccy) fetch_indicator(ccy, "inflation", start = START)
)

# Combine into one tidy frame
macro_data <- bind_rows(policy_rates, inflation)

مؤشرات يمكنك الحصول عليها

الكتالوج الكامل متاح على fxmacrodata.com/api-data-docsوتشمل السلسلة الرئيسية لتحليل العملات الأجنبية سعر السياسة- لا التضخم- لا الناتج المحلي الإجمالي- لا البطالةو pmiكل سلسلة تستخدم نفس نمط البحث فقط تغيير العملة والعلامة.

الخطوة 5 تنظيف وإعادة تشكيل البيانات

في معظم التحليلات تريد البيانات واسعة شكل عمود واحد لكل مؤشر لكل عملة بدلا من شكل مرتب المكدس الذي تعيده API. pivot_wider() المكالمة تتعامل مع هذا في خطوة واحدة، و fill() يُحاول إعادة تعبئة ملاحظات البنك المركزي المتناقصة في الشبكة الشهرية العادية:

library(tidyr)

# Build a regular monthly date spine
date_spine <- tibble(date = seq.Date(as_date(START), Sys.Date(), by = "month"))

# Pivot to wide: one row per date, columns = currency_indicator
wide_data <- macro_data |>
  # Use year-month as join key so quarterly data aligns to month boundaries
  mutate(date = floor_date(date, "month")) |>
  pivot_wider(
    names_from  = c(currency, indicator),
    values_from = val,
    values_fn   = \(x) last(x)   # take latest reading within each month
  )

# Left-join onto the date spine and forward-fill sparse series
full_data <- date_spine |>
  left_join(wide_data, by = "date") |>
  fill(everything(), .direction = "down")

head(full_data)

الخطوة 6 حساب فروق أسعار الفائدة الحقيقية

يعد فروق سعر الفائدة الحقيقي هو سعر السعر السياسي ناقص التضخم الفارق الإيجابي يعني أن البنك المركزي في منطقة مقيدة بالنسبة لنمو أسعار المستهلك. تعد فروق أسعار الفائدات الحقيقية EURUSD من بين أقوى مؤشرات الاتجاه المتوسط لزوج اليورو/الدولار:

spread_data <- full_data |>
  mutate(
    real_rate_usd = USD_policy_rate - USD_inflation,
    real_rate_eur = EUR_policy_rate - EUR_inflation,
    real_rate_gbp = GBP_policy_rate - GBP_inflation,
    real_rate_jpy = JPY_policy_rate - JPY_inflation,
    # EUR minus USD spread: positive = EUR relatively less restrictive
    eur_usd_spread = real_rate_eur - real_rate_usd
  )

الخطوة 7 تصور مع ggplot2

مع استعداد التبلب المنظّم، يحتوي الرسم البياني متعدد السلاسل ggplot2 على بضع أسطر. colour الجمالية:

library(ggplot2)

policy_rates |>
  ggplot(aes(x = date, y = val, colour = currency)) +
  geom_step(linewidth = 0.9) +
  scale_colour_manual(
    values = c(USD = "#2563eb", EUR = "#16a34a", GBP = "#7c3aed", JPY = "#dc2626")
  ) +
  scale_y_continuous(labels = scales::label_percent(scale = 1)) +
  labs(
    title   = "G4 Central Bank Policy Rates",
    x       = NULL,
    y       = "Policy rate (%)",
    colour  = "Currency",
    caption = "Source: FXMacroData"
  ) +
  theme_minimal(base_size = 13) +
  theme(legend.position = "bottom")

استخدم geom_step() بدلاً من geom_line() بالنسبة لسلسلة أسعار العملة قرارات البنك المركزي هي تغييرات متفرقة في الدرج ويتم تمثيل ذلك بشكل صحيح في مخطط خطوة.

الخطوة 8 التصدير لتقرير

إذا كنت تضع هذا الرسم البياني في وثيقة Quarto أو R Markdown ، فقم بحفظ إطار البيانات إلى CSV للإنتاج والمسار إلى PNG عالي الدقة للتصوير في الخط:

readr::write_csv(spread_data, "macro_spread_data.csv")

ggsave(
  filename = "policy_rates.png",
  width    = 10,
  height   = 5.6,
  dpi      = 150
)

بالنسبة لوحة التحكم التفاعلية الشمعة، نفس القرص يغذى مباشرة إلى plotly::ggplotly() للتفاعل بدون اصطدام

الخطوة 9 أتمتة مع النص المجدول

للحفاظ على تحليلك الحالي دون إعادة تشغيل يدوي، لف منطق الاستلام في برنامج R مستقلة وخطط لها مع cronR (لينكس/ماكوس) أو جدولة مهام ويندوز:

# file: refresh_macro.R — run daily at 08:00 UTC
readRenviron("~/.Renviron")
source("fetch_helpers.R")

macro_data <- purrr::map_dfr(
  tidyr::crossing(
    currency  = c("usd", "eur", "gbp", "jpy"),
    indicator = c("policy_rate", "inflation", "unemployment")
  ),
  \(row) fetch_indicator(row$currency, row$indicator, start = "2020-01-01")
)

readr::write_csv(macro_data, paste0("data/macro_", Sys.Date(), ".csv"))
message("Refresh complete: ", nrow(macro_data), " observations written.")

إضافة هذا مع نقطة نهاية تقويم الإصدار لتفعيل التحديثات فقط في الأيام التي يتوقع فيها بيانات ذات تأثير كبير، مما يوفر المكالمات غير الضرورية لـ API في الأيّام الهادئة.

مثال عمل كامل

كل المقتطفات أعلاه تجمع في نص واحد ~ 60 سطر. FXMD_API_KEY في .Renviron، تشغيل الملف، ولديك مجموعة بيانات ماكرو قابلة للتحديث بالكامل جاهزة للنمذجة في R.

ملخص

لقد تعلمت كيف:

  • التحقق من هويتك بأمان مع FXMacroData باستخدام متغير البيئة
  • بناء إعادة الاستخدام fetch_indicator() مساعد مع httr2 و جسونليت
  • سحب وتكديس سلسلة مؤشرات متعددة العملات مع purrr::map_dfr()
  • إعادة تشكيل، ملء للأمام، وحساب انتشار مشتق مع دبلير و طيّر
  • إنتاج مخططات خطوة جاهزة للنشر ggplot2
  • أوتوماتيكية التحديثات اليومية مع رسم خطي R المجدولة

كخطوة أخرى، استكشاف الناتج المحلي الإجمالي- لا مؤشر مؤشر الأسهمو ميزان التجارة النقاط النهائية لبناء بطاقة درجات الكلي أكثر اكتمالا في جميع عملات مجموعة العشرة. ينطبق نفس مساعد البحث وتدفق عمل ggplot2 دون تغيير فقط يجب تغيير خادمة المؤشر.

AI Answer-Ready

Key Facts

Page
How To Macro Data R Analysis
Section
Articles
Canonical URL
https://fxmacrodata.com/articles/how-to-macro-data-r-analysis
Source
FXMacroData editorial and official publisher references
Last Updated
2026-04-22 12:36 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains How To Macro Data R Analysis with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.

Blogroll