自動売買ボット向けの無料経済指標カレンダーAPI
自動売買の戦略は、いずれ必ず同じ問いにぶつかります。この先30分以内にニュースはあるか、という問いです。答えるには機械が読める形の経済指標カレンダーが必要ですが、実はカレンダーそのものより、こちらのほうがずっと見つけにくいのです。大半はただのウェブページで、数少ないデータフィードも、取得回数の制限があるか、有料か、予告なく消えてしまいます。
このガイドは、その探索の記録を短くまとめたものです。そして最後にたどり着いた答え、つまりShowMyTradesが自分たちで作り、誰でも使えるように公開したエンドポイントを紹介します。
🗺️ いま使われているカレンダーの取得元
| 取得元 | 費用 | 得られるもの | 弱点 |
|---|---|---|---|
Forex Factoryの週次ファイル(ff_calendar_thisweek.json、XMLとCSVもあり) | 無料 | 今週分の予定、重要度、予想 | ダウンロードはIPアドレスごとに5分間で2回まで。多数のターミナルを動かすVPSでは上限に達する。ファイルに結果の値は入っていない |
ブローカーが配信するMT5のカレンダー(MQL5のCalendar*関数) | 無料 | ターミナル内の完全なカレンダー | MT5専用。配信していないブローカーもある |
| カレンダーサイトのスクレイピング | 使えなくなるまでは無料 | ページに表示されている情報すべて | レイアウトの変更、ボット対策、利用規約 |
| 有料の市場データAPI | 月額数十ドル〜 | 長期の履歴、多数の国 | 「30分以内にニュースはあるか」を知るだけには、機能も価格も過剰 |
| 個人運営の小規模なAPI | 無料枠あり(要キー) | 質は良いことが多い | 運営者が1人だけ。キーや制限が変わる |
どれも間違った選択ではありません。ただ、それぞれに止まり方があり、VPS上で無人で動くロボットは、政策金利発表の最中に取引してしまうまでそのことに気付けません。
🎯 ボットに本当に必要なもの
問いを突き詰めると、必要な条件はそれほど多くありません。
- 今後1〜2日分で十分です。1年先までは要りません。フィルターが見るのは数時間先です。
- サーバー側で絞り込み済みであること。ボットが取引する通貨と、気にする重要度の指標だけを受け取れれば、1メガバイトではなく数キロバイトで済みます。
- UTCのUnixタイムスタンプ。整数2つの比較なら、どのプラットフォームでもできます。MQLで日付を解析したい人はいません。
- 信頼できる時計。ロボット自身の時計は当てになりません。時差のわからないブローカー時間や、タイムゾーンのわからないVPSの時計だからです。カレンダー側がいまの時刻を教えてくれれば、ロボットは同じ基準で比較できます。
- 定期取得(ポーリング)を前提に作られていること。何百ものロボットが15分ごとに問い合わせても、乱用ではなく通常のトラフィックとして扱われるべきです。
- キーも会員登録も不要。キーがあると、漏えい対策、更新、サポートと、手間が1つ増えます。
- どのプラットフォームからでも届くこと。ネットワークへのアクセスを制限しているプラットフォームも含みます。
🔓 エンドポイント
GET https://showmytrades.com/api/public/calendar/v1?currency=EUR,USD&impact=high&days=1
| パラメーター | 値 | 既定値 |
|---|---|---|
currency | USD, EUR, GBP, JPY, AUD, NZD, CAD, CHF, CNYのいずれか(カンマ区切り) | 9通貨すべて |
impact | high、medium、low、holiday(カンマ区切り)、またはall | high |
days | 1〜30日先まで。期間は常に6時間前から始まる | 1 |
format | jsonまたはcsv | json |
各イベントには、ts(UTCのUnix秒)、time(ISO 8601)、currency、impact、title、forecast、previous、actualが入っています。さらに、日程が変わっても変わらない固定のid、status(scheduled、旧時刻をmoved_fromに持つmoved、tentative)、confidenceもあります。confidenceは、その日付が指標を公表する機関や中央銀行によって確認されたもの(official)か、複数のカレンダーの一致によるものかを示します。前回のダウンロード以降に日時が変わったイベントや中止されたイベントは、別の変更フィードで確認できます。どのレスポンスにも、現在のUTC時刻がserver_timeとして入っています。tsと比べるべきなのは、ブローカーやVPSの時計ではなくこの時刻です。時刻だけが必要なら、GET https://showmytrades.com/api/public/timeがそれだけを返します(キャッシュは一切されません)。レスポンスは15分間キャッシュされ、ETagが付きます。上限はIPアドレスごとに毎分600リクエストです。MQLのStringSplit()で分割を誤らないよう設計したCSVのレイアウトも含め、詳細はすべてリファレンスページにあります。
呼び出し例を3つの言語で紹介します。
curl "https://showmytrades.com/api/public/calendar/v1?currency=USD&impact=high,medium&days=7&format=csv"
import requests
events = requests.get(
"https://showmytrades.com/api/public/calendar/v1",
params={"currency": "EUR,USD", "impact": "high", "days": 2},
timeout=10,
).json()["events"]
next_release = min(events, key=lambda e: e["ts"]) if events else None
const res = await fetch('https://showmytrades.com/api/public/calendar/v1?currency=GBP&impact=high&days=1')
const { events } = await res.json()
const soon = events.filter(e => Math.abs(e.ts * 1000 - Date.now()) < 30 * 60 * 1000)
🔌 プラットフォーム別の使い方
| プラットフォーム | 方法 | コード |
|---|---|---|
| MetaTrader 4 | WebRequestを許可するURLのリストにhttps://showmytrades.comを追加し、WebRequest()を使う | インクルードファイル1つ(SMT_NewsFilter.mqh) |
| MetaTrader 5 | 同じインクルードファイル、または内蔵のカレンダー | 内蔵カレンダーかAPIか(両方のコードつき) |
| cTrader(デスクトップとクラウド) | ポート25345のWebSocket(cTrader CloudはcBotからのHTTPを遮断するため) | C#で書いた完全なcBot |
| Python、Node、HTTPが使えるもの全般 | 上記のエンドポイント | このページのコード例 |
| AIアシスタント(Claude、ChatGPT) | MCPサーバーのget_economic_calendarツール(キー不要) | 「今週、重要度の高いUSDのニュースは?」と聞く |
WebSocketを用意したのは、cTraderのためです。クラウド上のcBotはHTTPリクエストを一切送れず、しかもcTraderユーザーの多くはクラウドで動かしています。ソケットでも同じ4つのパラメーターを使い、同じCSVが返ってきます。
🧭 フィルターそのものの設計
APIが答えるのはいつかです。何をするかは戦略が決めます。よくある選択肢は次のとおりです。
- 停止する時間の幅:重要度の高い指標発表の前後30分が、一般的な初期設定です。スキャルパーは発表後を長めに取り、スイング系のシステムでは発表時刻の1分間だけエントリーを止めることもあります。
- 対象の通貨:取引する通貨ペアの両方の通貨です。ゴールドや株価指数は、たいてい
USDだけを見ます。 - 保有ポジション:新規エントリーを止めるのは簡単なほうです。発表前に決済したりストップを狭めたりするのは戦略上の判断で、それ自体にもコストがかかります。
- 失敗したときの動き:ダウンロードに失敗してカレンダーがないとき、ボットは取引を続けるのか、待つのか。はっきり決めておいてください。サンプルコードは取引を続ける作りで、そのことを明記しています。
⚖️ このAPIにできないこと
これは公開されているカレンダー情報をまとめ、手を加えずに提供している予定表です。指標の発表が延期や中止になることもありますし、予告のない発表は当然ながら載りません。重要度はあくまで分類で、値動きの予測ではありません。フィルターを作るための情報であって、売買シグナルではありません。
❓ よくある質問
本当に無料ですか?商用のロボットでも?
はい。キーも、会員登録も、料金プランの区分もありません。経済指標カレンダーのページへのリンク付きでEconomic calendar by ShowMyTradesという出典表記を入れていただけるとうれしいですが、必須ではありません。
どのくらいの頻度で呼び出せばよいですか?
15分ごとです。それがキャッシュの有効期間で、カレンダーもそれより速くは変わりません。If-None-Matchを使えば、カレンダーに変化がないときのコストはゼロです。
時刻はどのタイムゾーンですか?
常にUTCです。tsは秒単位のUnix時間、timeは同じ時刻をZ付きのISO 8601で表したものです。また、ロボットは自分がいま何時なのかを正確に知らないことがほとんどです(時差のわからないブローカー時間、タイムゾーンのわからないVPS)。そのため、どのレスポンスにも現在のUTC時刻であるserver_timeが入っています。ダウンロードのたびに自分の時計とのずれを1回計算すれば、曖昧さはなくなります。
ニュースフィルターのバックテスト用に、過去のデータは取得できますか?
このエンドポイントでは取得できません。取得できる範囲は6時間前から最大30日先までです。バックテスト用の過去のカレンダーは、条件の異なる別の製品になります。
データの取得元はどこですか?
公開されている経済指標カレンダーの情報源を、ShowMyTradesが統合・正規化したものです。このサイトの経済指標カレンダーのページも、同じデータで動いています。
🔗 関連ページ
- 経済指標カレンダーAPIリファレンス
- MT4のEAにニュースフィルターを組み込む方法
- MT5のニュースフィルター:内蔵カレンダーとAPI、どちらを使う?
- cTrader cBotにニュースフィルターを組み込む方法
ニュースの前後で手を止められるロボットなら、その運用実績も堂々と見せられます。無料で連携すれば、ニュース前後の静かな30分間が、ドローダウンのチャートにもはっきり表れます。