ایزی ریت
ورود / ثبت‌نامورود

دیتای تاریخی قیمت دلار و طلا برای بک‌تست و تحلیل، دریافت کندل روزانه و ساعتی با API

دیتای تاریخی قیمت دلار و طلا با API: کندل OHLC روزانه و ساعتی، بازه و منطقهٔ زمانی، خروجی CSV و اکسل، بک‌تست ساده با پایتون و خطاهایی که تحلیل را خراب می‌کند.

تینا نجفی
· نویسنده مالی و اقتصادی
انتشار ۲۲ آبان ۱۴۰۵، ۱۶:۰۰ · بروزرسانی ۱۰:۲۷ · ۳ دقیقه مطالعه
نمودار مقایسه نوسان سالانه دلار، طلای ۱۸ عیار و سکه امامی
خلاصه در سه خط
  • مسیر `GET /history/{symbol}?interval=1d&from=&to=` کندل‌های باز، بیشترین، کمترین و بسته را برمی‌گرداند.
  • زمان کندل‌ها UTC است، برای تحلیل روزانه بازار ایران آن را به وقت تهران تبدیل کنید.
  • در بک‌تست، تعطیلی‌ها، روزهای کم‌منبع، اسپرد خرید و فروش و هزینه معامله را در نظر بگیرید.

تحلیلگر، پژوهشگر اقتصادی، معامله‌گری که استراتژی خود را آزمایش می‌کند یا حسابداری که نرخ تسعیر روزهای گذشته را لازم دارد، همه به یک چیز نیاز دارند: دیتای تاریخی قیمت دلار و طلا که قابل اتکا و ماشین‌خوان باشد. در این آموزش دریافت، ذخیره و استفاده درست از این داده را یاد می‌گیرید.

i
API ایزی‌ریت
این راهنما با API قیمت ارز و طلای ایزی‌ریت کار می‌کند؛ مستندات کامل، نمونه‌کد و کلید رایگان در صفحهٔ API است.
★
پاسخ کوتاه
GET https://api.ezrate.me/v1/history/usd?interval=1d&from=2026-01-01&to=2026-06-30 کندل‌های روزانهٔ دلار را برمی‌گرداند. هر کندل t (زمان)، o، h، l و c دارد. با interval=1h کندل ساعتی بگیرید. عمق تاریخچهٔ قابل دریافت به پلن شما بستگی دارد.

این آموزش بخشی از راهنمای کامل API قیمت ارز و طلا است. برای دیدن سریع تاریخچه بدون کد، صفحه آرشیو قیمت دلار، طلا و سکه را ببینید.

ساختار داده

فیلدمعنی
tزمان شروع کندل به UTC (ISO 8601)
oقیمت در شروع بازه
hبیشترین قیمت در بازه
lکمترین قیمت در بازه
cقیمت در پایان بازه
meta.interval، meta.market، meta.quoteبازه، بازار و واحد (IRT یا IRR)

قیمت کندل‌ها بر اساس نرخ فروش است. اگر به ریال نیاز دارید، quote=IRR بفرستید.

دریافت بازه‌های طولانی

برای بازه‌های طولانی با کندل ساعتی، درخواست را به تکه‌های ماهانه تقسیم کنید تا پاسخ‌ها کوچک بمانند و اگر یک درخواست خطا داد، فقط همان تکه را دوباره بگیرید:

python
import os, requests, pandas as pd
from datetime import date, timedelta

API, KEY = "https://api.ezrate.me/v1", os.environ["EZRATE_KEY"]

def history(symbol, start, end, interval="1d"):
    out, cur = [], start
    while cur <= end:
        nxt = min(cur + timedelta(days=30), end)
        r = requests.get(f"{API}/history/{symbol}",
                         params={"interval": interval, "from": cur.isoformat(), "to": nxt.isoformat()},
                         headers={"X-API-Key": KEY}, timeout=20)
        r.raise_for_status()
        out += r.json()["data"]
        cur = nxt + timedelta(days=1)
    df = pd.DataFrame(out).drop_duplicates("t")
    df["t"] = pd.to_datetime(df["t"], utc=True).dt.tz_convert("Asia/Tehran")
    return df.set_index("t").sort_index()

usd = history("usd", date(2026, 1, 1), date(2026, 9, 30))
usd.to_csv("usd_daily.csv")

خط تبدیل منطقه زمانی را حذف نکنید. روز در بازار ایران با وقت تهران تعریف می‌شود و اگر با UTC کار کنید، معاملات ساعت‌های اول صبح ممکن است در روز قبل حساب شوند.

نمودار کندل روزانه دلار ساخته‌شده از دیتای تاریخی
نمودار کندلی دلار از داده history

یک بک‌تست ساده: تقاطع میانگین متحرک

هدف این مثال نشان دادن روش است، نه پیشنهاد یک استراتژی. فرض: وقتی میانگین ۱۰ روزه از میانگین ۳۰ روزه بالاتر رفت، دلار بخرید و وقتی پایین آمد، بفروشید:

python
df = usd.copy()
df["fast"] = df["c"].rolling(10).mean()
df["slow"] = df["c"].rolling(30).mean()
df["pos"] = (df["fast"] > df["slow"]).astype(int).shift(1)   # تصمیم دیروز، اجرای امروز
df["ret"] = df["c"].pct_change()
SPREAD = 0.004                                               # هزینهٔ خرید و فروش (فرضی)
trades = df["pos"].diff().abs().fillna(0)
df["strategy"] = df["pos"] * df["ret"] - trades * SPREAD
print("بازده نگهداری:", round((1 + df["ret"]).prod() - 1, 4))
print("بازده استراتژی:", round((1 + df["strategy"].fillna(0)).prod() - 1, 4))

دو جزئیات این کد مهم‌اند: shift(1) تا تصمیم بر اساس اطلاعات روز قبل اجرا شود (بدون آن، نتیجه به‌طرز غیرواقعی خوب می‌شود)، و SPREAD تا هزینه واقعی خرید و فروش لحاظ شود.

خطاهایی که نتیجهٔ تحلیل را خراب می‌کنند

خطانتیجهپیشگیری
نگاه به آینده (Look-ahead)بازده غیرواقعیهمیشه با داده دیروز تصمیم بگیرید
نادیده گرفتن اسپرداستراتژی‌های پرمعامله سودده به نظر می‌رسندهزینه خرید و فروش را کم کنید
UTC به‌جای وقت تهرانجابه‌جایی مرز روزهاتبدیل منطقه زمانی
قاطی کردن ریال و تومانجهش ده‌برابری در دادهثبت quote همراه داده
روزهای تعطیل و کم‌منبعکندل‌های تخت یا پرش بعد از تعطیلیشناخت تقویم بازار، رجوع به ساعت کاری بازار ارز و طلا

کاربردهای غیرمعاملاتی

  • حسابداری: نرخ بسته هر روز برای تسعیر، رجوع به تسعیر ارز در حسابداری.
  • گزارش مدیریتی: نمودار ماهانه هزینه واردات بر اساس دلار.
  • پژوهش اقتصادی: همبستگی دلار، طلا و تتر در دوره‌های مختلف.
  • محتوا: نمودار تغییرات برای گزارش‌های رسانه‌ای، با ذکر منبع.

نمونه یک تحلیل ساده با دیتای تاریخی

فرض کنید می‌خواهید بدانید قیمت دلار در ماه‌های اخیر چقدر نوسان داشته است. کندل‌های روزانه را بگیرید، بازده لگاریتمی روزانه را حساب کنید و انحراف معیار آن را در ریشه تعداد روزهای معاملاتی سال ضرب کنید تا نوسان سالانه به دست آید. سپس همین کار را برای طلای ۱۸ عیار و سکه انجام دهید و سه عدد را کنار هم بگذارید. این مقایسه ساده به سرمایه‌گذار یا تحلیلگر نشان می‌دهد کدام دارایی در بازه مورد نظر پرریسک‌تر بوده است.

در گزارش نهایی حتما منبع داده، تاریخ دریافت، منطقه زمانی و نوع نرخ (سمت فروش، بازار تهران) را بنویسید تا نتیجه قابل تکرار و قابل دفاع باشد.

نمودار مقایسه نوسان سالانه دلار، طلای ۱۸ عیار و سکه امامی
نوسان سه دارایی در یک نگاه
دیتای تاریخی قیمت دلار از چه تاریخی در دسترس است؟
عمق تاریخچه به پلن بستگی دارد و در صفحه API اعلام شده است. برای مشاهده بدون کد، صفحه آرشیو سایت را ببینید.
کندل‌ها نرخ خریدند یا فروش؟
بر اساس نرخ فروش. برای تحلیل‌های حساس به اسپرد، هزینه خرید و فروش را جدا در نظر بگیرید.
می‌توانم داده را در اکسل باز کنم؟
بله؛ خروجی CSV کد بالا را مستقیم در اکسل باز کنید یا با Power Query بخوانید (آموزش اکسل).
دیتای تاریخی طلا و سکه هم هست؟
بله، برای همهٔ نمادها، مثلا history/g18 یا history/emami.
تینا نجفی
من در رشته مدیریت مالی تحصیل کرده‌ام و علاقه اصلی من به موضوعات مرتبط با بازار ارز، طلا، بانکداری و تجارت بین‌المللی است. در طول فعالیت حرفه‌ای خود، درباره موضوعات مالی و خدمات ارزی مطالعه و تحقیق کرده‌ام و تلاش می‌کنم مفاهیم پیچیده مالی را به شکل ساده و کاربردی توضیح دهم. در تهیه مطالب، سعی می‌کنم اطلاعات را از منابع معتبر بررسی کرده و محتوایی ارائه دهم که برای کاربران قابل فهم و قابل استفاده باشد.
همهٔ مطالب نویسنده ←

نظرات (۰)

نظرها پس از تأیید نمایش داده می‌شوند؛ برای ارسال، ورود به حساب لازم است.

مطالب مرتبط

API و برنامه‌نویسی
محاسبه حباب سکه با API؛ محاسبهٔ خودکار حباب سکه و طلا برای پلتفرم‌های تحلیلی
API و برنامه‌نویسی
امنیت API Key در فرانت‌اند؛ چرا کلید وب‌سرویس را در جاوااسکریپت و اپ نگذارید
API و برنامه‌نویسی
اپ قیمت ارز با فلاتر (Flutter)؛ از JSON تا رابط کاربری راست‌چین